Buckets:

hf-doc-build/doc / diffusers /main /vi /api /models /controlnet_sd3.md
mishig's picture
|
download
raw
10.6 kB

SD3ControlNetModel

SD3ControlNetModel là một triển khai của ControlNet cho Stable Diffusion 3.

Mô hình ControlNet được giới thiệu trong Adding Conditional Control to Text-to-Image Diffusion Models bởi Lvmin Zhang, Anyi Rao, Maneesh Agrawala. Nó cung cấp mức độ kiểm soát cao hơn đối với việc tạo ảnh từ văn bản bằng cách điều kiện hóa mô hình dựa trên các đầu vào bổ sung như bản đồ cạnh, bản đồ độ sâu, bản đồ phân đoạn và các điểm chính cho phát hiện tư thế.

Tóm tắt từ bài báo là:

Chúng tôi giới thiệu ControlNet, một kiến trúc mạng nơ-ron để thêm các điều khiển điều kiện không gian vào các mô hình khuếch tán từ văn bản sang ảnh lớn, được huấn luyện trước. ControlNet khóa các mô hình khuếch tán lớn sẵn sàng cho sản xuất, và tái sử dụng các lớp mã hóa sâu và mạnh mẽ của chúng, được huấn luyện trước với hàng tỷ hình ảnh, làm xương sống vững chắc để học một tập hợp đa dạng các điều khiển có điều kiện. Kiến trúc mạng nơ-ron được kết nối bằng các "cuộn không" (các lớp tích chập khởi tạo bằng không) giúp tăng dần số tham số từ không và đảm bảo rằng không có nhiễu có hại nào có thể ảnh hưởng đến quá trình tinh chỉnh. Chúng tôi kiểm tra các điều khiển điều kiện khác nhau, ví dụ như cạnh, độ sâu, phân đoạn, tư thế con người, v.v., với Stable Diffusion, sử dụng một hoặc nhiều điều kiện, có hoặc không có lời nhắc. Chúng tôi cho thấy rằng việc huấn luyện ControlNet là mạnh mẽ với các bộ dữ liệu nhỏ (<50k) và lớn (>1m). Các kết quả mở rộng cho thấy ControlNet có thể thúc đẩy các ứng dụng rộng hơn để kiểm soát các mô hình khuếch tán ảnh.

Tải từ định dạng gốc

Mặc định, SD3ControlNetModel nên được tải bằng from_pretrained().

from diffusers import StableDiffusion3ControlNetPipeline
from diffusers.models import SD3ControlNetModel, SD3MultiControlNetModel

controlnet = SD3ControlNetModel.from_pretrained("InstantX/SD3-Controlnet-Canny")
pipe = StableDiffusion3ControlNetPipeline.from_pretrained("stabilityai/stable-diffusion-3-medium-diffusers", controlnet=controlnet)

SD3ControlNetModel[[diffusers.SD3ControlNetModel]]

diffusers.SD3ControlNetModel[[diffusers.SD3ControlNetModel]]

diffusers.SD3ControlNetModel(sample_size: int = 128, patch_size: int = 2, in_channels: int = 16, num_layers: int = 18, attention_head_dim: int = 64, num_attention_heads: int = 18, joint_attention_dim: int = 4096, caption_projection_dim: int = 1152, pooled_projection_dim: int = 2048, out_channels: int = 16, pos_embed_max_size: int = 96, extra_conditioning_channels: int = 0, dual_attention_layers: tuple[int, ...] = (), qk_norm: str | None = None, pos_embed_type: str | None = 'sincos', use_pos_embed: bool = True, force_zeros_for_pooled_projection: bool = True)

Nguồn

Tham số:

sample_size (int, mặc định là 128) : Độ rộng/chiều cao của các latents. Giá trị này được cố định trong quá trình huấn luyện vì nó được dùng để học một số lượng các position embeddings.

patch_size (int, mặc định là 2) : Kích thước patch để chuyển dữ liệu đầu vào thành các patch nhỏ.

in_channels (int, mặc định là 16) : Số lượng kênh tiềm ẩn trong đầu vào.

num_layers (int, mặc định là 18) : Số lượng lớp khối transformer cần sử dụng.

attention_head_dim (int, mặc định là 64) : Số lượng kênh trong mỗi head.

num_attention_heads (int, mặc định là 18) : Số lượng đầu được sử dụng cho chú ý đa đầu (multi-head attention).

joint_attention_dim (int, mặc định là 4096) : Kích thước embedding cần sử dụng cho chú ý kết hợp văn bản-hình ảnh.

caption_projection_dim (int, mặc định là 1152) : Kích thước embedding của các embedding mô tả.

pooled_projection_dim (int, mặc định là 2048) : Kích thước embedding của các phép chiếu văn bản đã được pool.

out_channels (int, mặc định là 16) : Số lượng kênh tiềm ẩn trong đầu ra.

pos_embed_max_size (int, mặc định là 96) : Chiều cao/chiều rộng tiềm ẩn tối đa của các nhúng vị trí.

extra_conditioning_channels (int, mặc định là 0) : Số lượng kênh bổ sung được sử dụng cho điều kiện (conditioning) trong patch embedding.

dual_attention_layers (tuple[int, ...], mặc định là ()) : Số lượng khối transformer dual-stream cần sử dụng.

qk_norm (str, tùy chọn, mặc định là None) : Phương pháp chuẩn hóa được sử dụng cho query và key trong lớp attention. Nếu là None, sẽ không sử dụng chuẩn hóa.

pos_embed_type (str, mặc định là "sincos") : Loại nhúng vị trí cần sử dụng. Chọn giữa "sincos" và None.

use_pos_embed (bool, mặc định là True) : Có sử dụng nhúng vị trí (positional embeddings) hay không.

force_zeros_for_pooled_projection (bool, mặc định là True) : Có nên ép các embedding của pooled projection bằng 0 hay không. Điều này được xử lý trong các pipeline bằng cách đọc giá trị config của mô hình ControlNet.

Mô hình ControlNet cho Stable Diffusion 3.

enable_forward_chunking[[diffusers.SD3ControlNetModel.enable_forward_chunking]]

enable_forward_chunking(chunk_size: int | None = None, dim: int = 0)

Nguồn

Tham số:

chunk_size (int, optional) : Kích thước chunk của các lớp feed-forward. Nếu không được chỉ định, lớp feed-forward sẽ được thực hiện riêng lẻ trên mỗi tensor có dim=dim.

dim (int, optional, mặc định là 0) : Chiều mà phép tính feed-forward nên được chia nhỏ. Chọn giữa dim=0 (batch) hoặc dim=1 (chiều dài chuỗi).

Đặt bộ xử lý chú ý để sử dụng chia nhỏ feed forward.

forward[[diffusers.SD3ControlNetModel.forward]]

forward(hidden_states: Tensor, controlnet_cond: Tensor, conditioning_scale: float = 1.0, encoder_hidden_states: Tensor = None, pooled_projections: Tensor = None, timestep: LongTensor = None, joint_attention_kwargs: dict[str, typing.Any] | None = None, return_dict: bool = True)

Nguồn

Tham số:

hidden_states (torch.Tensor có hình dạng (batch size, channel, height, width)) : hidden_states đầu vào.

controlnet_cond (torch.Tensor) : Tensor đầu vào có điều kiện với hình dạng (batch_size, sequence_length, hidden_size).

conditioning_scale (float, mặc định là 1.0) : Hệ số tỷ lệ cho đầu ra của ControlNet.

encoder_hidden_states (torch.Tensor có shape (batch size, sequence_len, embed_dims)) : Các embeddings điều kiện (embeddings được tính từ các điều kiện đầu vào như prompts) cần sử dụng.

pooled_projections (torch.Tensor có hình dạng (batch_size, projection_dim)) : Các embedding được chiếu từ các embedding của các điều kiện đầu vào.

timestep ( torch.LongTensor) : Dùng để chỉ bước khử nhiễu.

joint_attention_kwargs (dict, tùy chọn) : Một từ điển kwargs mà nếu được chỉ định sẽ được truyền đến AttentionProcessor như đã định nghĩa dưới self.processor trong diffusers.models.attention_processor.

return_dict (bool, tùy chọn, mặc định là True) : Có nên trả về một ~models.transformer_2d.Transformer2DModelOutput thay vì một tuple thông thường hay không.

Trả về:

Nếu return_dict là True, một ~models.transformer_2d.Transformer2DModelOutput sẽ được trả về, ngược lại một tuple trong đó phần tử đầu tiên là tensor mẫu.

Phương thức forward của SD3Transformer2DModel.

fuse_qkv_projections[[diffusers.SD3ControlNetModel.fuse_qkv_projections]]

fuse_qkv_projections()

Nguồn

Bật các phép chiếu QKV đã hợp nhất. Đối với các module tự chú ý, tất cả các ma trận chiếu (tức là truy vấn, khóa, giá trị) đều được hợp nhất. Đối với các module chú ý chéo, các ma trận chiếu khóa và giá trị được hợp nhất.

> API này 🧪 đang ở giai đoạn thử nghiệm.

unfuse_qkv_projections[[diffusers.SD3ControlNetModel.unfuse_qkv_projections]]

unfuse_qkv_projections()

Nguồn

Tắt dự phóng QKV hợp nhất nếu đã được bật.

> API này 🧪 đang ở giai đoạn thử nghiệm.

SD3ControlNetOutput[[diffusers.models.controlnets.SD3ControlNetOutput]]

diffusers.models.controlnets.SD3ControlNetOutput[[diffusers.models.controlnets.SD3ControlNetOutput]]

diffusers.models.controlnets.SD3ControlNetOutput(controlnet_block_samples: tuple[torch.Tensor])

Nguồn

Xet Storage Details

Size:
10.6 kB
·
Xet hash:
7afe65dc9c282718f2303951a6563e0d77b1a2e44c4a6e2e9c27bc21369f2369

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.