Buckets:

hf-doc-build/doc / diffusers /main /id /api /models /unet3d-cond.md
mishig's picture
|
download
raw
13.5 kB

UNet3DConditionModel

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 3D kondisional.

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.

UNet3DConditionModel[[diffusers.UNet3DConditionModel]]

diffusers.UNet3DConditionModel[[diffusers.UNet3DConditionModel]]

diffusers.UNet3DConditionModel(sample_size: int | None = None, in_channels: int = 4, out_channels: int = 4, down_block_types: tuple[str, ...] = ('CrossAttnDownBlock3D', 'CrossAttnDownBlock3D', 'CrossAttnDownBlock3D', 'DownBlock3D'), up_block_types: tuple[str, ...] = ('UpBlock3D', 'CrossAttnUpBlock3D', 'CrossAttnUpBlock3D', 'CrossAttnUpBlock3D'), block_out_channels: tuple[int, ...] = (320, 640, 1280, 1280), layers_per_block: int = 2, downsample_padding: int = 1, mid_block_scale_factor: float = 1, act_fn: str = 'silu', norm_num_groups: int | None = 32, norm_eps: float = 1e-05, cross_attention_dim: int = 1024, attention_head_dim: int | tuple[int] = 64, num_attention_heads: int | tuple[int] | None = None, time_cond_proj_dim: int | None = None)

Sumber

Parameter:

sample_size (int atau tuple[int, int], opsional, defaultnya None) : Tinggi dan lebar sampel input/output.

in_channels (int, opsional, defaultnya 4) : Jumlah channel pada sampel input.

out_channels (int, opsional, defaultnya 4) : Jumlah channel pada output.

down_block_types (tuple[str], opsional, defaultnya ("CrossAttnDownBlock3D", "CrossAttnDownBlock3D", "CrossAttnDownBlock3D", "DownBlock3D")) : Tuple dari blok downsample yang akan digunakan.

up_block_types (tuple[str], opsional, defaultnya ("UpBlock3D", "CrossAttnUpBlock3D", "CrossAttnUpBlock3D", "CrossAttnUpBlock3D")) : Tuple dari blok upsample yang akan digunakan.

block_out_channels (tuple[int], opsional, defaultnya (320, 640, 1280, 1280)) : Tuple dari output channels untuk setiap block.

layers_per_block (int, opsional, defaultnya 2) : Jumlah lapisan per blok.

downsample_padding (int, opsional, default 1) : Padding yang digunakan untuk konvolusi downsampling.

mid_block_scale_factor (float, opsional, default 1.0) : Faktor skala yang digunakan untuk blok tengah.

act_fn (str, opsional, defaultnya "silu") : Fungsi aktivasi yang akan digunakan.

norm_num_groups (int, opsional, default 32) : Jumlah grup yang digunakan untuk normalisasi. Jika None, lapisan normalisasi dan aktivasi dilewati dalam pascapemrosesan.

norm_eps (float, opsional, default 1e-5) : Epsilon yang digunakan untuk normalisasi.

cross_attention_dim (int, opsional, default 1024) : Dimensi dari fitur cross attention.

attention_head_dim (int, opsional, defaultnya 64) : Dimensi dari kepala perhatian (attention heads).

num_attention_heads (int, opsional) : Jumlah kepala perhatian.

time_cond_proj_dim (int, opsional, defaultnya None) : Dimensi dari lapisan cond_proj dalam embedding timestep.

Model 3D UNet bersyarat yang menerima sampel berisik, keadaan kondisional, dan langkah waktu, lalu mengembalikan keluaran berbentuk sampel.

Model ini mewarisi dari ModelMixin. Periksa dokumentasi kelas induk untuk metode generiknya yang diimplementasikan untuk semua model (seperti mengunduh atau menyimpan).

disable_freeu[[diffusers.UNet3DConditionModel.disable_freeu]]

disable_freeu()

Sumber

Menonaktifkan mekanisme FreeU.

enable_forward_chunking[[diffusers.UNet3DConditionModel.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.

enable_freeu[[diffusers.UNet3DConditionModel.enable_freeu]]

enable_freeu(s1, s2, b1, b2)

Sumber

Parameter:

s1 (float) : Faktor penskalaan untuk tahap 1 untuk meredam kontribusi fitur skip. Hal ini dilakukan untuk memitigasi "efek over-smoothing" 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[[diffusers.UNet3DConditionModel.forward]]

forward(sample: Tensor, timestep: typing.Union[torch.Tensor, float, int], encoder_hidden_states: Tensor, class_labels: typing.Optional[torch.Tensor] = None, timestep_cond: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, cross_attention_kwargs: dict[str, typing.Any] | None = None, down_block_additional_residuals: tuple[torch.Tensor] | None = None, mid_block_additional_residual: typing.Optional[torch.Tensor] = None, return_dict: bool = True)

Sumber

Parameter:

sample (torch.Tensor) : Tensor input berisik dengan bentuk berikut (batch, num_channels, num_frames, height, width.

timestep (torch.Tensor atau float atau int) : Jumlah timestep untuk mendenoise input.

encoder_hidden_states (torch.Tensor) : Hidden states encoder dengan bentuk (batch, sequence_length, feature_dim).

class_labels (torch.Tensor, opsional, defaultnya None) : Label kelas opsional untuk kondisioning. Embedding-nya akan dijumlahkan dengan embedding timestep.

timestep_cond : (torch.Tensor, opsional, defaultnya None): Embedding kondisional untuk timestep. Jika diberikan, embedding akan dijumlahkan dengan sampel yang melewati lapisan self.time_embedding untuk mendapatkan embedding timestep.

attention_mask (torch.Tensor, opsional, defaultnya None) : Mask attention dengan bentuk (batch, key_tokens) diterapkan pada encoder_hidden_states. Jika 1, mask dipertahankan, sedangkan jika 0, mask dibuang. Mask akan dikonversi menjadi bias, yang menambahkan nilai negatif besar ke skor attention yang sesuai dengan token "buang".

cross_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.

down_block_additional_residuals : (tuple dari torch.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, defaultnya True) : Apakah akan mengembalikan UNet3DConditionOutput alih-alih tuple biasa.

cross_attention_kwargs (dict, opsional) : Kamus kwargs yang jika ditentukan akan diteruskan ke AttnProcessor.

Mengembalikan: UNet3DConditionOutput atau tuple

Jika return_dict bernilai True, sebuah UNet3DConditionOutput akan dikembalikan, selain itu sebuah tuple akan dikembalikan di mana elemen pertama adalah tensor sampel.

Metode forward dari UNet3DConditionModel.

fuse_qkv_projections[[diffusers.UNet3DConditionModel.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.

set_attention_slice[[diffusers.UNet3DConditionModel.set_attention_slice]]

set_attention_slice(slice_size: str | int | list[int])

Sumber

Parameter:

slice_size (str atau int atau list(int), opsional, defaultnya "auto") : Ketika "auto", input ke attention heads dipangkas setengahnya, sehingga attention dihitung dalam dua langkah. Jika "max", jumlah memori yang dihemat maksimal dengan hanya menjalankan satu slice pada satu waktu. Jika angka diberikan, digunakan sebanyak slice sebanyak attention_head_dim // slice_size. Dalam kasus ini, attention_head_dim harus merupakan kelipatan dari slice_size.

Aktifkan perhitungan perhatian terpotong.

Ketika opsi ini diaktifkan, modul perhatian membagi tensor input menjadi beberapa potongan untuk menghitung perhatian dalam beberapa langkah. Hal ini berguna untuk menghemat sebagian memori dengan mengorbankan sedikit penurunan kecepatan.

set_default_attn_processor[[diffusers.UNet3DConditionModel.set_default_attn_processor]]

set_default_attn_processor()

Sumber

Menonaktifkan prosesor perhatian kustom dan mengatur implementasi perhatian default.

unfuse_qkv_projections[[diffusers.UNet3DConditionModel.unfuse_qkv_projections]]

unfuse_qkv_projections()

Sumber

Menonaktifkan proyeksi QKV yang digabungkan jika diaktifkan.

> API ini 🧪 eksperimental.

UNet3DConditionOutput[[diffusers.models.unets.unet_3d_condition.UNet3DConditionOutput]]

diffusers.models.unets.unet_3d_condition.UNet3DConditionOutput[[diffusers.models.unets.unet_3d_condition.UNet3DConditionOutput]]

diffusers.models.unets.unet_3d_condition.UNet3DConditionOutput(sample: Tensor)

Sumber

Parameter:

sample (torch.Tensor dengan bentuk (batch_size, num_channels, num_frames, height, width)) : Output hidden states yang dikondisikan pada input encoder_hidden_states. Output dari lapisan terakhir model.

Output dari UNet3DConditionModel.

Xet Storage Details

Size:
13.5 kB
·
Xet hash:
0ae265a645202c0fe9c3057d0e941ca2125a451cfa17e2a330d67219e585a6d5

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