Diffusers documentation
DDPMScheduler
DDPMScheduler
Jonathan Ho, Ajay Jain ve Pieter Abbeel tarafından önerilen Denoising Diffusion Probabilistic Models (DDPM), aynı adı taşıyan difüzyon tabanlı bir modeldir. 🤗 Diffusers kütüphanesi bağlamında DDPM, hem makaledeki ayrık gürültü azaltma zamanlayıcısına hem de hattına (pipeline) atıfta bulunur.
Makalenin özeti şudur:
Nonequilibrium termodinamiğinden ilham alan gizli değişkenli modeller sınıfı olan difüzyon olasılıksal modelleri kullanarak yüksek kaliteli görüntü sentez sonuçları sunuyoruz. En iyi sonuçlarımız, difüzyon olasılıksal modeller ile Langevin dinamiğine sahip gürültü giderme skoru eşleştirmesi arasındaki yeni bir bağlantıya göre tasarlanmış ağırlıklı varyasyonel sınır üzerinde eğitim alarak elde edilmektedir ve modellerimiz, otoregresif çözümlemenin bir genelleştirmesi olarak yorumlanabilen kademeli kayıplı sıkıştırma çözme şemasını doğal olarak kabul etmektedir. Koşulsuz CIFAR10 veri setinde, 9.46 Inception skoru ve alanın en iyisi (state-of-the-art) 3.17 FID skoru elde ediyoruz. 256x256 LSUN üzerinde, ProgressiveGAN'a benzer örnek kalitesi elde ediyoruz. Uygulamamız bu https URL adresinde mevcuttur.
DDPMScheduler
sınıf diffusers.DDPMScheduler
< source >( num_train_timesteps: int = 1000beta_start: float = 0.0001beta_end: float = 0.02beta_schedule: typing.Literal['linear', 'scaled_linear', 'squaredcos_cap_v2', 'sigmoid'] = 'linear'trained_betas: numpy.ndarray | list[float] | None = Nonevariance_type: typing.Literal['fixed_small', 'fixed_small_log', 'fixed_large', 'fixed_large_log', 'learned', 'learned_range'] = 'fixed_small'clip_sample: bool = Trueprediction_type: typing.Literal['epsilon', 'sample', 'v_prediction'] = 'epsilon'thresholding: bool = Falsedynamic_thresholding_ratio: float = 0.995clip_sample_range: float = 1.0sample_max_value: float = 1.0timestep_spacing: typing.Literal['linspace', 'leading', 'trailing'] = 'leading'steps_offset: int = 0rescale_betas_zero_snr: bool = False )
Parametreler
- num_train_timesteps (
int, varsayılan1000) — Modelin eğitileceği difüzyon adım sayısı. - beta_start (
float, varsayılan0.0001) — Çıkarımın başlangıçbetadeğeri. - beta_end (
float, varsayılan0.02) — Sonbetadeğeri. - beta_schedule (
"linear","scaled_linear","squaredcos_cap_v2"veya"sigmoid", varsayılan"linear") — Beta zamanlaması, modelin adım atması için beta aralığını beta dizisine eşleyen bir haritalamadır. - trained_betas (
np.ndarray, isteğe bağlı) —beta_startvebeta_endkullanmadan doğrudan yapılandırıcıya iletilecek betalar dizisi. - variance_type (
"fixed_small","fixed_small_log","fixed_large","fixed_large_log","learned"veya"learned_range", varsayılan"fixed_small") — Gürültü eklenirken, gürültüden arındırılmış örnek için varyansı kırpın. - clip_sample (
bool, varsayılanTrue) — Sayısal kararlılık için tahmin edilen örneği kırpın. - clip_sample_range (
float, varsayılan1.0) — Örnek kırpma için maksimum büyüklük. Yalnızcaclip_sample=Trueolduğunda geçerlidir. - prediction_type (
"epsilon","sample", or"v_prediction", defaults to"epsilon") — Prediction type of the scheduler function; can beepsilon(predicts the noise of the diffusion process),sample(directly predicts the noisy sample) orv_prediction` (see section 2.4 of Imagen Video paper). - thresholding (
bool, varsayılanFalse) — “Dinamik eşikleme” yönteminin kullanılıp kullanılmayacağı. Bu, Stable Diffusion gibi gizli uzay difüzyon modelleri için uygun değildir. - dynamic_thresholding_ratio (
float, varsayılan0.995) — Dinik eşikleme yöntemi için oran. Yalnızcathresholding=Trueolduğunda geçerlidir. - sample_max_value (
float, varsayılan1.0) — Dinik eşikleme için eşik değeri. Yalnızcathresholding=Trueolduğunda geçerlidir. - timestep_spacing (
"linspace","leading"veya"trailing", varsayılan"leading") — Zaman adımlarının ölçeklendirilme biçimi. Daha fazla bilgi için Common Diffusion Noise Schedules and Sample Steps are Flawed makalesindeki Tablo 2'ye bakın. - steps_offset (
int, varsayılan0) — Bazı model ailelerinin gerektirdiği gibi, çıkarım adımlarına eklenen bir ofset. - rescale_betas_zero_snr (
bool, varsayılanFalse) — Betalara sıfır son SNR değerine sahip olacak şekilde yeniden ölçeklendirme uygulanıp uygulanmayacağı. Bu, modelin orta parlaklıktaki örneklerle sınırlı kalmak yerine çok parlak ve çok karanlık örnekler üretmesini sağlar.--offset_noiseile gevşek bir şekilde ilişkilidir.
DDPMScheduler, gürültü azaltma skoru eşleştirmesi ile Langevin dinamikleri örneklemesi arasındaki bağlantıları araştırır.
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.
add_noise
< source >( original_samples: Tensornoise: Tensortimesteps: IntTensor ) → torch.Tensor
Her zaman adımındaki gürültü büyüklüğüne göre orijinal örneklerin gürültü ekleyin (bu, ileri difüzyon sürecidir).
get_velocity
< source >( sample: Tensornoise: Tensortimesteps: IntTensor ) → torch.Tensor
Hız formülüne göre örnek ve gürültüden hız tahminini hesaplayın.
önceki_adım
< source >( timestep: int ) → int or torch.Tensor
Difüzyon zincirindeki bir önceki zaman adımını hesaplayın.
scale_model_input
< source >( sample: Tensortimestep: int | None = None ) → torch.Tensor
Gürültüden arındırma modelinin girdisinin mevcut zaman adımına bağlı olarak ölçeklenmesi gereken zamanlayıcılarla değiştirilebilirliği sağlar.
set_timesteps
< source >( num_inference_steps: int = Nonedevice: typing.Union[str, torch.device] = Nonetimesteps: list[int] | None = None )
Parametreler
- num_inference_steps (
int, isteğe bağlı) — Önceden eğitilmiş bir modelle örnekler oluşturulurken kullanılan difüzyon adım sayısı. Kullanılırsa,timestepsNoneolmalıdır. - device (
strveyatorch.device, isteğe bağlı) — Adımların (timesteps) taşınacağı cihaz.Noneise adımlar taşınmaz. - timesteps (
list[int], isteğe bağlı) — Timesteps arasında keyfi aralıklara destek sağlamak için kullanılan özel timesteps.Noneise, timesteps arasında eşit aralıklı varsayılan timestep aralıklandırma stratejisi kullanılır.timestepsgeçirilirse,num_inference_stepsNoneolmalıdır.
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
< source >( model_output: Tensortimestep: intsample: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → DDPMSchedulerOutput or tuple
Parametreler
- model_output (
torch.Tensor) — Öğrenen difüzyon modelinden gelen doğrudan çıktı. - timestep (
int) — Difüzyon zincirindeki mevcut ayrık zaman adımı. - sample (
torch.Tensor) — Difüzyon süreci tarafından oluşturulan bir örneğin mevcut bir örneği. - generator (
torch.Generator, isteğe bağlı) — Rastgele sayı üreteci. - return_dict (
bool, varsayılanTrue) — DDPMSchedulerOutput veyatupledöndürülüp döndürülmemeye karar verir.
Dönüş değeri
DDPMSchedulerOutput veya tuple
return_dict True ise DDPMSchedulerOutput 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 örneği SDE'yi tersine çevirerek tahmin edin. Bu işlev, öğrenilen model çıktılarını (en sık tahmin edilen gürültüyü) kullanarak difüzyon sürecini ilerletir.
DDPMSchedulerOutput
sınıf diffusers.schedulers.scheduling_ddpm.DDPMSchedulerOutput
< source >( prev_sample: Tensorpred_original_sample: typing.Optional[torch.Tensor] = None )
Parametreler
- prev_sample (görseller için
torch.Tensor, şekli(batch_size, num_channels, height, width)) — Önceki zaman adımının hesaplanan örneği(x_{t-1}).prev_sample, gürültü azaltma döngüsünde bir sonraki model girdisi olarak kullanılmalıdır. - pred_original_sample (görseller için
(batch_size, num_channels, height, width)biçimindetorch.Tensor) — Mevcut zaman adımındaki model çıktısına dayalı olarak tahmin edilen gürültüsü azaltılmış örnek(x_{0}).pred_original_sample, ilerlemeyi önizlemek veya yönlendirme için kullanılabilir.
Zamanlayıcının step işlevi çıktısı için çıktı sınıfı.