Diffusers documentation

RePaintScheduler

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

RePaintScheduler

RePaintScheduler, aşırı maskelerle denetimsiz inpainting için DDPM tabanlı bir inpainting zamanlayıcısıdır. RePaintPipeline ile birlikte kullanılmak üzere tasarlanmıştır ve Andreas Lugmayr ve diğerleri tarafından yazılan RePaint: Inpainting using Denoising Diffusion Probabilistic Models makalesine dayanmaktadır.

Makalenin özeti şudur:

Özgür biçimli inpainting, rastgele bir ikili maske ile belirlenen bölgelere bir görselde yeni içerik ekleme görevidir. Mevcut çoğu yaklaşım, belirli bir maske dağılımı için eğitim alır; bu da genelleyebilme yeteneklerini, görülmemiş maske türlerine sınırlar. Ayrıca, piksel bazlı ve algısal kayıplar ile eğitim, eksik alanlara doğru basit doku uzantılarına yol açar ve anlamlı bir üretim yerine sonuçlanır. Bu çalışmada, aşırı maskelere bile uygulanabilir olan, Gürültü Azaltma Difüzyon Olasılıksal Modeli (DDPM) tabanlı bir inpainting yaklaşımı olan RePaint'i öneriyoruz. Üretici öncül olarak önceden eğitilmiş koşulsuz bir DDPM kullanıyoruz. Üretim sürecini koşullandırmak için, yalnızca ters difüzyon yinelemelerini, maskelenmemiş bölgeleri verilen görsel bilgisiyle örnekleyerek değiştiriyoruz. Bu teknik, orijinal DDPM ağını kendisini değiştirmediği veya koşullandırmadığı için, model herhangi bir inpainting biçimi için yüksek kaliteli ve çeşitli çıktı görselleri üretir. Yöntemimizi, standart ve aşırı maskeler kullanarak hem yüzler hem de genel amaçlı görsel inpainting için doğruluyoruz. RePaint, altı maske dağılımından en az beşinde, son teknoloji Otoregresif ve GAN yaklaşımlarını geride bırakır. GitHub Deposu: this http URL.

Orijinal uygulama andreas128/RePaint adresinde bulunabilir.

RePaintScheduler

sınıf diffusers.RePaintScheduler

< >

( num_train_timesteps: int = 1000beta_start: float = 0.0001beta_end: float = 0.02beta_schedule: str = 'linear'eta: float = 0.0trained_betas: numpy.ndarray | None = Noneclip_sample: bool = True )

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, squaredcos_cap_v2 veya sigmoid.
  • eta (float, varsayılan 0.0) — Bir difüzyon adımında eklenen gürültünün ağırlığı. 0.0 değeri DDIM'e, 1.0 değeri ise DDPM'ye karşılık gelir.
  • trained_betas (np.ndarray, optional) — Pass an array of betas directly to the constructor to bypass beta_start and beta_end.
  • clip_sample (bool, varsayılan True) — Sayısal kararlılık için tahmin edilen örneği -1 ile 1 arasında kırpın.

RePaintScheduler, verilen bir maske içinde DDPM inpainting için bir zamanlayıcı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 )

Parametreler

  • original_samples (torch.Tensor) — Gürültü eklenecek orijinal örnekler.
  • noise (torch.Tensor) — Örneklere eklenecek gürültü.
  • timesteps (torch.IntTensor) — Her örnek için gürültü seviyesini belirleyecek olan zaman adımları.

Yükseltilen

NotImplementedError

RePaint eğitimi için gürültü eklemenin bu zamanlayıcı tarafından desteklenmediğini belirtin.

scale_model_input

< >

( sample: Tensortimestep: int | None = None ) → torch.Tensor

Parametreler

  • sample (torch.Tensor) — Girdi örneği.
  • timestep (int, isteğe bağlı) — Difüzyon zincirindeki mevcut zaman adımı.

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: intjump_length: int = 10jump_n_sample: int = 10device: 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ı.
  • jump_length (int, varsayılan 10) — Tek bir sıçrama için zaman içinde geriye gitmeden önce ileri doğru atılan adım sayısı (RePaint makalesindeki “j”). Makaledeki Şekil 9 ve 10'a bakın.
  • jump_n_sample (int, varsayılan 10) — Belirli bir zaman örneği için ileri zaman sıçraması yapılacak kez sayısı. Makaledeki 9. ve 10. Şekillere bakın.
  • 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: intsample: Tensororiginal_image: Tensormask: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → RePaintSchedulerOutput or tuple[torch.Tensor, torch.Tensor]

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.
  • original_image (torch.Tensor) — İçine doldurulacak (inpaint) orijinal görüntü.
  • mask (torch.Tensor) — Orijinal görüntünün hangi kısmının inpaint edileceğini 0.0 değerinin gösterdiği maske.
  • generator (torch.Generator, isteğe bağlı) — Rastgele sayı üreteci.
  • return_dict (bool, varsayılan True) — Bir tuple yerine RePaintSchedulerOutput döndürülüp döndürülmemesi.

Dönüş değeri

RePaintSchedulerOutput veya tuple[torch.Tensor, torch.Tensor]

return_dict True ise RePaintSchedulerOutput döndürülür, aksi halde bir tuple döndürülür; bunun ilk öğesi önceki örnek, 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.

undo_step

< >

( sample: Tensortimestep: intgenerator: typing.Optional[torch.Generator] = None ) → torch.Tensor

Parametreler

  • sample (torch.Tensor) — Gürültü eklenen örnek.
  • timestep (int) — Difüzyon zincirindeki mevcut ayrık zaman adımı.
  • generator (torch.Generator, isteğe bağlı) — Rastgele sayı üreteci.

Dönüş değeri

torch.Tensor

Difüzyon zincirinde bir sonraki zaman adımındaki örnek.

Bir örneğe gürültü ekleyerek onu bir difüzyon adımı ileriye taşıyın.

RePaintSchedulerOutput

sınıf diffusers.schedulers.scheduling_repaint.RePaintSchedulerOutput

< >

( prev_sample: Tensorpred_original_sample: Tensor )

Parametreler

  • prev_sample (görseller için torch.Tensor, şekli (batch_size, num_channels, height, width)) — Önceki zaman adımının hesaplanmış ö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) boyutunda bir 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 adım fonksiyonu çıktısı için çıktı sınıfı.

Update on GitHub