Buckets:

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

UNet3DConditionModel

UNet modeli, Ronneberger ve arkadaşları tarafından biyomedikal görüntü segmentasyonu için ilk olarak tanıtılmıştır; ancak girdi ile aynı boyutta görüntüler ürettiği için 🤗 Diffusers içinde de yaygın olarak kullanılır. 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, 3B UNet koşullu 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ındaki 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.

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 = ('CrossAttnDownBlock3D', 'CrossAttnDownBlock3D', 'CrossAttnDownBlock3D', 'DownBlock3D'), up_block_types: tuple = ('UpBlock3D', 'CrossAttnUpBlock3D', 'CrossAttnUpBlock3D', 'CrossAttnUpBlock3D'), block_out_channels: tuple = (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)

Kaynak

Parametreler:

sample_size (int veya tuple[int, int], isteğe bağlı, varsayılan None) : Girdi/çıktı örneğinin yüksekliği ve genişliği.

in_channels (int, isteğe bağlı, varsayılan 4) : Girdi örneğindeki kanal sayısı.

out_channels (int, isteğe bağlı, varsayılan 4) : Çıktıdaki kanal sayısı.

down_block_types (tuple[str], opsiyonel, varsayılan ("CrossAttnDownBlock3D", "CrossAttnDownBlock3D", "CrossAttnDownBlock3D", "DownBlock3D")) : Kullanılacak indirgeme bloklarının demeti.

up_block_types (tuple[str], opsiyonel, varsayılan ("UpBlock3D", "CrossAttnUpBlock3D", "CrossAttnUpBlock3D", "CrossAttnUpBlock3D")) : Kullanılacak örnekleme bloklarının demeti.

block_out_channels (tuple[int], opsiyonel, varsayılan (320, 640, 1280, 1280)) : Her blok için çıktı kanalları demeti.

layers_per_block (int, isteğe bağlı, varsayılan 2) : Blok başına katman sayısı.

downsample_padding (int, isteğe bağlı, varsayılan 1) : Küçültme konvolüsyonu için kullanılacak dolgu.

mid_block_scale_factor (float, isteğe bağlı, varsayılan 1.0) : Orta blok için kullanılacak ölçekleme faktörü.

act_fn (str, isteğe bağlı, varsayılan "silu") : Kullanılacak aktivasyon fonksiyonu.

norm_num_groups (int, isteğe bağlı, varsayılan 32) : Normalizasyon için kullanılacak grup sayısı. None ise, işleme sonrası aşamasında normalizasyon ve aktivasyon katmanları atlanır.

norm_eps (float, opsiyonel, varsayılan 1e-5) : Normalizasyon için kullanılacak epsilon.

cross_attention_dim (int, isteğe bağlı, varsayılan 1024) : Çapraz dikkat özelliklerinin boyutu.

attention_head_dim (int, isteğe bağlı, varsayılan 64) : Dikkat başlarının boyutu.

num_attention_heads (int, isteğe bağlı) : Dikkat başlarının sayısı.

time_cond_proj_dim (int, isteğe bağlı, varsayılan None) : timestep gömme içindeki cond_proj katmanının boyutu.

Gürültülü bir örnek, koşullu durum ve bir zaman adımı alır ve örnek biçiminde bir çıktı döndüren koşullu bir 3D UNet modeli.

Bu model ModelMixin sınıfından devralır. Tüm modeller için uygulanan genel yöntemlerini (indirme veya kaydetme gibi) görmek için üst sınıfın belgelendirmesine bakın.

disable_freeu[[diffusers.UNet3DConditionModel.disable_freeu]]

disable_freeu()

Kaynak

FreeU mekanizmasını devre dışı bırakır.

enable_forward_chunking[[diffusers.UNet3DConditionModel.enable_forward_chunking]]

enable_forward_chunking(chunk_size: int | None = None, dim: int = 0)

Kaynak

Parametreler:

chunk_size (int, opsiyonel) : Feed-forward katmanlarının parça boyutu. Belirtilmezse, feed-forward katmanı dim boyutlu her tensör üzerinde ayrı ayrı çalıştırılır.

dim (int, isteğe bağlı, varsayılan 0) : Feed-forward hesaplamanın parçalanacağı boyut. dim=0 (batch) veya dim=1 (sequence length) arasında seçim yapın.

Dikkat işleyicisini feed forward chunking kullanacak şekilde ayarlar.

enable_freeu[[diffusers.UNet3DConditionModel.enable_freeu]]

enable_freeu(s1, s2, b1, b2)

Kaynak

Parametreler:

s1 (float) : 1. aşama için, atlanan özelliklerin katkılarını sönümlemek amacıyla kullanılan ölçekleme faktörü. Bu, geliştirilmiş gürültü azaltma sürecindeki "aşırı yumuşatma etkisini" azaltmak 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" hafifletmek için yapılır.

b1 (float) : Omurga özelliklerinin katkılarını artırmak için 1. aşama ölçekleme çarpanı.

b2 (float) : Omurga özelliklerinin katkılarını artırmak için 2. aşama ö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[[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)

Kaynak

Parametreler:

sample (torch.Tensor) : Şekli (batch, num_channels, num_frames, height, width olan gürültülü giriş tensörü.

timestep (torch.Tensor veya float veya int) : 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ı.

class_labels (torch.Tensor, isteğe bağlı, varsayılan None) : Koşullandırma için isteğe bağlı sınıf etiketleri. Gömümleri, zaman adımları gömümleriyle toplanır.

timestep_cond : (torch.Tensor, isteğe bağlı, varsayılan None): Zaman adımı için koşullu gömme. Sağlanırsa, gömme, self.time_embedding katmanından geçirilen örneklerle toplanarak zaman adımı gömmeleri elde edilir.

attention_mask (torch.Tensor, isteğe bağlı, varsayılan None) : (batch, key_tokens) biçimindeki bir dikkat maskesi, encoder_hidden_states üzerine uygulanır. Değer 1 ise maske korunur, aksi halde 0 ise atılır. Maske, "at" token'ları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çinde self.processor altında tanımlanan AttentionProcessor'a iletilen bir kwargs sözlüğü.

down_block_additional_residuals : (tuple of torch.Tensor, isteğe bağlı): Belirtilirse, down unet bloklarının artıklarına eklenen tensörlerden oluşan bir tuple.

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ılan True) : Düz bir tuple yerine UNet3DConditionOutput döndürülecek mi?

cross_attention_kwargs (dict, isteğe bağlı) : Belirtilirse AttnProcessor'a iletilen bir kwargs sözlüğü.

Dönüş: UNet3DConditionOutput veya tuple

return_dict True ise UNet3DConditionOutput döndürülür, aksi halde ilk öğesi örnek tensörü olan bir tuple döndürülür.

UNet3DConditionModel ileri yöntemi.

fuse_qkv_projections[[diffusers.UNet3DConditionModel.fuse_qkv_projections]]

fuse_qkv_projections()

Kaynak

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.

set_attention_slice[[diffusers.UNet3DConditionModel.set_attention_slice]]

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

Kaynak

Parametreler:

slice_size (str veya int veya list(int), isteğe bağlı, varsayılan "auto") : "auto" olduğunda, dikkat başlarına giden girdi yarıya indirilir, böylece dikkat iki adımda hesaplanır. "max" ise, her seferinde yalnızca bir dilim çalıştırılarak maksimum miktarda bellek tasarrufu sağlanır. Bir sayı sağlanırsa, attention_head_dim // slice_size kadar dilim kullanılır. Bu durumda attention_head_dim, slice_size'ın katı olmalıdır.

Dilimlenmiş dikkat (attention) hesaplamasını etkinleştirin.

Bu seçenek etkinleştirildiğinde, dikkat modülü dikkat hesaplamasını birkaç adımda gerçekleştirmek için girdi tensörünü dilimlere ayırır. Bu, hızda küçük bir düşüş karşılığında bellek tasarrufu sağlamak için faydalıdır.

set_default_attn_processor[[diffusers.UNet3DConditionModel.set_default_attn_processor]]

set_default_attn_processor()

Kaynak

Özel dikkat işleyicilerini devre dışı bırakır ve varsayılan dikkat uygulamasını ayarlar.

unfuse_qkv_projections[[diffusers.UNet3DConditionModel.unfuse_qkv_projections]]

unfuse_qkv_projections()

Kaynak

Etkinleştirilmişse birleşik QKV projeksiyonunu devre dışı bırakır.

> Bu API 🧪 deneyseldir.

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)

Kaynak

Parametreler:

sample (torch.Tensor, şekli (batch_size, num_channels, num_frames, height, width)) : encoder_hidden_states girdisine koşullu gizli durum çıktısı. Modelin son katmanının çıktısı.

UNet3DConditionModel'nin çıktısı.

Xet Storage Details

Size:
14.1 kB
·
Xet hash:
8357e047e74f4830eac94fe529c2935c8643c427bba4e93d6755a5bb4d50ed14

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