Diffusers documentation

VQDiffusionScheduler

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

VQDiffusionScheduler

VQDiffusionScheduler, dönüştürücü modelin çıktısını, bir önceki difüzyon zaman adımındaki gürültüsüz görüntü için bir örneğe dönüştürür. Shuyang Gu, Dong Chen, Jianmin Bao, Fang Wen, Bo Zhang, Dongdong Chen, Lu Yuan ve Baining Guo tarafından Vector Quantized Diffusion Model for Text-to-Image Synthesis makalesinde tanıtılmıştır.

Makalenin özeti şudur:

Metinden görüntüye üretim için vektör kuantize edilmiş difüzyon (VQ-Diffusion) modelini sunuyoruz. Bu yöntem, son zamanlarda geliştirilen Gürültü Azaltma Difüzyon Olasılıksal Modelinin (DDPM) koşullu bir varyantı tarafından modellenen gizli uzaya sahip bir vektör kuantize edilmiş varyansiyonel otoenkoderin (VQ-VAE) temelinde kuruludur. Bu gizli uzay yönteminin, mevcut yöntemlerdeki tek yönlü önyargıyı ortadan kaldırmakla kalmayıp, mevcut yöntemlerde ciddi bir sorun olan hata birikimini önlemek için maske-ve-değiştirme difüzyon stratejisini entegre etmemize de olanak tanıdığı için metinden görüntüye üretim görevleri için son derece uygun olduğunu tespit ettik. Deneylerimiz, benzer sayıda parametreye sahip geleneksel otoregresif (AR) modellerle karşılaştırıldığında VQ-Diffusion'ın önemli ölçüde daha iyi metinden görüntüye üretim sonuçları ürettiğini göstermektedir. Önceki GAN tabanlı metinden görüntüye yöntemlerle karşılaştırıldığında, VQ-Diffusion'ımız daha karmaşık sahneleri işleyebilir ve sentezlenen görüntü kalitesini büyük ölçüde iyileştirebilir. Son olarak, yöntemimizdeki görüntü üretim hesabının yeniden parametrelendirme yoluyla son derece verimli hale getirilebileceğini gösteriyoruz. Geleneksel AR yöntemlerinde, metinden görüntüye üretim süresi çıktı görüntü çözünürlüğüyle doğrusal olarak artar ve bu nedenle normal boyutlu görüntüler için bile oldukça zaman alıcıdır. VQ-Diffusion, kalite ve hız arasında daha iyi bir denge kurmamıza olanak tanır. Deneylerimiz, yeniden parametrelendirmeye sahip VQ-Diffusion modelinin, daha iyi bir görüntü kalitesi elde ederken geleneksel AR yöntemlerinden on beş kat daha hızlı olduğunu göstermektedir.

VQDiffusionScheduler

sınıf diffusers.VQDiffusionScheduler

< >

( num_vec_classes: intnum_train_timesteps: int = 100alpha_cum_start: float = 0.99999alpha_cum_end: float = 9e-06gamma_cum_start: float = 9e-06gamma_cum_end: float = 0.99999 )

Parametreler

  • num_vec_classes (int) — Gizli piksellerin vektör gömme sınıflarının sayısı. Maskelenmiş gizli piksel sınıfını da içerir.
  • num_train_timesteps (int, varsayılan 100) — Modelin eğitileceği difüzyon adım sayısı.
  • alpha_cum_start (float, varsayılan 0.99999) — Başlangıç kümülatif alfa değeri.
  • alpha_cum_end (float, varsayılan 0.000009) — Bitiş birikimli alfa değeri.
  • gamma_cum_start (float, varsayılan 0.000009) — Başlangıç kümülatif gamma değeri.
  • gamma_cum_end (float, varsayılan 0.99999) — Bitiş kümülatif gamma değeri.

Vektör kuantize difüzyon için bir zamanlayıcı.

Bu model SchedulerMixin ve ConfigMixin sınıflarından devralır. Kütüphanenin tüm zamanlayıcılar için yükleme ve kaydetme gibi genel yöntemleri uyguladığı üst sınıf belgelendirmesini kontrol edin.

apply_cumulative_transitions

< >

( q: Tensort: typing.Union[int, torch.Tensor] ) → torch.Tensor of shape (batch size, num classes, num latent pixels)

Parametreler

  • q (torch.Tensor, şekli (batch size, num classes - 1, num latent pixels)) — Maskelenmemiş gizli piksel sınıfları üzerindeki log olasılıklar.
  • t (int veya torch.Tensor) — Hangi kümülatif geçiş matrisinin kullanılacağını belirleyen zaman adımı.

Dönüş değeri

torch.Tensor, şekli (batch size, num classes, num latent pixels)

Mask sınıf olasılıkları eklenmiş geçişli log olasılıklar.

Bir zaman adımında kümülatif geçiş matrisini, maskelenmemiş sınıflar üzerindeki log olasılıklara uygulayın.

log_Q_t_transitioning_to_known_class

< >

( t: typing.Union[int, torch.Tensor]x_t: LongTensorlog_onehot_x_t: Tensorcumulative: bool ) → torch.Tensor

Parametreler

  • t (int veya torch.Tensor) — Hangi geçiş matrisinin kullanılacağını belirleyen zaman adımı.
  • x_t (torch.LongTensor, şekli (batch size, num latent pixels)) — t zamanında her latent pikselin sınıfları.
  • log_onehot_x_t (torch.Tensor, şekli (batch size, num classes, num latent pixels)) — x_t'nin log one-hot vektörleri.
  • cumulative (bool) — cumulative False ise, tek adımlı geçiş matrisi t-1->t kullanılır. cumulative True ise, kümülatif geçiş matrisi 0->t kullanılır.

Dönüş değeri

torch.Tensor

Döndürülen matrisin her sütunu, tam olasılık geçiş matrisinin log olasılıklarının bir satırıdır. cumulative True olduğunda tensörün şekli (batch size, num classes - 1, num latent pixels), aksi halde (batch size, num classes, num latent pixels) şeklindedir.

Kümülatif olduğunda, başlangıç gizli pikseli maskelemediği için tensör bir satır daha az içerir.

Burada:

  • q_n, n. gizli pikselin ileri süreci için olasılık dağılımıdır.
  • C_0, gizli piksel gömme sınıfıdır
  • C_k, maskelenmiş gizli pikselin sınıfıdır

kümülatif olmayan sonuç (logaritmalara yer verilmeden):

q_0(x_t | x_{t-1\} = C_0) ... q_n(x_t | x_{t-1\} = C_0) . . . . . . . . . q_0(x_t | x_{t-1\} = C_k) ... q_n(x_t | x_{t-1\} = C_k)`} lang="" wrap={false} />

kümülatif sonuç (logaritmalara yer verilmeden):

q_0_cumulative(x_t | x_0 = C_0) ... q_n_cumulative(x_t | x_0 = C_0) . . . . . . . . . q_0_cumulative(x_t | x_0 = C_{k-1\}) ... q_n_cumulative(x_t | x_0 = C_{k-1\})`} lang="" wrap={false} />

x_t içindeki her gizli piksel için (kümülatif veya kümülatif olmayan) geçiş matrisinin satırlarının log olasılıklarını hesaplar.

q_posterior

< >

( log_p_x_0: Tensorx_t: LongTensort: typing.Union[int, torch.Tensor] ) → torch.Tensor of shape (batch size, num classes, num latent pixels)

Parametreler

  • log_p_x_0 (torch.Tensor, şekli (batch size, num classes - 1, num latent pixels)) — Başlangıç gizli piksellerinin tahmin edilen sınıfları için log olasılıklar. Başlangıç gürültüsüz görüntü maskelenemeyeceğinden, maskelenmiş sınıf için bir tahmin içermez.
  • x_t (torch.LongTensor, şekli (batch size, num latent pixels)) — t zamanında her latent pikselin sınıfları.
  • t (int veya torch.Tensor) — Hangi geçiş matrisinin kullanılacağını belirleyen zaman adımı.

Dönüş değeri

torch.Tensor, şekli (batch size, num classes, num latent pixels)

t-1 zaman adımında görüntünün tahmin edilen sınıfları için log olasılıklar.

t-1 zaman adımında görüntünün tahmin edilen sınıfları için log olasılıkları hesaplar:

p(x_{t-1} | x_t) = sum( q(x_t | x_{t-1}) * q(x_{t-1} | x_0) * p(x_0) / q(x_t | x_0) )

set_timesteps

< >

( num_inference_steps: intdevice: typing.Union[str, torch.device, NoneType] = None )

Parametreler

  • num_inference_steps (int) — Önceden eğitilmiş bir modelle örnekler oluşturulurken kullanılan difüzyon adım sayısı.
  • device (str veya torch.device, isteğe bağlı) — Timestep'lerin ve difüzyon süreci parametrelerinin (alpha, beta, gamma) taşınacağı cihaz.

Difüzyon zinciri için kullanılan ayrık zaman adımlarını ayarlar (çalıştırılmadan önce çıkarım yapılmalıdır).

adım

< >

( model_output: Tensortimestep: typing.Union[int, torch.Tensor]sample: LongTensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → VQDiffusionSchedulerOutput or tuple[torch.LongTensor]

Parametreler

  • model_output (torch.Tensor, şekli (batch size, num classes - 1, num latent pixels)) — Başlangıç gizli piksellerinin tahmin edilen sınıfları için log olasılıklar. Başlangıç gürültüsüz görüntü maskelenemeyeceğinden, maskelenmiş sınıf için bir tahmin içermez.
  • timestep (int veya torch.Tensor) — Hangi geçiş matrislerinin kullanılacağını belirleyen zaman adımı.
  • sample (torch.LongTensor, şekli (batch size, num latent pixels)) — Mevcut zaman adımında her latent pikselin sınıfları.
  • generator (torch.Generator, isteğe bağlı) — Örnekleme yapılmadan önce p(x_{t-1} | x_t)'ye uygulanan gürültü için rastgele sayı üreteci.
  • return_dict (bool, varsayılan True) — Bir VQDiffusionSchedulerOutput veya tuple döndürülüp döndürülmediğini belirtir.

Dönüş değeri

VQDiffusionSchedulerOutput veya tuple[torch.LongTensor]

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

Önceki zaman adımındaki örneklemi, ters geçiş dağılımı ile tahmin edin. Dağılımın nasıl hesaplandığına dair daha fazla ayrıntı için q_posterior() işlevine bakın.

VQDiffusionSchedulerOutput

sınıf diffusers.schedulers.scheduling_vq_diffusion.VQDiffusionSchedulerOutput

< >

( prev_sample: LongTensor )

Parametreler

  • prev_sample (torch.LongTensor, şekli (batch size, num latent pixels)) — Önceki zaman adımında hesaplanan örnek. prev_sample, gürültü azaltma döngüsünde bir sonraki model girdisi olarak kullanılmalıdır.

Zamanlayıcının adım fonksiyonu çıktısı için çıktı sınıfı.

Update on GitHub