Diffusers documentation
UNetMotionModel
UNetMotionModel
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ına 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.
UNetMotionModel
sınıf diffusers.UNetMotionModel
< source >( sample_size: int | None = Nonein_channels: int = 4out_channels: int = 4down_block_types: tuple = ('CrossAttnDownBlockMotion', 'CrossAttnDownBlockMotion', 'CrossAttnDownBlockMotion', 'DownBlockMotion')up_block_types: tuple = ('UpBlockMotion', 'CrossAttnUpBlockMotion', 'CrossAttnUpBlockMotion', 'CrossAttnUpBlockMotion')block_out_channels: tuple = (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 )
Gürültülü bir örnek, koşullu durum ve bir zaman adımı alır ve örnek biçimli bir çıktı döndüren, değiştirilmiş koşullu 2D 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.
FreeU mekanizmasını devre dışı bırakır.
enable_forward_chunking
< source >( chunk_size: int | None = Nonedim: int = 0 )
Parametreler
- chunk_size (
int, isteğe bağlı) — İleri besleme katmanlarının parça boyutu. Belirtilmezse, ileri besleme katmanıdimboyutlu her tensör üzerinde ayrı ayrı çalıştırılır. - dim (
int, isteğe bağlı, varsayılan0) — İleri besleme (feed-forward) hesabının parçalanacağı boyut. dim=0 (batch) veya dim=1 (dizi uzunluğu) arasında seçim yapın.
Dikkat işleyicisini ileri besleme parçalama kullanacak şekilde ayarlar.
enable_freeu
< source >( s1: floats2: floatb1: floatb2: float )
Parametreler
- s1 (
float) — 1. aşama için, atlanan özelliklerin katkılarını azaltmak üzere kullanılan ölçekleme faktörü. Bu, geliştirilmiş gürültü azaltma sürecindeki “aşırı yumuşatma etkisini” (oversmoothing effect) hafifletmek için yapılır. - s2 (
float) — 2. aşama için, atlanan özelliklerin katkılarını azaltmak üzere kullanılan ölçekleme faktörü. Bu, geliştirilmiş gürültü azaltma sürecindeki “aşırı yumuşatma etkisini” (oversmoothing effect) hafifletmek için yapılır. - b1 (
float) — Omurga özelliklerinin katkılarını artırmak için 1. aşamanın ölçekleme çarpanı. - b2 (
float) — Omurga özelliklerinin katkılarını artırmak için 2. aşamanın ölçekleme çarpanı.
https://huggingface.co/papers/2309.11497 adresindeki FreeU mekanizmasını etkinleştirir.
Ölçekleme katsayılarının sonundaki ekler, bu katsayıların uygulandığı aşama bloklarını temsil eder.
Stable Diffusion v1, v2 ve Stable Diffusion XL gibi farklı pipeline'lar için iyi çalıştığı bilinen değer kombinasyonları için resmi depoya bakın.
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
Parametreler
- sample (
torch.Tensor) — Aşağıdaki şekle sahip gürültülü giriş tensörü(batch, num_frames, channel, height, width. - timestep (
torch.Tensorveyafloatveyaint) — Bir girdinin gürültüsünü gidermek için kullanılacak zaman adımı sayısı. - encoder_hidden_states (
torch.Tensor) —(batch, sequence_length, feature_dim)biçimindeki kodlayıcı gizli durumları. - timestep_cond — (
torch.Tensor, isteğe bağlı, varsayılanNone): Zaman adımı için koşullu gömme (embedding) değerleri. Sağlanırsa, gömme değerleri,self.time_embeddingkatmanından geçirilen örneklerle toplanarak zaman adımı gömme değerleri elde edilir. - attention_mask (
torch.Tensor, isteğe bağlı, varsayılanNone) —(batch, key_tokens)biçiminde bir dikkat maskesi,encoder_hidden_statesüzerine uygulanır. Değer1ise maske korunur, aksi halde0ise atılır. Maske, “at” tokenlarına karşılık gelen dikkat puanlarına büyük negatif değerler ekleyen bir önyargıya dönüştürülür. - cross_attention_kwargs (
dict, isteğe bağlı) — Belirtilirse, diffusers.models.attention_processor içindekiself.processoraltında tanımlananAttentionProcessor'a iletilen bir kwargs sözlüğü. - added_cond_kwargs (
dict, isteğe bağlı) — Modeli koşullandırmak için kullanılan ek gömme (ör. metin ve zaman gömme) sözlüğü. - down_block_additional_residuals — (
tupleoftorch.Tensor, isteğe bağlı): Belirtilirse, aşağı yönlü unet bloklarının artıklarına eklenen tensörlerin bir demeti. - mid_block_additional_residual — (
torch.Tensor, isteğe bağlı): Belirtilirse, orta unet bloğunun artığına eklenen bir tensör. - return_dict (
bool, isteğe bağlı, varsayılanTrue) — Düz bir tuple yerineUNetMotionOutputdöndürülüp döndürülmemesi.
Dönüş değeri
UNetMotionOutput veya tuple
return_dict True ise, UNetMotionOutput döndürülür,
aksi halde ilk öğesi örnek tensörü olan bir tuple döndürülür.
UNetMotionModel ileri yöntemi.
Sadece UNet2DConditionModel ağırlıklarını dondurun ve ince ayar için hareket modüllerini dondurulmamış bırakın.
Füzyonlu QKV projeksiyonlarını etkinleştirir. Kendi dikkat (self-attention) modülleri için tüm projeksiyon matrisleri (yani sorgu, anahtar, değer) füzyonlanır. Çapraz dikkat (cross-attention) modülleri için anahtar ve değer projeksiyon matrisleri füzyonlanır.
> Bu API 🧪 deneyseldir.
Özel dikkat işleyicilerini devre dışı bırakır ve varsayılan dikkat uygulamasını ayarlar.
Etkinleştirilmişse birleşik QKV projeksiyonunu devre dışı bırakır.
> Bu API 🧪 deneyseldir.
UNet3DConditionOutput
sınıf diffusers.models.unets.unet_3d_condition.UNet3DConditionOutput
< source >( sample: Tensor )
UNet3DConditionModel'nin çıktısı.