Buckets:

hf-doc-build/doc / diffusers /v0.43.0 /id /api /models /controlnet_sd3.md
mishig's picture
|
download
raw
9.26 kB

SD3ControlNetModel

SD3ControlNetModel adalah implementasi ControlNet untuk Stable Diffusion 3.

Model ControlNet diperkenalkan dalam Adding Conditional Control to Text-to-Image Diffusion Models oleh Lvmin Zhang, Anyi Rao, Maneesh Agrawala. Model ini memberikan tingkat kendali yang lebih besar terhadap generasi teks-ke-gambar dengan mengondisikan model pada input tambahan seperti peta tepi, peta kedalaman, peta segmentasi, dan titik kunci untuk deteksi pose.

Abstrak dari makalah tersebut adalah:

Kami memperkenalkan ControlNet, sebuah arsitektur jaringan saraf untuk menambahkan kontrol kondisional spasial ke model difusi teks-ke-gambar besar yang telah dilatih sebelumnya. ControlNet mengunci model difusi besar yang siap produksi, dan memanfaatkan ulang lapisan enkoding yang dalam dan robust yang telah dilatih sebelumnya dengan miliaran gambar sebagai tulang punggung yang kuat untuk mempelajari berbagai set kontrol kondisional. Arsitektur saraf ini terhubung dengan "zero convolutions" (lapisan konvolusi yang diinisialisasi nol) yang secara bertahap meningkatkan parameter dari nol dan memastikan bahwa tidak ada noise berbahaya yang dapat memengaruhi finetuning. Kami menguji berbagai kontrol kondisional, misalnya, tepi, kedalaman, segmentasi, pose manusia, dll., dengan Stable Diffusion, menggunakan satu atau beberapa kondisi, dengan atau tanpa prompt. Kami menunjukkan bahwa pelatihan ControlNet bersifat robust dengan dataset kecil (<50k) dan besar (>1m). Hasil ekstensif menunjukkan bahwa ControlNet dapat memfasilitasi aplikasi yang lebih luas untuk mengontrol model difusi gambar.

Memuat dari format asli

Secara default, SD3ControlNetModel harus dimuat dengan 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)

Sumber

Parameter:

sample_size (int, defaultnya 128) : Lebar/tinggi dari latents. Ini tetap selama pelatihan karena digunakan untuk mempelajari sejumlah position embeddings.

patch_size (int, defaultnya 2) : Ukuran patch untuk mengubah data input menjadi patch kecil.

in_channels (int, defaultnya 16) : Jumlah kanal laten pada input.

num_layers (int, defaultnya 18) : Jumlah lapisan blok transformer yang akan digunakan.

attention_head_dim (int, defaultnya 64) : Jumlah channel di setiap head.

num_attention_heads (int, defaultnya 18) : Jumlah kepala yang digunakan untuk multi-head attention.

joint_attention_dim (int, defaultnya 4096) : Dimensi embedding yang digunakan untuk perhatian gabungan teks-gambar.

caption_projection_dim (int, defaultnya 1152) : Dimensi embedding dari caption embeddings.

pooled_projection_dim (int, defaultnya 2048) : Dimensi embedding dari proyeksi teks yang dipooling.

out_channels (int, defaultnya 16) : Jumlah kanal laten dalam output.

pos_embed_max_size (int, defaultnya 96) : Tinggi/lebar maksimum laten dari positional embeddings.

extra_conditioning_channels (int, defaultnya 0) : Jumlah channel tambahan yang digunakan untuk conditioning pada patch embedding.

dual_attention_layers (tuple[int, ...], defaultnya ()) : Jumlah blok transformer dual-stream yang akan digunakan.

qk_norm (str, opsional, defaultnya None) : Normalisasi yang digunakan untuk query dan key di lapisan perhatian. Jika None, normalisasi tidak digunakan.

pos_embed_type (str, defaultnya "sincos") : Jenis positional embedding yang akan digunakan. Pilih antara "sincos" dan None.

use_pos_embed (bool, defaultnya True) : Apakah akan menggunakan positional embeddings.

force_zeros_for_pooled_projection (bool, defaultnya True) : Apakah akan memaksa nol untuk embedding proyeksi yang dipooling. Hal ini ditangani di pipeline dengan membaca nilai konfigurasi dari model ControlNet.

Model ControlNet untuk Stable Diffusion 3.

enable_forward_chunking[[diffusers.SD3ControlNetModel.enable_forward_chunking]]

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

Sumber

Parameter:

chunk_size (int, opsional) : Ukuran chunk dari lapisan feed-forward. Jika tidak ditentukan, lapisan feed-forward akan dijalankan secara individual untuk setiap tensor dengan dim=dim.

dim (int, opsional, defaultnya 0) : Dimensi di mana komputasi feed-forward harus di-chunk. Pilih antara dim=0 (batch) atau dim=1 (panjang sekuens).

Menetapkan prosesor perhatian untuk menggunakan feed forward chunking.

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)

Sumber

Parameter:

hidden_states (torch.Tensor dengan bentuk (batch size, channel, height, width)) : Input hidden_states.

controlnet_cond (torch.Tensor) : Tensor input kondisional dengan bentuk (batch_size, sequence_length, hidden_size).

conditioning_scale (float, defaultnya 1.0) : Faktor skala untuk output ControlNet.

encoder_hidden_states (torch.Tensor dengan bentuk (batch size, sequence_len, embed_dims)) : Embedding kondisional (embedding yang dihitung dari kondisi input seperti prompt) yang akan digunakan.

pooled_projections (torch.Tensor dengan bentuk (batch_size, projection_dim)) : Embeddings yang diproyeksikan dari embeddings kondisi input.

timestep ( torch.LongTensor) : Digunakan untuk menunjukkan langkah denoising.

joint_attention_kwargs (dict, opsional) : Kamus kwargs yang jika ditentukan akan diteruskan ke AttentionProcessor seperti yang didefinisikan di bawah self.processor dalam diffusers.models.attention_processor.

return_dict (bool, opsional, defaultnya True) : Apakah akan mengembalikan ~models.transformer_2d.Transformer2DModelOutput alih-alih tuple biasa.

Mengembalikan:

Jika return_dict bernilai True, sebuah ~models.transformer_2d.Transformer2DModelOutput akan dikembalikan, selain itu sebuah tuple di mana elemen pertama adalah tensor sampel.

Metode forward dari SD3Transformer2DModel.

fuse_qkv_projections[[diffusers.SD3ControlNetModel.fuse_qkv_projections]]

fuse_qkv_projections()

Sumber

Mengaktifkan proyeksi QKV yang digabungkan. Untuk modul self-attention, semua matriks proyeksi (yaitu, query, key, value) digabungkan. Untuk modul cross-attention, matriks proyeksi key dan value digabungkan.

> API ini 🧪 eksperimental.

unfuse_qkv_projections[[diffusers.SD3ControlNetModel.unfuse_qkv_projections]]

unfuse_qkv_projections()

Sumber

Menonaktifkan proyeksi QKV yang digabungkan jika diaktifkan.

> API ini 🧪 eksperimental.

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

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

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

Sumber

Xet Storage Details

Size:
9.26 kB
·
Xet hash:
2d0b9056bc4259abca69e0d903329f3684b7599f47c74cefb02987795cfe785a

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