Diffusers documentation
EulerDiscreteScheduler
EulerDiscreteScheduler
Euler zamanlayıcısı (Algoritma 2), Karras ve ark. tarafından kaleme alınan Elucidating the Design Space of Diffusion-Based Generative Models makalesinden alınmıştır. Bu, genellikle 20-30 adımda iyi çıktılar üretebilen hızlı bir zamanlayıcıdır. Zamanlayıcı, Katherine Crowson tarafından geliştirilen orijinal k-diffusion uygulamasına dayanmaktadır.
EulerDiscreteScheduler
sınıf diffusers.EulerDiscreteScheduler
< source >( num_train_timesteps: int = 1000beta_start: float = 0.0001beta_end: float = 0.02beta_schedule: str = 'linear'trained_betas: numpy.ndarray | list[float] | None = Noneprediction_type: str = 'epsilon'interpolation_type: str = 'linear'use_karras_sigmas: bool | None = Falseuse_exponential_sigmas: bool | None = Falseuse_beta_sigmas: bool | None = Falsesigma_min: float | None = Nonesigma_max: float | None = Nonetimestep_spacing: typing.Literal['linspace', 'leading', 'trailing'] = 'linspace'timestep_type: typing.Literal['discrete', 'continuous'] = 'discrete'steps_offset: int = 0rescale_betas_zero_snr: bool = Falsefinal_sigmas_type: typing.Literal['zero', 'sigma_min'] = 'zero' )
Parametreler
- num_train_timesteps (
int, varsayılan 1000) — Modelin eğitileceği difüzyon adım sayısı. - beta_start (
float, varsayılan 0.0001) — Çıkarımın başlangıçbetadeğeri. - beta_end (
float, varsayılan 0.02) — Sonbetadeğeri. - beta_schedule (
Literal["linear", "scaled_linear", "squaredcos_cap_v2"], varsayılan"linear") — Beta zamanlaması, modelin adım atması için beta aralığını beta dizisine eşleyen bir haritadır."linear","scaled_linear"veya"squaredcos_cap_v2"seçeneklerinden birini seçin. - trained_betas (
np.ndarray, isteğe bağlı) — Betalar dizisini doğrudan yapılandırıcıya ileterekbeta_startvebeta_endparametrelerini atlayın. - prediction_type (
Literal["epsilon", "sample", "v_prediction"], defaults to"epsilon", optional) — Prediction type of the scheduler function; can be"epsilon"(predicts the noise of the diffusion process),"sample"(directly predicts the noisy sample) or“v_prediction”` (see section 2.4 of Imagen Video paper). - interpolation_type (
Literal["linear", "log_linear"], varsayılan"linear", isteğe bağlı) — Zamanlayıcının gürültü azaltma adımları için ara sigmaları hesaplamak üzere kullanılacak interpolasyon türü."linear"veya"log_linear"değerlerinden biri olmalıdır. - use_karras_sigmas (
bool, isteğe bağlı, varsayılanFalse) — Örnekleme sürecinde gürültü zamanlamasındaki adım boyutları için Karras sigmalarının kullanılıp kullanılmayacağını belirtir.Trueise, sigmalar {σi} gürültü seviyeleri dizisine göre belirlenir. - use_exponential_sigmas (
bool, isteğe bağlı, varsayılanFalse) — Örnekleme sürecindeki gürültü zamanlamasında adım boyutları için üstel sigmaların kullanılıp kullanılmayacağı. - use_beta_sigmas (
bool, isteğe bağlı, varsayılanFalse) — Örnekleme sürecindeki gürültü zamanlamasında adım boyutları için beta sigmaların kullanılıp kullanılmayacağı. Daha fazla bilgi için Beta Sampling is All You Need makalesine bakın. - sigma_min (
float, isteğe bağlı) — Gürültü zamanlaması için minimum sigma değeri. Verilmezse, zamanlamanın son sigma değeri varsayılan olarak kullanılır. - sigma_max (
float, isteğe bağlı) — Gürültü zamanlaması için maksimum sigma değeri. Verilmezse, zamanlamadaki ilk sigma değeri varsayılan olarak kullanılır. - timestep_spacing (
Literal["linspace", "leading", "trailing"], varsayılan"linspace") — 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. - timestep_type (
Literal["discrete", "continuous"], varsayılan"discrete") — Kullanılacak timestep türü."discrete"veya"continuous"olabilir. - steps_offset (
int, varsayılan 0) — 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. - final_sigmas_type (
Literal["zero", "sigma_min"], varsayılan"zero") — Örnekleme sürecindeki gürültü zamanlaması için sonsigmadeğeri."sigma_min"ise, son sigma, eğitim zamanlamasındaki son sigma ile aynıdır."zero"ise, son sigma 0 olarak ayarlanır.
Euler 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.
add_noise
< source >( original_samples: Tensornoise: Tensortimesteps: Tensor ) → torch.Tensor
Parametreler
- original_samples (
torch.Tensor) — Gürültü eklenecek orijinal örnekler. - noise (
torch.Tensor) — Orijinal örneklerin üzerine eklenecek gürültü tensörü. - timesteps (
torch.Tensor) — Gürültü eklenmesi gereken zaman adımları, zaman çizelgesinden gürültü seviyesini belirler.
Dönüş değeri
torch.Tensor
Zaman adımı zamanlamasına göre ölçeklendirilen eklenen gürültüye sahip gürültülü örnekler.
Belirtilen zaman adımlarındaki gürültü planına göre orijinal örneklerin gürültü ekleyin.
get_velocity
< source >( sample: Tensornoise: Tensortimesteps: Tensor ) → torch.Tensor
Parametreler
- sample (
torch.Tensor) — Hızın hesaplanacağı giriş örneği. - noise (
torch.Tensor) — Örneğe karşılık gelen gürültü tensörü. - timesteps (
torch.Tensor) — Hızın hesaplanacağı zaman adımları.
Dönüş değeri
torch.Tensor
sqrt(alpha_prod) * noise - sqrt(1 - alpha_prod) * sample olarak hesaplanan hız tahmini.
Belirtilen zaman adımlarında, verilen örnek ve gürültü için hız tahminini hesaplayın.
Bu yöntem, örnek ve gürültünün doğrusal bir kombinasyonunu tahmin eden v-tahmin modellerinde kullanılan hız tahminini uygular.
index_for_timestep
< source >( timestep: typing.Union[float, torch.Tensor]schedule_timesteps: typing.Optional[torch.Tensor] = None ) → int
Parametreler
- timestep (
floatveyatorch.Tensor) — Zamanlamada (schedule) bulunacak timestep değeri. - schedule_timesteps (
torch.Tensor, isteğe bağlı) — Aranacak timestep zaman çizelgesi.Noneiseself.timestepskullanılır.
Dönüş değeri
int
Zaman adımı planındaki zaman adımının indeksi. Çok eşleşme varsa, planın ortasından başlanırken bir sigmanın atlanmaması için (örneğin, görüntüden görüntüye) ikinci indeksi döndürür.
Verilen zaman adımının zaman adımı zaman çizelgesindeki indeksini bulun.
scale_model_input
< source >( sample: Tensortimestep: typing.Union[float, torch.Tensor] ) → torch.Tensor
Gürültü azaltma modelinin girdisinin, mevcut zaman adımına bağlı olarak ölçeklenmesi gereken zamanlayıcılarla değiştirilebilirliği sağlar. Euler algoritmasıyla eşleşmesi için gürültü azaltma modelinin girdisini (sigma**2 + 1) ** 0.5 ile ölçekler.
set_begin_index
< source >( begin_index: int = 0 )
Zamanlayıcının başlangıç indeksini ayarlar. Bu işlev, çıkarım (inference) öncesinde pipeline'dan çalıştırılmalıdır.
set_timesteps
< source >( num_inference_steps: int = Nonedevice: typing.Union[str, torch.device] = Nonetimesteps: list[int] | None = Nonesigmas: list[float] | 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ı.Noneisetimestepsveyasigmassağlanmalı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ı) — Keyfi timestep zaman çizelgelerini desteklemek için kullanılan özel timestep'ler.Noneise, timestep'lertimestep_spacingözniteliğine dayalı olarak oluşturulur.timestepsgeçirilirse,num_inference_stepsvesigmasNoneolmalıdır vetimestep_spacingözniteliği yok sayılır. - sigmas (
list[float], isteğe bağlı) — Keyfi zaman adımları zaman çizelgesini desteklemek için kullanılan özel sigmalar.Noneise, zaman adımları ve sigmalar ilgili zamanlayıcı özniteliklerine göre oluşturulur.sigmasgeçirilirse,num_inference_stepsvetimestepsNoneolmalıdır ve zaman adımları özel sigmalar zaman çizelgesine göre oluşturulur.
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: typing.Union[float, torch.Tensor]sample: Tensors_churn: float = 0.0s_tmin: float = 0.0s_tmax: float = infs_noise: float = 1.0generator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → EulerDiscreteSchedulerOutput or tuple
Parametreler
- model_output (
torch.Tensor) — Öğrenen difüzyon modelinden gelen doğrudan çıktı. - timestep (
floatveyatorch.Tensor) — 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. - s_churn (
float, isteğe bağlı, varsayılan0.0) — Örnekleme sırasında eklenen gürültü miktarını kontrol eden stokastisite parametresi. Daha yüksek değerler rastgeleliği artırır. - s_tmin (
float, isteğe bağlı, varsayılan0.0) — Stokastiklik uygulanacak en düşük zaman adımı eşiği. Sadece bu değerin üzerindeki zaman adımlarına gürültü eklenir. - s_tmax (
float, isteğe bağlı, varsayılaninf) — Stokastisitenin uygulanması için maksimum zaman adımı eşiği. Sadece bu değerin altındaki zaman adımlarına gürültü eklenir. - s_noise (
float, isteğe bağlı, varsayılan1.0) — Örneğe eklenen gürültünün ölçekleme faktörü. - generator (
torch.Generator, isteğe bağlı) — Tekrarlanabilir örneklemeler için rastgele sayı üreteci. - return_dict (
bool, isteğe bağlı, varsayılanTrue) — Bir EulerDiscreteSchedulerOutput veya tuple döndürülüp döndürülmemeye karar verir.
Dönüş değeri
EulerDiscreteSchedulerOutput veya tuple
return_dict True ise EulerDiscreteSchedulerOutput döndürülür, aksi takdirde bir tuple döndürülür; bu tuple'ın ilk öğesi örnek tensörü, ikinci öğesi ise tahmin edilen orijinal örnektir.
Ö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.
EulerDiscreteSchedulerOutput
sınıf diffusers.schedulers.scheduling_euler_discrete.EulerDiscreteSchedulerOutput
< 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ı.