Diffusers documentation
EDMEulerScheduler
EDMEulerScheduler
Karras ve ark. tarafından kaleme alınan Elucidating the Design Space of Diffusion-Based Generative Models makalesindeki Euler zamanlayıcısının (Algoritma 2) Karras formülasyonu. 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.
EDMEulerScheduler
sınıf diffusers.EDMEulerScheduler
< source >( sigma_min: float = 0.002sigma_max: float = 80.0sigma_data: float = 0.5sigma_schedule: typing.Literal['karras', 'exponential'] = 'karras'num_train_timesteps: int = 1000prediction_type: typing.Literal['epsilon', 'v_prediction'] = 'epsilon'rho: float = 7.0final_sigmas_type: typing.Literal['zero', 'sigma_min'] = 'zero' )
Parametreler
- sigma_min (
float, isteğe bağlı, varsayılan0.002) — Sigma zamanlamasındaki minimum gürültü büyüklüğü. Bu değer EDM makalesinde [1] 0.002 olarak ayarlanmıştır; makul aralık [0, 10]'dur. - sigma_max (
float, isteğe bağlı, varsayılan80.0) — Sigma zamanlamasındaki maksimum gürültü büyüklüğü. Bu değer EDM makalesinde [1] 80.0 olarak ayarlanmıştır; makul aralık [0.2, 80.0]'dir. - sigma_data (
float, isteğe bağlı, varsayılan0.5) — Veri dağılımının standart sapması. Bu değer, EDM makalesinde [1] 0.5 olarak ayarlanmıştır. - sigma_schedule (
Literal["karras", "exponential"], isteğe bağlı, varsayılan"karras") —sigmasdeğerlerini hesaplamak için kullanılacak sigma zamanlaması. Varsayılan olarak, EDM makalesinde tanıtılan zamanlamayı kullanıyoruz (https://huggingface.co/papers/2206.00364)."exponential"zamanlaması bu modele dahil edildi: https://huggingface.co/stabilityai/cosxl. - num_train_timesteps (
int, isteğe bağlı, varsayılan1000) — Modelin eğitileceği difüzyon adım sayısı. - prediction_type (
Literal["epsilon", "v_prediction"], isteğe bağlı, varsayılan"epsilon") — Zamanlayıcı işlevinin tahmin türü."epsilon", difüzyon sürecinin gürültüsünü tahmin eder ve"v_prediction"(Imagen Video makalesinin 2.4 bölümüne bakın). - rho (
float, isteğe bağlı, varsayılan7.0) — Karras sigma zamanlamasını hesaplamak için kullanılan rho parametresi, EDM makalesinde [1] 7.0 olarak ayarlanmıştır. - final_sigmas_type (
Literal["zero", "sigma_min"], isteğe bağlı, varsayılan"zero") — Örnekleme süreci sırasında 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.
Karras et al. 2022 [1]'de sunulan EDM formülasyonunda Euler zamanlayıcısını uygular.
[1] Karras, Tero, ve diğerleri. “Elucidating the Design Space of Diffusion-Based Generative Models.” https://huggingface.co/papers/2206.00364
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.
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.
precondition_inputs
< source >( sample: Tensorsigma: typing.Union[float, torch.Tensor] ) → torch.Tensor
Giriş örneğini, EDM formülasyonuna göre ölçekleyerek ön koşullandırın.
precondition_noise
< source >( sigma: typing.Union[float, torch.Tensor] ) → torch.Tensor
Gürültü seviyesini, logaritmik bir dönüşüm uygulayarak ön koşullandırın.
precondition_outputs
< source >( sample: Tensormodel_output: Tensorsigma: typing.Union[float, torch.Tensor] ) → torch.Tensor
Parametreler
- sample (
torch.Tensor) — Girdi örnek tensörü. - model_output (
torch.Tensor) — Öğrenen difüzyon modelinden gelen doğrudan çıktı. - sigma (
floatveyatorch.Tensor) — Güncel sigma (gürültü seviyesi) değeri.
Dönüş değeri
torch.Tensor
Atlamalı bağlantı ve çıktı ölçeklendirmesini birleştirerek hesaplanan gürültüden arındırılmış örnek.
Model çıktılarını EDM formülasyonuna göre ön koşullandırın.
scale_model_input
< source >( sample: Tensortimestep: typing.Union[float, torch.Tensor] ) → torch.Tensor
Euler algoritmasıyla eşleşmesi için gürültü azaltma modelinin girdisini ölçeklendirir. Mevcut zaman adımına bağlı olarak gürültü azaltma modelinin girdisini ölçeklendirmesi gereken zamanlayıcılarla değiştirilebilirliği sağlar.
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] = Nonesigmas: typing.Union[list[float], torch.Tensor, NoneType] = 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ı. - device (
strveyatorch.device, isteğe bağlı) — Adımların (timesteps) taşınacağı cihaz.Noneise adımlar taşınmaz. - sigmas (
torch.Tensor | list[float], isteğe bağlı) — Gürültü azaltma süreci için kullanılacak özel sigmalar. Tanımlanmamışsa,num_inference_stepsgeçirildiğinde varsayılan davranış kullanılı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: 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 = Truepred_original_sample: typing.Optional[torch.Tensor] = None ) → EDMEulerSchedulerOutput 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) — Her adımda eklenecek rastgelelik miktarı. Daha yüksek değerler daha fazla gürültü ekler. - s_tmin (
float, isteğe bağlı, varsayılan0.0) — Gürültü eklenmemesi gereken minimum sigma eşiği. - s_tmax (
float, isteğe bağlı, varsayılanfloat("inf")) — Gürültü eklenmemesi için üst sınır olan maksimum sigma eşiği. - 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ı) — Tekrarlanabilirlik için rastgele sayı üreteci. - return_dict (
bool, isteğe bağlı, varsayılanTrue) — Bir EDMEulerSchedulerOutput veya tuple döndürülüp döndürülmemeye karar verir. - pred_original_sample (
torch.Tensor, isteğe bağlı) — Önceki adımdan elde edilen tahmini gürültüsüz örnek. Sağlanırsa yeniden hesaplama atlanır.
Dönüş değeri
EDMEulerSchedulerOutput veya tuple
return_dict True ise bir EDMEulerSchedulerOutput döndürülür, aksi takdirde bir tuple döndürülür; bu tuple'ın ilk öğesi önceki örnek tensörü, ikinci öğesi ise tahmin edilen orijinal örnek tensörüdü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.
EDMEulerSchedulerOutput
sınıf diffusers.schedulers.scheduling_edm_euler.EDMEulerSchedulerOutput
< 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ı.