Diffusers documentation
RePaintScheduler
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
< source >( 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ılan1000) — Modelin eğitileceği difüzyon adım sayısı. - beta_start (
float, varsayılan0.0001) — Çıkarımın başlangıçbetadeğeri. - beta_end (
float, varsayılan0.02) — Sonbetadeğ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_v2veyasigmoid. - eta (
float, varsayılan0.0) — Bir difüzyon adımında eklenen gürültünün ağırlığı.0.0değeri DDIM'e,1.0değeri ise DDPM'ye karşılık gelir. - trained_betas (
np.ndarray, isteğe bağlı) — Betalar dizisini doğrudan yapılandırıcıya ileterekbeta_startvebeta_endparametrelerini atlayın. - clip_sample (
bool, varsayılanTrue) — 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
< source >( 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
NotImplementedError— RePaint eğitimi bunun yerine DDPMScheduler.add_noise() kullanmalıdır.
RePaint eğitimi için gürültü eklemenin bu zamanlayıcı tarafından desteklenmediğini belirtin.
scale_model_input
< source >( sample: Tensortimestep: int | None = None ) → torch.Tensor
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
< source >( 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ılan10) — 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ılan10) — Belirli bir zaman örneği için ileri zaman sıçraması yapılacak kez sayısı. Makaledeki 9. ve 10. Şekillere bakın. - device (
strveyatorch.device, isteğe bağlı) — Adımların (timesteps) taşınacağı cihaz.Noneise 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
< source >( 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ılanTrue) — 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
< source >( sample: Tensortimestep: intgenerator: typing.Optional[torch.Generator] = None ) → torch.Tensor
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
< source >( 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 birtorch.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ı.