Diffusers documentation
UNet2DModel
UNet2DModel
UNet modeli, Ronneberger ve arkadaşları tarafından biyomedikal görüntü segmentasyonu için ilk olarak tanıtılmıştır ancak 🤗 Diffusers içinde de yaygın olarak kullanılır çünkü girdiyle aynı boyutta görüntüler üretir. Gerçek difüzyon sürecini kolaylaştırdığı için bir difüzyon sisteminin en önemli bileşenlerinden biridir. 🤗 Diffusers içinde, boyut sayısı ve koşullu bir model olup olmadığına bağlı olarak UNet modelinin çeşitli varyantları bulunur. Bu bir 2D UNet modelidir.
Makalenin özeti şudur:
Derin ağların başarılı bir şekilde eğitilmesinin binlerce etiketli eğitim örneği gerektirdiği konusunda geniş bir uzlaşı vardır. Bu makalede, mevcut etiketli örneklerin daha verimli kullanılmasını sağlayan, veri artırımının güçlü kullanımına dayanan bir ağ ve eğitim stratejisi sunuyoruz. Mimari, bağlamı yakalamak için daralan bir yol ve hassas konumlandırmayı mümkün kılan simetrik bir genişleyen yoldan oluşmaktadır. Böyle bir ağın çok az sayıda görüntüden uçtan uca eğitilebildiğini ve sinirsel yapıların elektron mikroskobik yığınlarında segmentasyonu için ISBI yarışmasında önceki en iyi yöntemi (kayan pencere konvolüsyonel ağ) geride bıraktığını gösteriyoruz. Aynı ağ, iletilen ışık mikroskobu görüntüleri (faz kontrastı ve DIC) üzerinde eğitilerek, bu kategorilerde ISBI hücre takibi yarışması 2015'i büyük bir farkla kazandık. Üstelik ağ hızlıdır. 512x512 boyutundaki bir görüntünün segmentasyonu, güncel bir GPU'da bir saniyeden az sürmektedir. Tam uygulama (Caffe tabanlı) ve eğitilmiş ağlar http://lmb.informatik.uni-freiburg.de/people/ronneber/u-net adresinde mevcuttur.
UNet2DModel
sınıf diffusers.UNet2DModel
< source >( sample_size: int | tuple[int, int] | None = Nonein_channels: int = 3out_channels: int = 3center_input_sample: bool = Falsetime_embedding_type: str = 'positional'time_embedding_dim: int | None = Nonefreq_shift: int = 0flip_sin_to_cos: bool = Truedown_block_types: tuple = ('DownBlock2D', 'AttnDownBlock2D', 'AttnDownBlock2D', 'AttnDownBlock2D')mid_block_type: str | None = 'UNetMidBlock2D'up_block_types: tuple = ('AttnUpBlock2D', 'AttnUpBlock2D', 'AttnUpBlock2D', 'UpBlock2D')block_out_channels: tuple = (224, 448, 672, 896)layers_per_block: int = 2mid_block_scale_factor: float = 1downsample_padding: int = 1downsample_type: str = 'conv'upsample_type: str = 'conv'dropout: float = 0.0act_fn: str = 'silu'attention_head_dim: int | None = 8norm_num_groups: int = 32attn_norm_num_groups: int | None = Nonenorm_eps: float = 1e-05resnet_time_scale_shift: str = 'default'add_attention: bool = Trueclass_embed_type: str | None = Nonenum_class_embeds: int | None = Nonenum_train_timesteps: int | None = None )
Parametreler
- sample_size (
intveyatuple[int, int], isteğe bağlı, varsayılanNone) — Girdi/çıktı örneğinin yüksekliği ve genişliği. Boyutlar,2 ** (len(block_out_channels) - 1)'in katı olmalıdır. - in_channels (
int, isteğe bağlı, varsayılan 3) — Girdi örneğindeki kanal sayısı. - out_channels (
int, isteğe bağlı, varsayılan 3) — Çıktıdaki kanal sayısı. - center_input_sample (
bool, isteğe bağlı, varsayılanFalse) — Girdi örneğinin ortalanıp ortalanmayacağını belirtir. - time_embedding_type (
str, isteğe bağlı, varsayılan"positional") — Kullanılacak zaman gömme türü. - freq_shift (
int, isteğe bağlı, varsayılan 0) — Fourier zaman gömme için frekans kaydırması. - flip_sin_to_cos (
bool, isteğe bağlı, varsayılanTrue) — Fourier zaman gömümünde sin'i cos'a çevirip çevirmeyeceğini belirtir. - down_block_types (
tuple[str], isteğe bağlı, varsayılan("DownBlock2D", "AttnDownBlock2D", "AttnDownBlock2D", "AttnDownBlock2D")) — Örnekleme azaltma blok türlerinin tuple'ı. - mid_block_type (
str, isteğe bağlı, varsayılan"UNetMidBlock2D") — UNet'in orta kısmı için blok türü,UNetMidBlock2DveyaNoneolabilir. - up_block_types (
tuple[str], isteğe bağlı, varsayılan("AttnUpBlock2D", "AttnUpBlock2D", "AttnUpBlock2D", "UpBlock2D")) — Yukarı örneklem bloğu türlerinin tuple'ı. - block_out_channels (
tuple[int], isteğe bağlı, varsayılan(224, 448, 672, 896)) — Blok çıktı kanallarının tuple'ı. - layers_per_block (
int, isteğe bağlı, varsayılan2) — Blok başına katman sayısı. - mid_block_scale_factor (
float, isteğe bağlı, varsayılan1) — Orta blok için ölçekleme faktörü. - downsample_padding (
int, isteğe bağlı, varsayılan1) — Downsample konvolüsyonu için dolgu. - downsample_type (
str, isteğe bağlı, varsayılanconv) — İndirme katmanları için indirme türü. “conv” ve “resnet” arasında seçim yapın - upsample_type (
str, isteğe bağlı, varsayılanconv) — Upsampling katmanları için upsample tipi. “conv” ve “resnet” arasında seçim yapın - dropout (
float, isteğe bağlı, varsayılan 0.0) — Kullanılacak dropout olasılığı. - act_fn (
str, isteğe bağlı, varsayılan"silu") — Kullanılacak aktivasyon fonksiyonu. - attention_head_dim (
int, isteğe bağlı, varsayılan8) — Dikkat başı boyutu. - norm_num_groups (
int, isteğe bağlı, varsayılan32) — Normalizasyon için grup sayısı. - attn_norm_num_groups (
int, isteğe bağlı, varsayılanNone) — Bir tam sayıya ayarlanırsa, orta blokta bulunanAttentionkatmanında, belirtilen grup sayısı ile bir group norm katmanı oluşturulur.Noneolarak bırakılırsa, group norm katmanı yalnızcaresnet_time_scale_shiftdefaultolarak ayarlanmışsa oluşturulur ve oluşturulursanorm_num_groupsgrup içerir. - norm_eps (
float, isteğe bağlı, varsayılan1e-5) — Normalizasyon için epsilon. - resnet_time_scale_shift (
str, isteğe bağlı, varsayılan"default") — ResNet blokları için zaman ölçekli kaydırma yapılandırması (bkz.ResnetBlock2D).defaultveyascale_shiftseçeneklerinden birini seçin. - class_embed_type (
str, isteğe bağlı, varsayılanNone) — Sonunda zaman gömme değerleriyle toplanan sınıf gömme türü.None,"timestep"veya"identity"seçeneklerinden birini seçin. - num_class_embeds (
int, isteğe bağlı, varsayılanNone) —class_embed_typeNoneolduğunda sınıf koşullandırması yapılırkentime_embed_dim'e projekte edilecek öğrenilebilir gömme matrisinin giriş boyutu.
Gürültülü bir örnek ve bir zaman adımı alır ve örnek biçiminde bir çıktı döndüren 2B UNet modeli.
Bu model ModelMixin sınıfından devralır. Tüm modeller için uygulanan genel yöntemleri (indirme veya kaydetme gibi) görmek için üst sınıfın belgelendirmesine bakın.
forward
< source >( sample: Tensortimestep: typing.Union[torch.Tensor, float, int]class_labels: typing.Optional[torch.Tensor] = Nonereturn_dict: bool = True ) → UNet2DOutput or tuple
Parametreler
- sample (
torch.Tensor) — Aşağıdaki şekle sahip gürültülü giriş tensörü(batch, channel, height, width). - timestep (
torch.Tensorveyafloatveyaint) — Bir girdinin gürültüsünü gidermek için kullanılacak zaman adımı sayısı. - class_labels (
torch.Tensor, isteğe bağlı, varsayılanNone) — Koşullandırma için isteğe bağlı sınıf etiketleri. Gömümleri, zaman adımları gömümleriyle toplanır. - return_dict (
bool, isteğe bağlı, varsayılanTrue) — Düz bir tuple yerine UNet2DOutput döndürülüp döndürülmemesi.
Dönüş değeri
UNet2DOutput veya tuple
return_dict True ise bir UNet2DOutput döndürülür, aksi takdirde ilk öğesi örnek tensörü olan bir tuple döndürülür.
UNet2DModel ileri yöntemi.
UNet2DOutput
sınıf diffusers.models.unets.unet_2d.UNet2DOutput
< source >( sample: Tensor )
UNet2DModel'in çıktısı.