Diffusers documentation
DDIM
DDIM
Jiaming Song, Chenlin Meng ve Stefano Ermon tarafından Denoising Diffusion Implicit Models (DDIM).
Makalenin özeti şudur:
Gürültü azaltma difüzyon olasılıksal modelleri (DDPM), adversarial eğitim gerektirmeden yüksek kaliteli görüntü üretimi sağlamış olmakla birlikte, bir örnek oluşturmak için Markov zincirinin birçok adım boyunca simüle edilmesini gerektirir. Örnekleme hızını artırmak için, DDPM'lerle aynı eğitim prosedürüne sahip, daha verimli bir iteratif implisit olasılıksal model sınıfı olan gürültü azaltma difüzyon implisit modellerini (DDIM) sunuyoruz. DDPM'lerde üretici süreç, Markovian difüzyon sürecinin tersi olarak tanımlanır. Aynı eğitim hedefine yol açan, ancak ters sürecinden örnek almak çok daha hızlı olabilecek bir Markov olmayan difüzyon süreci sınıfı oluşturuyoruz. DDIM'lerin, DDPM'lere kıyasla duvar saati süresi açısından 10× ile 50× daha hızlı yüksek kaliteli örnekler üretebildiğini, hesaplama ile örnek kalitesi arasında ödünleşim yapmamıza olanak tanıdığını ve gizli uzayda doğrudan anlamlı görüntü interpolasyonu gerçekleştirebildiğini deneysel olarak gösteriyoruz.
Orijinal kod tabanı ermongroup/ddim adresinde bulunabilir.
DDIMPipeline
sınıf diffusers.DDIMPipeline
< source >( unet: UNet2DModelscheduler: DDIMScheduler )
Parametreler
- unet (UNet2DModel) —
Kodlanmış görüntü latentlerini gürültüden arındırmak için kullanılan bir
UNet2DModel. - scheduler (SchedulerMixin) —
Kodlanmış görüntüyü gürültüden arındırmak için
unetile birlikte kullanılacak bir zamanlayıcı. DDPMScheduler veya DDIMScheduler olabilir.
Görsel üretimi için pipeline.
Bu model DiffusionPipeline sınıfından devralır. Tüm pipeline'lar için uygulanan genel yöntemlerin (indirme, kaydetme, belirli bir cihazda çalıştırma vb.) belgelerini üst sınıfın dokümantasyonunda bulabilirsiniz.
__call__
< source >( batch_size: int = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Noneeta: float = 0.0num_inference_steps: int = 50use_clipped_model_output: bool | None = Noneoutput_type: str | None = 'pil'return_dict: bool = True ) → ImagePipelineOutput or tuple
Parametreler
- batch_size (
int, isteğe bağlı, varsayılan 1) — Üretilecek görüntü sayısı. - generator (
torch.Generator, isteğe bağlı) — Üretimi deterministik hale getirmek için kullanılan birtorch.Generator. - eta (
float, isteğe bağlı, varsayılan 0.0) — DDIM makalesindeki eta (η) parametresine karşılık gelir. Yalnızca DDIMScheduler için geçerlidir ve diğer zamanlayıcılarda yok sayılır.0değeri DDIM'e,1değeri ise DDPM'ye karşılık gelir. - num_inference_steps (
int, isteğe bağlı, varsayılan 50) — Gürültü azaltma adım sayısı. Daha fazla gürültü azaltma adımı genellikle daha yavaş çıkarım pahasına daha yüksek kaliteli bir görüntüye yol açar. - use_clipped_model_output (
bool, isteğe bağlı, varsayılanNone) —TrueveyaFalseise, DDIMScheduler.step() belgelendirmesine bakın.Noneise, zamanlayıcıya (scheduler) aşağı akışta hiçbir şey geçirilmez (bu argümanı desteklemeyen zamanlayıcılar içinNonekullanın). - output_type (
str, isteğe bağlı, varsayılan"pil") — Oluşturulan görüntünün çıktı biçimi."pil"(PIL.Image),"np"(np.array) veya"pt"(torch.Tensor) arasında seçim yapın. - return_dict (
bool, isteğe bağlı, varsayılanTrue) — Düz bir tuple yerine ImagePipelineOutput döndürülüp döndürülmemesi.
Dönüş değeri
ImagePipelineOutput veya tuple
return_dict True ise ImagePipelineOutput döndürülür, aksi halde ilk öğesi üretilen görüntülerin listesinden oluşan bir tuple döndürülür
Üretim için pipeline'ın çağrı fonksiyonu.
Örnek:
>>> from diffusers import DDIMPipeline
>>> import PIL.Image
>>> import numpy as np
>>> # load model and scheduler
>>> pipe = DDIMPipeline.from_pretrained("fusing/ddim-lsun-bedroom")
>>> # run pipeline in inference (sample random noise and denoise)
>>> image = pipe(eta=0.0, num_inference_steps=50)
>>> # process image to PIL
>>> image_processed = image.cpu().permute(0, 2, 3, 1)
>>> image_processed = (image_processed + 1.0) * 127.5
>>> image_processed = image_processed.numpy().astype(np.uint8)
>>> image_pil = PIL.Image.fromarray(image_processed[0])
>>> # save image
>>> image_pil.save("test.png")ImagePipelineOutput
sınıf diffusers.ImagePipelineOutput
< source >( images: list[PIL.Image.Image] | numpy.ndarray )
Görüntü hatları için çıktı sınıfı.