Diffusers documentation
UNetMotionModel
UNetMotionModel
Model UNet awalnya diperkenalkan oleh Ronneberger dkk. untuk segmentasi citra biomedis, tetapi juga umum digunakan di 🤗 Diffusers karena menghasilkan citra dengan ukuran yang sama dengan input. Ini adalah salah satu komponen terpenting dalam sistem difusi karena memfasilitasi proses difusi itu sendiri. Terdapat beberapa varian model UNet di 🤗 Diffusers, tergantung pada jumlah dimensinya dan apakah model tersebut bersifat kondisional atau tidak. Ini adalah model UNet 2D.
Abstrak dari makalah tersebut adalah:
Ada konsensus besar bahwa pelatihan jaringan dalam yang sukses membutuhkan ribuan sampel pelatihan berlabel. Dalam makalah ini, kami menyajikan sebuah jaringan dan strategi pelatihan yang mengandalkan penggunaan kuat augmentasi data untuk menggunakan sampel berlabel yang tersedia secara lebih efisien. Arsitekturnya terdiri dari jalur kontraktif untuk menangkap konteks dan jalur ekspansi simetris yang memungkinkan lokalisasi yang presisi. Kami menunjukkan bahwa jaringan semacam ini dapat dilatih end-to-end dari sangat sedikit gambar dan melampaui metode terbaik sebelumnya (jaringan konvolusional sliding-window) pada tantangan ISBI untuk segmentasi struktur neuron dalam tumpukan mikroskop elektron. Menggunakan jaringan yang sama yang dilatih pada gambar mikroskopi cahaya transmisi (kontras fase dan DIC), kami memenangkan tantangan pelacakan sel ISBI 2015 dalam kategori-kategori tersebut dengan selisih yang besar. Selain itu, jaringan ini cepat. Segmentasi gambar 512x512 membutuhkan waktu kurang dari satu detik pada GPU terbaru. Implementasi lengkap (berbasis Caffe) dan jaringan yang telah dilatih tersedia di http://lmb.informatik.uni-freiburg.de/people/ronneber/u-net.
UNetMotionModel
kelas diffusers.UNetMotionModel
< source >( sample_size: int | None = Nonein_channels: int = 4out_channels: int = 4down_block_types: tuple[str, ...] = ('CrossAttnDownBlockMotion', 'CrossAttnDownBlockMotion', 'CrossAttnDownBlockMotion', 'DownBlockMotion')up_block_types: tuple[str, ...] = ('UpBlockMotion', 'CrossAttnUpBlockMotion', 'CrossAttnUpBlockMotion', 'CrossAttnUpBlockMotion')block_out_channels: tuple[int, ...] = (320, 640, 1280, 1280)layers_per_block: int | tuple[int] = 2downsample_padding: int = 1mid_block_scale_factor: float = 1act_fn: str = 'silu'norm_num_groups: int = 32norm_eps: float = 1e-05cross_attention_dim: int = 1280transformer_layers_per_block: int | tuple[int] | tuple[tuple] = 1reverse_transformer_layers_per_block: int | tuple[int] | tuple[tuple] | None = Nonetemporal_transformer_layers_per_block: int | tuple[int] | tuple[tuple] = 1reverse_temporal_transformer_layers_per_block: int | tuple[int] | tuple[tuple] | None = Nonetransformer_layers_per_mid_block: int | tuple[int] | None = Nonetemporal_transformer_layers_per_mid_block: int | tuple[int] | None = 1use_linear_projection: bool = Falsenum_attention_heads: int | tuple[int, ...] = 8motion_max_seq_length: int = 32motion_num_attention_heads: int | tuple[int, ...] = 8reverse_motion_num_attention_heads: int | tuple[int, ...] | tuple[tuple[int, ...], ...] | None = Noneuse_motion_mid_block: bool = Truemid_block_layers: int = 1encoder_hid_dim: int | None = Noneencoder_hid_dim_type: str | None = Noneaddition_embed_type: str | None = Noneaddition_time_embed_dim: int | None = Noneprojection_class_embeddings_input_dim: int | None = Nonetime_cond_proj_dim: int | None = None )
Model 2D UNet kondisional yang dimodifikasi, yang menerima sampel berisik, keadaan kondisional, dan timestep, lalu mengembalikan output berbentuk sampel.
Model ini mewarisi dari ModelMixin. Periksa dokumentasi kelas induk untuk metode generiknya yang diimplementasikan untuk semua model (seperti mengunduh atau menyimpan).
Menonaktifkan mekanisme FreeU.
enable_forward_chunking
< source >( chunk_size: int | None = Nonedim: int = 0 )
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, default0) — Dimensi di mana komputasi feed-forward harus di-chunk. Pilih antara dim=0 (batch) atau dim=1 (panjang sekuens).
Menetapkan prosesor perhatian untuk menggunakan chunking feed forward.
enable_freeu
< source >( s1: floats2: floatb1: floatb2: float )
Parameter
- s1 (
float) — Faktor penskalaan untuk tahap 1 untuk meredam kontribusi fitur skip. Hal ini dilakukan untuk memitigasi “efek oversmoothing” dalam proses denoising yang ditingkatkan. - s2 (
float) — Faktor penskalaan untuk tahap 2 untuk meredam kontribusi fitur skip. Hal ini dilakukan untuk memitigasi “efek oversmoothing” dalam proses denoising yang ditingkatkan. - b1 (
float) — Faktor penskalaan untuk tahap 1 untuk memperkuat kontribusi fitur backbone. - b2 (
float) — Faktor penskalaan untuk tahap 2 untuk memperkuat kontribusi fitur backbone.
Mengaktifkan mekanisme FreeU dari https://huggingface.co/papers/2309.11497.
Sufiks setelah faktor penskalaan mewakili blok tahap tempat faktor tersebut diterapkan.
Silakan merujuk ke respositori resmi untuk kombinasi nilai yang diketahui bekerja dengan baik untuk berbagai pipeline seperti Stable Diffusion v1, v2, dan Stable Diffusion XL.
forward
< source >( sample: Tensortimestep: typing.Union[torch.Tensor, float, int]encoder_hidden_states: Tensortimestep_cond: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonecross_attention_kwargs: dict[str, typing.Any] | None = Noneadded_cond_kwargs: dict[str, torch.Tensor] | None = Nonedown_block_additional_residuals: tuple[torch.Tensor] | None = Nonemid_block_additional_residual: typing.Optional[torch.Tensor] = Nonereturn_dict: bool = True ) → UNetMotionOutput or tuple
Parameter
- sample (
torch.Tensor) — Tensor input berisik dengan bentuk berikut(batch, num_frames, channel, height, width. - timestep (
torch.Tensorataufloatatauint) — Jumlah timestep untuk mendenoise input. - encoder_hidden_states (
torch.Tensor) — Hidden states encoder dengan bentuk(batch, sequence_length, feature_dim). - timestep_cond — (
torch.Tensor, opsional, defaultNone): Embedding kondisional untuk timestep. Jika diberikan, embedding akan dijumlahkan dengan sampel yang melewati lapisanself.time_embeddinguntuk mendapatkan embedding timestep. - attention_mask (
torch.Tensor, opsional, defaultNone) — Mask perhatian dengan bentuk(batch, key_tokens)diterapkan padaencoder_hidden_states. Jika1, mask dipertahankan, sedangkan jika0, mask dibuang. Mask akan dikonversi menjadi bias, yang menambahkan nilai negatif besar ke skor perhatian yang sesuai dengan token “buang”. - cross_attention_kwargs (
dict, opsional) — Kamus kwargs yang jika ditentukan akan diteruskan keAttentionProcessorseperti yang didefinisikan di bawahself.processordalam diffusers.models.attention_processor. - added_cond_kwargs (
dict, opsional) — Kamus berisi embedding tambahan (misalnya embedding teks dan waktu) yang digunakan untuk mengondisikan model. - down_block_additional_residuals — (
tupledaritorch.Tensor, opsional): Tuple dari tensor yang, jika ditentukan, akan ditambahkan ke residual dari blok down unet. - mid_block_additional_residual — (
torch.Tensor, opsional): Tensor yang jika ditentukan akan ditambahkan ke residual dari blok unet tengah. - return_dict (
bool, opsional, defaultTrue) — Apakah akan mengembalikanUNetMotionOutputalih-alih tuple biasa.
Mengembalikan
UNetMotionOutput atau tuple
Jika return_dict bernilai True, sebuah UNetMotionOutput akan dikembalikan,
sebaliknya sebuah tuple akan dikembalikan di mana elemen pertama adalah tensor sampel.
Metode forward dari UNetMotionModel.
Bekukan bobot dari UNet2DConditionModel saja, dan biarkan modul gerak tetap tidak dibekukan untuk penyesuaian halus.
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 🧪 bersifat eksperimental.
Menonaktifkan prosesor perhatian kustom dan mengatur implementasi perhatian default.
Menonaktifkan proyeksi QKV yang digabungkan jika diaktifkan.
> API ini 🧪 bersifat eksperimental.
UNet3DConditionOutput
kelas diffusers.models.unets.unet_3d_condition.UNet3DConditionOutput
< source >( sample: Tensor )
Output dari UNet3DConditionModel.