Buckets:

mishig's picture
|
download
raw
11.7 kB

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[[diffusers.VQDiffusionScheduler]]

diffusers.VQDiffusionScheduler[[diffusers.VQDiffusionScheduler]]

diffusers.VQDiffusionScheduler(num_vec_classes: int, num_train_timesteps: int = 100, alpha_cum_start: float = 0.99999, alpha_cum_end: float = 9e-06, gamma_cum_start: float = 9e-06, gamma_cum_end: float = 0.99999)

Kaynak

Parametreler:

num_vec_classes (int) : Gizli piksellerin vektör gömmelemelerinin sınıf 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[[diffusers.VQDiffusionScheduler.apply_cumulative_transitions]]

apply_cumulative_transitions(q: Tensor, t: typing.Union[int, torch.Tensor])

Kaynak

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üş: 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[[diffusers.VQDiffusionScheduler.log_Q_t_transitioning_to_known_class]]

log_Q_t_transitioning_to_known_class(t: typing.Union[int, torch.Tensor], x_t: LongTensor, log_onehot_x_t: Tensor, cumulative: bool)

Kaynak

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üş: 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)'tir.

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)

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})

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[[diffusers.VQDiffusionScheduler.q_posterior]]

q_posterior(log_p_x_0: Tensor, x_t: LongTensor, t: typing.Union[int, torch.Tensor])

Kaynak

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üş: 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[[diffusers.VQDiffusionScheduler.set_timesteps]]

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

Kaynak

Parametreler:

num_inference_steps (int) : Ön eğitilmiş bir modelle örnekler oluşturulurken kullanılan difüzyon adım sayısı.

device (str veya torch.device, opsiyonel) : 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[[diffusers.VQDiffusionScheduler.step]]

step(model_output: Tensor, timestep: typing.Union[int, torch.Tensor], sample: LongTensor, generator: typing.Optional[torch.Generator] = None, return_dict: bool = True)

Kaynak

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ı) : p(x_{t-1} | x_t)'den örneklenmeden önce gürültüye uygulanan rastgele sayı üreteci.

return_dict (bool, varsayılan True) : VQDiffusionSchedulerOutput mu yoksa tuple mu döndürüleceğini belirtir.

Dönüş: 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[[diffusers.schedulers.scheduling_vq_diffusion.VQDiffusionSchedulerOutput]]

diffusers.schedulers.scheduling_vq_diffusion.VQDiffusionSchedulerOutput[[diffusers.schedulers.scheduling_vq_diffusion.VQDiffusionSchedulerOutput]]

diffusers.schedulers.scheduling_vq_diffusion.VQDiffusionSchedulerOutput(prev_sample: LongTensor)

Kaynak

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ı.

Xet Storage Details

Size:
11.7 kB
·
Xet hash:
420fd252dbc3ef0ac62890adfcb69d2c0d4d0944a84902e82eeae96f874833e6

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