Diffusers documentation

EDMEulerScheduler

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

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

< >

( 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ılan 0.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ılan 80.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ılan 0.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") — sigmas değ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ılan 1000) — 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ılan 7.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 son sigma değ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

< >

( 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

< >

( timestep: typing.Union[float, torch.Tensor]schedule_timesteps: typing.Optional[torch.Tensor] = None ) → int

Parametreler

  • timestep (float veya torch.Tensor) — Zamanlamada (schedule) bulunacak timestep değeri.
  • schedule_timesteps (torch.Tensor, isteğe bağlı) — Aranacak timestep zaman çizelgesi. None ise self.timesteps kullanı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

< >

( sample: Tensorsigma: typing.Union[float, torch.Tensor] ) → torch.Tensor

Parametreler

  • sample (torch.Tensor) — Ön koşullandırılacak girdi örnek tensörü.
  • sigma (float veya torch.Tensor) — Güncel sigma (gürültü seviyesi) değeri.

Dönüş değeri

torch.Tensor

Ölçeklendirilmiş giriş örneği.

Giriş örneğini, EDM formülasyonuna göre ölçekleyerek ön koşullandırın.

precondition_noise

< >

( sigma: typing.Union[float, torch.Tensor] ) → torch.Tensor

Parametreler

  • sigma (float veya torch.Tensor) — Ön koşullandırılacak sigma (gürültü seviyesi) değeri.

Dönüş değeri

torch.Tensor

0.25 * log(sigma) olarak hesaplanan ön koşullandırılmış gürültü değeri.

Gürültü seviyesini, logaritmik bir dönüşüm uygulayarak ön koşullandırın.

precondition_outputs

< >

( 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 (float veya torch.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

< >

( sample: Tensortimestep: typing.Union[float, torch.Tensor] ) → torch.Tensor

Parametreler

  • sample (torch.Tensor) — Girdi örnek tensörü.
  • timestep (float veya torch.Tensor) — Difüzyon zincirindeki mevcut zaman adımı.

Dönüş değeri

torch.Tensor

Ölçeklendirilmiş bir girdi örneği.

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

< >

( begin_index: int = 0 )

Parametreler

  • begin_index (int, varsayılan 0) — Zamanlayıcı için başlangıç indeksi.

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

< >

( 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 (str veya torch.device, isteğe bağlı) — Adımların (timesteps) taşınacağı cihaz. None ise 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_steps geç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

< >

( 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 (float veya torch.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ılan 0.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ılan 0.0) — Gürültü eklenmemesi gereken minimum sigma eşiği.
  • s_tmax (float, isteğe bağlı, varsayılan float("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ılan 1.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ılan True) — 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

< >

( 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çiminde torch.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ı.

Update on GitHub