Diffusers documentation

DPMSolverMultistepInverse

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

DPMSolverMultistepInverse

DPMSolverMultistepInverse, Cheng Lu, Yuhao Zhou, Fan Bao, Jianfei Chen, Chongxuan Li ve Jun Zhu tarafından yazılan DPM-Solver: A Fast ODE Solver for Diffusion Probabilistic Model Sampling in Around 10 Steps ve DPM-Solver++: Fast Solver for Guided Sampling of Diffusion Probabilistic Models makalelerindeki tersine çevrilmiş zamanlayıcıdır.

Uygulama büyük ölçüde Null-text Inversion for Editing Real Images using Guided Diffusion Models makalesindeki DDIM tersine çevirme tanımına ve Xiang-cd/DiffEdit-stable-diffusion deposundaki DiffEdit latent tersine çevirmesinin notebook uygulamasına dayanmaktadır.

İpuçları

Imagen'den dinik eşikleme desteklenmektedir ve piksel uzayında çalışan difüzyon modelleri için dinamik eşikleme kullanmak üzere hem algorithm_type="dpmsolver++" hem de thresholding=True değerlerini ayarlayabilirsiniz. Bu eşikleme yöntemi, Stable Diffusion gibi gizli uzayda çalışan difüzyon modelleri için uygun değildir.

DPMSolverMultistepInverseScheduler

sınıf diffusers.DPMSolverMultistepInverseScheduler

< >

( num_train_timesteps: int = 1000beta_start: float = 0.0001beta_end: float = 0.02beta_schedule: typing.Literal['linear', 'scaled_linear', 'squaredcos_cap_v2'] = 'linear'trained_betas: numpy.ndarray | list[float] | None = Nonesolver_order: int = 2prediction_type: typing.Literal['epsilon', 'sample', 'v_prediction', 'flow_prediction'] = 'epsilon'thresholding: bool = Falsedynamic_thresholding_ratio: float = 0.995sample_max_value: float = 1.0algorithm_type: typing.Literal['dpmsolver', 'dpmsolver++', 'sde-dpmsolver', 'sde-dpmsolver++'] = 'dpmsolver++'solver_type: typing.Literal['midpoint', 'heun'] = 'midpoint'lower_order_final: bool = Trueeuler_at_final: bool = Falseuse_karras_sigmas: bool = Falseuse_exponential_sigmas: bool = Falseuse_beta_sigmas: bool = Falseuse_flow_sigmas: bool = Falseflow_shift: float = 1.0lambda_min_clipped: float = -infvariance_type: typing.Optional[typing.Literal['learned', 'learned_range']] = Nonetimestep_spacing: typing.Literal['linspace', 'leading', 'trailing'] = 'linspace'steps_offset: int = 0 )

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ıç beta değeri.
  • beta_end (float, varsayılan 0.02) — Son beta değeri.
  • beta_schedule (str, varsayılan "linear") — Beta zamanlaması, modelin adım atması için beta aralığını beta dizisine eşleyen bir haritadır. Seçenekler: linear, scaled_linear veya squaredcos_cap_v2.
  • trained_betas (np.ndarray, isteğe bağlı) — Betalar dizisini doğrudan yapılandırıcıya ileterek beta_start ve beta_end parametrelerini atlayın.
  • solver_order (int, varsayılan 2) — 1 veya 2 veya 3 olabilecek DPMSolver derecesi. Rehberli örneklemeler için solver_order=2, koşulsuz örneklemeler için solver_order=3 kullanılması önerilir.
  • prediction_type (str, 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).
  • thresholding (bool, varsayılan False) — “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ılan 0.995) — Dinik eşikleme yöntemi için oran. Yalnızca thresholding=True olduğunda geçerlidir.
  • sample_max_value (float, varsayılan 1.0) — Dinik eşikleme için eşik değeri. Yalnızca thresholding=True ve algorithm_type="dpmsolver++" olduğunda geçerlidir.
  • algorithm_type (str, varsayılan dpmsolver++) — Çözücü için algoritma türü; dpmsolver, dpmsolver++, sde-dpmsolver veya sde-dpmsolver++ olabilir. dpmsolver türü, DPMSolver makalesindeki algoritmaları, dpmsolver++ türü ise DPMSolver++ makalesindeki algoritmaları uygular. Stable Diffusion'daki gibi yönlendirilmiş örneklemeler için dpmsolver++ veya sde-dpmsolver++'nin solver_order=2 ile kullanılması önerilir.
  • solver_type (str, varsayılan midpoint) — İkinci mertebeden çözücü için çözücü türü; midpoint veya heun olabilir. Çözücü türü, özellikle adım sayısı az olduğunda örnek kalitesini hafifçe etkiler. midpoint çözücülerinin kullanılması önerilir.
  • lower_order_final (bool, varsayılan True) — Son adımlarda düşük dereceli çözücülerin kullanılıp kullanılmayacağı. Yalnızca 15'ten az çıkarım adımı için geçerlidir. Bu, özellikle 10 ve altı adımlar için DPMSolver'ın 15'ten az adımlarda örneklemesini kararlı hale getirebilir.
  • euler_at_final (bool, varsayılan False) — Son adımda Euler yönteminin kullanılıp kullanılmayacağı. Sayısal kararlılık ile detay zenginliği arasında bir denge noktasıdır. Bu, DPMSolver'ın SDE varyantının düşük sayıda çıkarım adımıyla örneklenmesini kararlı hale getirebilir, ancak bazen bulanıklığa yol açabilir.
  • use_karras_sigmas (bool, isteğe bağlı, varsayılan False) — Örnekleme sürecinde gürültü zamanlamasındaki adım boyutları için Karras sigmalarının kullanılıp kullanılmayacağını belirtir. True ise, sigmalar {σi} gürültü seviyeleri dizisine göre belirlenir.
  • use_exponential_sigmas (bool, isteğe bağlı, varsayılan False) — Ö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ılan False) — Ö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.
  • use_flow_sigmas (bool, isteğe bağlı, varsayılan False) — Örnekleme sürecinde gürültü zamanlamasında adım boyutları için akış sigmalarının kullanılıp kullanılmayacağı.
  • flow_shift (float, isteğe bağlı, varsayılan 1.0) — Akış kaydırma katsayısı. Yalnızca use_flow_sigmas=True olduğunda geçerlidir.
  • lambda_min_clipped (float, varsayılan -inf) — Sayısal kararlılık için lambda(t)'nin minimum değerinin kırpma eşiği. Bu, kosinüs (squaredcos_cap_v2) gürültü zamanlaması için kritiktir.
  • variance_type (str, isteğe bağlı) — Varians tahmin eden difüzyon modelleri için “learned” veya “learned_range” olarak ayarlayın. Ayarlanırsa, modelin çıktısı tahmini Gauss varyansını içerir.
  • timestep_spacing (str, varsayılan "linspace") — Adımları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ılan 0) — Bazı model ailelerinin gerektirdiği gibi, çıkarım adımlarına eklenen bir ofset.

DPMSolverMultistepInverseScheduler, DPMSolverMultistepScheduler'in ters zamanlayıcısıdı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

< >

( original_samples: Tensornoise: Tensortimesteps: IntTensor ) → torch.Tensor

Parametreler

  • original_samples (torch.Tensor) — Gürültü eklenecek orijinal örnekler.
  • noise (torch.Tensor) — Gürültü tensörü.
  • timesteps (torch.IntTensor) — Gürültü eklenmesi gereken zaman adımları.

Dönüş değeri

torch.Tensor

Gürültülü örnekler.

original_samples değerlerine, zamanlayıcının eşdeğer fonksiyonunu kullanarak gürültü ekleyin.

convert_model_output

< >

( model_output: Tensor*argssample: typing.Optional[torch.Tensor] = None**kwargs ) → torch.Tensor

Parametreler

  • model_output (torch.Tensor) — Öğrenen difüzyon modelinden gelen doğrudan çıktı.
  • sample (torch.Tensor, isteğe bağlı) — Difüzyon süreci tarafından oluşturulan bir örneğin mevcut bir örneği.

Dönüş değeri

torch.Tensor

Dönüştürülen model çıktısı.

Model çıktısını, DPMSolver/DPMSolver++ algoritmasının gerektirdiği ilgili tipe dönüştürün. DPM-Solver, gürültü tahmin modelinin bir integralini ayrıklaştırmak için tasarlanmıştır ve DPM-Solver++, veri tahmin modelinin bir integralini ayrıklaştırmak için tasarlanmıştır.

> Algoritma ve model tipi birbirinden bağımsızdır. Hem noise > prediction hem de data prediction modelleri için DPMSolver veya DPMSolver++ kullanabilirsiniz.

dpm_solver_first_order_update

< >

( model_output: Tensor*argssample: typing.Optional[torch.Tensor] = Nonenoise: typing.Optional[torch.Tensor] = None**kwargs ) → torch.Tensor

Parametreler

  • model_output (torch.Tensor) — Öğrenen difüzyon modelinden gelen doğrudan çıktı.
  • sample (torch.Tensor, isteğe bağlı) — Difüzyon süreci tarafından oluşturulan bir örneğin mevcut bir örneği.
  • noise (torch.Tensor, isteğe bağlı) — Gürültü tensörü.

Dönüş değeri

torch.Tensor

Önceki zaman adımındaki örnek tensör.

Birinci dereceden DPMSolver için tek adım (DDIM ile eşdeğer).

multistep_dpm_solver_second_order_update

< >

( model_output_list: list*argssample: typing.Optional[torch.Tensor] = Nonenoise: typing.Optional[torch.Tensor] = None**kwargs ) → torch.Tensor

Parametreler

  • model_output_list (list[torch.Tensor]) — Öğrenmiş difüzyon modelinin mevcut ve sonraki zaman adımlarındaki doğrudan çıktıları.
  • sample (torch.Tensor, isteğe bağlı) — Difüzyon süreci tarafından oluşturulan bir örneğin mevcut bir örneği.
  • noise (torch.Tensor, isteğe bağlı) — Stokastik (sde-*) çözücü varyantları tarafından kullanılan rastgele gürültü. algorithm_type bunlardan birine ayarlandığında zorunludur, aksi takdirde kullanılmaz.

Dönüş değeri

torch.Tensor

Önceki zaman adımındaki örnek tensör.

İkinci mertebeden çok adımlı DPMSolver için tek adım.

multistep_dpm_solver_third_order_update

< >

( model_output_list: list*argssample: typing.Optional[torch.Tensor] = Nonenoise: typing.Optional[torch.Tensor] = None**kwargs ) → torch.Tensor

Parametreler

  • model_output_list (list[torch.Tensor]) — Öğrenmiş difüzyon modelinin mevcut ve sonraki zaman adımlarındaki doğrudan çıktıları.
  • sample (torch.Tensor, isteğe bağlı) — Difüzyon süreci tarafından oluşturulan bir örneğin mevcut bir örneği.
  • noise (torch.Tensor, isteğe bağlı) — Gürültü tensörü.

Dönüş değeri

torch.Tensor

Önceki zaman adımındaki örnek tensör.

Üçüncü dereceden çok adımlı DPMSolver için tek adım.

scale_model_input

< >

( sample: Tensor*args**kwargs ) → torch.Tensor

Parametreler

  • sample (torch.Tensor) — Girdi örneği.

Dönüş değeri

torch.Tensor

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

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

< >

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

Parametreler

  • num_inference_steps (int) — Ö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.

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[int, torch.Tensor]sample: Tensorgenerator: typing.Optional[torch.Generator] = Nonevariance_noise: typing.Optional[torch.Tensor] = Nonereturn_dict: bool = True ) → SchedulerOutput 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.
  • variance_noise (torch.Tensor) — Varyans için gürültüyü doğrudan sağlayarak generator ile gürültü üretmenin alternatifi. CycleDiffusion gibi yöntemler için faydalıdır.
  • return_dict (bool) — SchedulerOutput veya tuple döndürülüp döndürülmemeye karar verir.

Dönüş değeri

SchedulerOutput veya tuple

return_dict True ise SchedulerOutput döndürülür, aksi halde ilk öğesi örnek tensörü olan bir tuple döndürülür.

Önceki zaman adımından örneklemeyi SDE'yi tersine çevirerek tahmin edin. Bu fonksiyon, örneklemeyi çok adımlı DPMSolver ile ilerletir.

SchedulerOutput

sınıf diffusers.schedulers.scheduling_utils.SchedulerOutput

< >

( prev_sample: Tensor )

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.

Bir zamanlayıcının step işlevinin çıktısı için temel sınıf.

Update on GitHub