Diffusers documentation
SanaControlNetModel
SanaControlNetModel
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 một khung xương mạnh mẽ để 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 các 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 việc 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.
Mô hình này được đóng góp bởi ishan24. ❤️ Mã nguồn gốc có thể được tìm thấy tại NVlabs/Sana, và bạn có thể tìm thấy các checkpoint ControlNet chính thức trên hồ sơ Hub của Efficient-Large-Model.
SanaControlNetModel
lớp diffusers.SanaControlNetModel
< source >( in_channels: int = 32out_channels: int | None = 32num_attention_heads: int = 70attention_head_dim: int = 32num_layers: int = 7num_cross_attention_heads: int | None = 20cross_attention_head_dim: int | None = 112cross_attention_dim: int | None = 2240caption_channels: int = 2304mlp_ratio: float = 2.5dropout: float = 0.0attention_bias: bool = Falsesample_size: int = 32patch_size: int = 1norm_elementwise_affine: bool = Falsenorm_eps: float = 1e-06interpolation_scale: int | None = None )
forward
< source >( hidden_states: Tensorencoder_hidden_states: Tensortimestep: LongTensorcontrolnet_cond: Tensorconditioning_scale: float = 1.0encoder_attention_mask: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneattention_kwargs: dict[str, typing.Any] | None = Nonereturn_dict: bool = True ) → ~models.transformer_2d.Transformer2DModelOutput or tuple
Tham số
- hidden_states (
torch.Tensorcó hình dạng(batch_size, channel, height, width)) —hidden_statesđầu vào. - encoder_hidden_states (
torch.Tensor) — Các embedding điều kiện (embedding được tính từ các điều kiện đầu vào như prompt) cần sử dụng. - timestep (
torch.LongTensor) — Dùng để chỉ bước khử nhiễu. - controlnet_cond (
torch.Tensor) — Tensor đầu vào có điều kiện cho ControlNet. - conditioning_scale (
float, tùy chọn, mặc định là1.0) — Hệ số tỷ lệ cho đầu ra của ControlNet. - encoder_attention_mask (
torch.Tensor, tùy chọn) — Mặt nạ chú ý được áp dụng choencoder_hidden_states. - attention_mask (
torch.Tensor, tùy chọn) — Mặt nạ chú ý (attention mask) được áp dụng chohidden_states. - attention_kwargs (
dict, tùy chọn) — Một từ điển kwargs, nếu được chỉ định, sẽ được truyền đếnAttentionProcessornhư đã định nghĩa dướiself.processortrong 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.Transformer2DModelOutputthay vì một tuple thông thường hay không.
Trả về
~models.transformer_2d.Transformer2DModelOutput hoặc tuple
Nếu return_dict là True, một ~models.transformer_2d.Transformer2DModelOutput sẽ được trả về, ngược lại
một tuple thông thường sẽ được trả về.
SanaControlNetOutput
lớp diffusers.models.controlnets.controlnet_sana.SanaControlNetOutput
< source >( controlnet_block_samples: tuple[torch.Tensor] )