Diffusers documentation
AutoencoderKL
AutoencoderKL
KL kaybı içeren varyasyonel otoenkoder (VAE) modeli, Diederik P. Kingma ve Max Welling tarafından Auto-Encoding Variational Bayes makalesinde tanıtılmıştır. 🤗 Diffusers'ta bu model, görüntüleri latentlere kodlamak ve latent temsilleri görüntülere çözmek için kullanılır.
Makalenin özeti şudur:
Yönlenmiş olasılıksal modellerde, çözülmesi güç posterior dağılımlara sahip sürekli gizli değişkenlerin ve büyük veri kümelerinin varlığında verimli çıkarım ve öğrenme nasıl gerçekleştirilebilir? Büyük veri kümelerine ölçeklenebilen ve bazı hafif türevlenebilirlik koşulları altında, çözülmesi güç durumda bile çalışan stokastik varyansiyonel çıkarım ve öğrenme algoritması sunuyoruz. Katkılarımız iki yönlüdür. Birincisi, varyansiyonel alt sınırın yeniden parametrelendirilmesinin, standart stokastik gradyan yöntemleriyle doğrudan optimize edilebilen bir alt sınır tahmincisi ürettiğini gösteriyoruz. İkincisi, veri noktası başına sürekli gizli değişkenlere sahip i.i.d. veri kümeleri için, önerilen alt sınır tahmincisi kullanılarak çözülmesi güç posteriöre yaklaşık bir çıkarım modeli (aynı zamanda tanıtım modeli olarak da adlandırılır) sığdırarak posterior çıkarımın özellikle verimli hale getirilebileceğini gösteriyoruz. Teorik avantajlar, deneysel sonuçlarda yansıtılmaktadır.
Orijinal formattan yükleme
Varsayılan olarak AutoencoderKL, from_pretrained() ile yüklenmelidir; ancak aşağıdaki gibi FromOriginalModelMixin.from_single_file kullanılarak orijinal biçimden de yüklenebilir:
from diffusers import AutoencoderKL
url = "https://huggingface.co/stabilityai/sd-vae-ft-mse-original/blob/main/vae-ft-mse-840000-ema-pruned.safetensors" # can also be a local file
model = AutoencoderKL.from_single_file(url)AutoencoderKL
sınıf diffusers.AutoencoderKL
< source >( in_channels: int = 3out_channels: int = 3down_block_types: tuple = ('DownEncoderBlock2D',)up_block_types: tuple = ('UpDecoderBlock2D',)block_out_channels: tuple = (64,)layers_per_block: int = 1act_fn: str = 'silu'latent_channels: int = 4norm_num_groups: int = 32sample_size: int = 32scaling_factor: float = 0.18215shift_factor: float | None = Nonelatents_mean: tuple[float] | None = Nonelatents_std: tuple[float] | None = Noneforce_upcast: bool = Trueuse_quant_conv: bool = Trueuse_post_quant_conv: bool = Truemid_block_add_attention: bool = True )
Parametreler
- in_channels (int, isteğe bağlı, varsayılan 3) — Girdi görüntüsündeki kanal sayısı.
- out_channels (int, isteğe bağlı, varsayılan 3) — Çıktıdaki kanal sayısı.
- down_block_types (
tuple[str], isteğe bağlı, varsayılan("DownEncoderBlock2D",)) — örnekleme azaltma blok türlerinin tuple'ı. - up_block_types (
tuple[str], isteğe bağlı, varsayılan("UpDecoderBlock2D",)) — Yukarı örneklem bloğu türlerinin tuple'ı. - block_out_channels (
tuple[int], isteğe bağlı, varsayılan(64,)) — Blok çıktı kanallarının tuple'ı. - act_fn (
str, isteğe bağlı, varsayılan"silu") — Kullanılacak aktivasyon fonksiyonu. - latent_channels (
int, isteğe bağlı, varsayılan 4) — Gizli uzaydaki kanal sayısı. - sample_size (
int, isteğe bağlı, varsayılan32) — Örnek giriş boyutu. - scaling_factor (
float, isteğe bağlı, varsayılan 0.18215) — Eğitim setinin ilk partisi kullanılarak hesaplanan, eğitilmiş gizli uzayın bileşen bazlı standart sapması. Bu değer, difüzyon modelinin eğitimi sırasında gizli uzayın birim varyansa sahip olacak şekilde ölçeklenmesinde kullanılır. Gizli değişkenler, difüzyon modeline aktarılmadan öncez = z * scaling_factorformülüyle ölçeklenir. Kod çözme sırasında gizli değişkenler,z = 1 / scaling_factor * zformülüyle orijinal ölçeğe geri getirilir. Daha fazla ayrıntı için High-Resolution Image Synthesis with Latent Diffusion Models makalesinin 4.3.2 ve D.1 bölümlerine bakınız. - force_upcast (
bool, isteğe bağlı, varsayılanTrue) — Etkinleştirilirse, SD-XL gibi yüksek görüntü çözünürlüğü pipeline'larında VAE'nin float32'de çalışmasını zorlar. VAE, çok fazla hassasiyet kaybı olmadan daha düşük bir aralıkta ince ayarlanabilir / eğitilebilir; bu durumdaforce_upcastFalseolarak ayarlanabilir - bkz: https://huggingface.co/madebyollin/sdxl-vae-fp16-fix - mid_block_add_attention (
bool, isteğe bağlı, varsayılanTrue) — Etkinleştirilirse, Encoder ve Decoder'ın mid_block bileşenlerinde attention blokları bulunur. false olarak ayarlanırsa, mid_block yalnızca resnet blokları içerir.
Görselleri latentlere kodlamak ve latent temsilleri görsellere çözmek için KL kaybı kullanan bir VAE 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.
decode
< source >( z: FloatTensorreturn_dict: bool = Truegenerator = None ) → ~models.vae.DecoderOutput or tuple
Parametreler
- z (
torch.Tensor) — Girdi partisi latent vektörleri. - return_dict (
bool, isteğe bağlı, varsayılanTrue) — Düz bir tuple yerine~models.vae.DecoderOutputdöndürülüp döndürülmemesi.
Dönüş değeri
~models.vae.DecoderOutput veya tuple
return_dict True ise, ~models.vae.DecoderOutput döndürülür, aksi takdirde düz bir tuple döndürülür.
Bir görüntü grubunu çözümlen.
encode
< source >( x: Tensorreturn_dict: bool = True )
Bir görüntü grubunu latentlere kodlayın.
forward
< source >( sample: Tensorsample_posterior: bool = Falsereturn_dict: bool = Truegenerator: typing.Optional[torch.Generator] = None ) → ~models.vae.DecoderOutput or tuple
Parametreler
- sample (
torch.Tensor) — Girdi örneği. - sample_posterior (
bool, isteğe bağlı, varsayılanFalse) — Posterior'dan örneklemeye alınıp alınmayacağı. - return_dict (
bool, isteğe bağlı, varsayılanTrue) — Düz bir tuple yerineDecoderOutputdöndürülüp döndürülmemesi. - generator (
torch.Generator, isteğe bağlı) — Örnekleme işlemini deterministik hale getirmek için kullanılan birtorch.Generator.
Dönüş değeri
~models.vae.DecoderOutput veya tuple
return_dict True ise, ~models.vae.DecoderOutput döndürülür, aksi takdirde düz bir tuple döndürülür.
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.
tiled_decode
< source >( z: Tensorreturn_dict: bool = True ) → ~models.vae.DecoderOutput or tuple
Parametreler
- z (
torch.Tensor) — Girdi partisi latent vektörleri. - return_dict (
bool, isteğe bağlı, varsayılanTrue) — Düz bir tuple yerine~models.vae.DecoderOutputdöndürülüp döndürülmemesi.
Dönüş değeri
~models.vae.DecoderOutput veya tuple
return_dict True ise, ~models.vae.DecoderOutput döndürülür, aksi takdirde düz bir tuple döndürülür.
Bir görüntü grubunu karolarlı bir çözücü kullanarak çözümlen.
tiled_encode
< source >( x: Tensorreturn_dict: bool = True ) → ~models.autoencoder_kl.AutoencoderKLOutput or tuple
Parametreler
- x (
torch.Tensor) — Görsellerin giriş partisi. - return_dict (
bool, isteğe bağlı, varsayılanTrue) — Düz bir tuple yerine~models.autoencoder_kl.AutoencoderKLOutputdöndürülüp döndürülmemesi.
Dönüş değeri
~models.autoencoder_kl.AutoencoderKLOutput veya tuple
return_dict True ise, ~models.autoencoder_kl.AutoencoderKLOutput döndürülür, aksi takdirde düz bir tuple döndürülür.
Bir görüntü grubunu, karolalı bir kodlayıcı kullanarak kodlayın.
Bu seçenek etkinleştirildiğinde, VAE, kodlamayı birkaç adımda hesaplamak için girdi tensörünü karolara böler. Bu, bellek kullanımının görüntü boyutundan bağımsız olarak sabit kalmasını sağlamak için faydalıdır. Karolarla kodlamanın nihai sonucu, her karonun farklı bir kodlayıcı kullandığı için karolasız kodlamadan farklıdır. Karola artefaktlarını önlemek için karolar üst üste biner ve pürüzsüz bir çıktı oluşturmak üzere birleştirilir. Çıktıda hâlâ karola boyutunda değişimler görebilirsiniz, ancak bunlar çok daha az belirgin olmalıdır.
Etkinleştirilmişse birleşik QKV projeksiyonunu devre dışı bırakır.
> Bu API 🧪 deneyseldir.
AutoencoderKLOutput
sınıf diffusers.models.modeling_outputs.AutoencoderKLOutput
< source >( latent_dist: DiagonalGaussianDistribution )
AutoencoderKL kodlama yönteminin çıktısı.
DecoderOutput
sınıf diffusers.models.autoencoders.vae.DecoderOutput
< source >( sample: Tensorcommit_loss: typing.Optional[torch.FloatTensor] = None )
Çözümleme yönteminin çıktısı.