Buckets:

mishig's picture
|
download
raw
8.77 kB
# UNet2DModel
Model [UNet](https://huggingface.co/papers/1505.04597) 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.*
## UNet2DModel[[diffusers.UNet2DModel]]
#### diffusers.UNet2DModel[[diffusers.UNet2DModel]]
```python
diffusers.UNet2DModel(sample_size: int | tuple[int, int] | None = None, in_channels: int = 3, out_channels: int = 3, center_input_sample: bool = False, time_embedding_type: str = 'positional', time_embedding_dim: int | None = None, freq_shift: int = 0, flip_sin_to_cos: bool = True, down_block_types: tuple[str, ...] = ('DownBlock2D', 'AttnDownBlock2D', 'AttnDownBlock2D', 'AttnDownBlock2D'), mid_block_type: str | None = 'UNetMidBlock2D', up_block_types: tuple[str, ...] = ('AttnUpBlock2D', 'AttnUpBlock2D', 'AttnUpBlock2D', 'UpBlock2D'), block_out_channels: tuple[int, ...] = (224, 448, 672, 896), layers_per_block: int = 2, mid_block_scale_factor: float = 1, downsample_padding: int = 1, downsample_type: str = 'conv', upsample_type: str = 'conv', dropout: float = 0.0, act_fn: str = 'silu', attention_head_dim: int | None = 8, norm_num_groups: int = 32, attn_norm_num_groups: int | None = None, norm_eps: float = 1e-05, resnet_time_scale_shift: str = 'default', add_attention: bool = True, class_embed_type: str | None = None, num_class_embeds: int | None = None, num_train_timesteps: int | None = None)
```
[Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/unets/unet_2d.py#L39)
**Parameter:**
sample_size (`int` atau `tuple[int, int]`, *opsional*, defaultnya `None`) : Tinggi dan lebar sampel input/output. Dimensi harus merupakan kelipatan dari `2 ** (len(block_out_channels) - 1)`.
in_channels (`int`, *opsional*, defaultnya 3) : Jumlah channel dalam sampel input.
out_channels (`int`, *opsional*, defaultnya 3) : Jumlah channel pada output.
center_input_sample (`bool`, *opsional*, defaultnya `False`) : Apakah akan memusatkan sampel input.
time_embedding_type (`str`, *opsional*, defaultnya `"positional"`) : Jenis time embedding yang akan digunakan.
freq_shift (`int`, *opsional*, default 0) : Pergeseran frekuensi untuk penanaman waktu Fourier.
flip_sin_to_cos (`bool`, *opsional*, defaultnya `True`) : Apakah akan membalik sin menjadi cos untuk penanaman waktu Fourier.
down_block_types (`tuple[str]`, *opsional*, defaultnya `("DownBlock2D", "AttnDownBlock2D", "AttnDownBlock2D", "AttnDownBlock2D")`) : tuple dari tipe blok downsample.
mid_block_type (`str`, *opsional*, defaultnya `"UNetMidBlock2D"`) : Jenis blok untuk bagian tengah UNet, bisa berupa `UNetMidBlock2D` atau `None`.
up_block_types (`tuple[str]`, *opsional*, defaultnya `("AttnUpBlock2D", "AttnUpBlock2D", "AttnUpBlock2D", "UpBlock2D")`) : tuple dari tipe blok upsample.
block_out_channels (`tuple[int]`, *opsional*, defaultnya `(224, 448, 672, 896)`) : tuple dari kanal output blok.
layers_per_block (`int`, *opsional*, defaultnya `2`) : Jumlah lapisan per blok.
mid_block_scale_factor (`float`, *opsional*, defaultnya `1`) : Faktor skala untuk blok tengah.
downsample_padding (`int`, *opsional*, defaultnya `1`) : Padding untuk konvolusi downsample.
downsample_type (`str`, *opsional*, defaultnya `conv`) : Jenis downsample untuk lapisan downsampling. Pilih antara "conv" dan "resnet"
upsample_type (`str`, *opsional*, defaultnya `conv`) : Jenis upsample untuk lapisan upsampling. Pilih antara "conv" dan "resnet"
dropout (`float`, *opsional*, default 0.0) : Probabilitas dropout yang akan digunakan.
act_fn (`str`, *opsional*, defaultnya `"silu"`) : Fungsi aktivasi yang akan digunakan.
attention_head_dim (`int`, *opsional*, defaultnya `8`) : Dimensi kepala perhatian.
norm_num_groups (`int`, *opsional*, defaultnya `32`) : Jumlah grup untuk normalisasi.
attn_norm_num_groups (`int`, *opsional*, defaultnya `None`) : Jika diatur ke bilangan bulat, lapisan group norm akan dibuat di lapisan `Attention` pada blok tengah dengan jumlah grup yang diberikan. Jika dibiarkan sebagai `None`, lapisan group norm hanya akan dibuat jika `resnet_time_scale_shift` diatur ke `default`, dan jika dibuat akan memiliki `norm_num_groups` grup.
norm_eps (`float`, *opsional*, defaultnya `1e-5`) : Epsilon untuk normalisasi.
resnet_time_scale_shift (`str`, *opsional*, defaultnya `"default"`) : Konfigurasi pergeseran skala waktu untuk blok ResNet (lihat `ResnetBlock2D`). Pilih dari `default` atau `scale_shift`.
class_embed_type (`str`, *opsional*, defaultnya `None`) : Jenis class embedding yang akan digunakan, yang pada akhirnya dijumlahkan dengan time embeddings. Pilih dari `None`, `"timestep"`, atau `"identity"`.
num_class_embeds (`int`, *opsional*, defaultnya `None`) : Dimensi input dari matriks embedding yang dapat dipelajari untuk diproyeksikan ke `time_embed_dim` saat melakukan kondisioning kelas dengan `class_embed_type` yang sama dengan `None`.
Model 2D UNet yang menerima sampel berisik dan timestep, lalu mengembalikan output berbentuk sampel.
Model ini mewarisi dari [ModelMixin](/docs/diffusers/main/id/api/models/overview#diffusers.ModelMixin). Periksa dokumentasi kelas induk untuk metode generiknya yang diimplementasikan untuk semua model (seperti mengunduh atau menyimpan).
#### forward[[diffusers.UNet2DModel.forward]]
```python
forward(sample: Tensor, timestep: typing.Union[torch.Tensor, float, int], class_labels: typing.Optional[torch.Tensor] = None, return_dict: bool = True)
```
[Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/unets/unet_2d.py#L249)
**Parameter:**
sample (`torch.Tensor`) : Tensor input berisik dengan bentuk berikut `(batch, channel, height, width)`.
timestep (`torch.Tensor` atau `float` atau `int`) : Jumlah timestep untuk mendenoise input.
class_labels (`torch.Tensor`, *opsional*, defaultnya `None`) : Label kelas opsional untuk kondisioning. Embedding-nya akan dijumlahkan dengan embedding timestep.
return_dict (`bool`, *opsional*, defaultnya `True`) : Apakah akan mengembalikan [UNet2DOutput](/docs/diffusers/main/id/api/models/unet2d#diffusers.models.unets.unet_2d.UNet2DOutput) alih-alih tuple biasa.
**Mengembalikan:** [UNet2DOutput](/docs/diffusers/main/id/api/models/unet2d#diffusers.models.unets.unet_2d.UNet2DOutput) atau `tuple`
Jika `return_dict` bernilai True, sebuah [UNet2DOutput](/docs/diffusers/main/id/api/models/unet2d#diffusers.models.unets.unet_2d.UNet2DOutput) akan dikembalikan, selain itu sebuah `tuple` akan dikembalikan di mana elemen pertama adalah tensor sampel.
Metode forward dari [UNet2DModel](/docs/diffusers/main/id/api/models/unet2d#diffusers.UNet2DModel).
## UNet2DOutput[[diffusers.models.unets.unet_2d.UNet2DOutput]]
#### diffusers.models.unets.unet_2d.UNet2DOutput[[diffusers.models.unets.unet_2d.UNet2DOutput]]
```python
diffusers.models.unets.unet_2d.UNet2DOutput(sample: Tensor)
```
[Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/unets/unet_2d.py#L27)
**Parameter:**
sample (`torch.Tensor` dengan bentuk `(batch_size, num_channels, height, width)`) : Output hidden states dari lapisan terakhir model.
Output dari [UNet2DModel](/docs/diffusers/main/id/api/models/unet2d#diffusers.UNet2DModel).

Xet Storage Details

Size:
8.77 kB
·
Xet hash:
eb296f0b911f8b85eabed0e316430d53a574e0d179ae1d5d3a0f01a54e4f3cba

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