Diffusers documentation

DDIM

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

DDIM

Denoising Diffusion Implicit Models (DDIM) oleh Jiaming Song, Chenlin Meng, dan Stefano Ermon.

Abstrak dari makalah tersebut adalah:

Model probabilistik difusi denoising (DDPM) telah mencapai kualitas generasi gambar yang tinggi tanpa pelatihan adversarial, namun mereka mensimulasikan rantai Markov selama banyak langkah untuk menghasilkan sampel. Untuk mempercepat pengambilan sampel, kami memperkenalkan model implisit difusi denoising (DDIM), kelas model probabilistik iteratif implisit yang lebih efisien dengan prosedur pelatihan yang sama seperti DDPM. Pada DDPM, proses generatif didefinisikan sebagai kebalikan dari proses difusi Markovian. Kami membangun kelas proses difusi non-Markovian yang mengarah ke tujuan pelatihan yang sama, tetapi proses kebalikannya dapat disampelkan jauh lebih cepat. Kami mendemonstrasikan secara empiris bahwa DDIM dapat menghasilkan sampel berkualitas tinggi 10× hingga 50× lebih cepat dalam hal waktu nyata dibandingkan DDPM, memungkinkan kami untuk menukar komputasi dengan kualitas sampel, dan dapat melakukan interpolasi gambar yang bermakna secara semantik langsung di ruang laten.

Kodebase asli dapat ditemukan di ermongroup/ddim.

DDIMPipeline

kelas diffusers.DDIMPipeline

< >

( unet: UNet2DModelscheduler: DDIMScheduler )

Parameter

  • unet (UNet2DModel) — UNet2DModel untuk menghilangkan noise pada latens gambar yang telah dienkod.
  • scheduler (SchedulerMixin) — Scheduler yang digunakan bersama unet untuk menghilangkan noise dari gambar yang telah dienkod. Bisa berupa DDPMScheduler atau DDIMScheduler.

Pipeline untuk generasi gambar.

Model ini mewarisi dari DiffusionPipeline. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan untuk semua pipeline (mengunduh, menyimpan, menjalankan pada perangkat tertentu, dll.).

__call__

< >

( 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

Parameter

  • batch_size (int, opsional, default 1) — Jumlah gambar yang akan dihasilkan.
  • generator (torch.Generator, opsional) — torch.Generator untuk membuat generasi menjadi deterministik.
  • eta (float, opsional, default 0.0) — Bersesuaian dengan parameter eta (η) dari paper DDIM. Hanya berlaku untuk DDIMScheduler, dan diabaikan pada scheduler lain. Nilai 0 bersesuaian dengan DDIM dan 1 bersesuaian dengan DDPM.
  • num_inference_steps (int, opsional, default 50) — Jumlah langkah denoising. Semakin banyak langkah denoising, biasanya menghasilkan gambar dengan kualitas lebih tinggi, namun dengan biaya inferensi yang lebih lambat.
  • use_clipped_model_output (bool, opsional, defaultnya None) — Jika True atau False, lihat dokumentasi untuk DDIMScheduler.step(). Jika None, tidak ada yang diteruskan ke scheduler di hilir (gunakan None untuk scheduler yang tidak mendukung argumen ini).
  • output_type (str, opsional, defaultnya "pil") — Format output dari gambar yang dihasilkan. Pilih antara "pil" (PIL.Image), "np" (np.array) atau "pt" (torch.Tensor).
  • return_dict (bool, opsional, defaultnya True) — Apakah akan mengembalikan ImagePipelineOutput alih-alih tuple biasa.

Mengembalikan

ImagePipelineOutput atau tuple

Jika return_dict adalah True, ImagePipelineOutput dikembalikan, selain itu sebuah tuple dikembalikan di mana elemen pertama adalah daftar dengan gambar yang dihasilkan

Fungsi panggilan untuk pipeline pada generasi.

Contoh:

>>> 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

kelas diffusers.ImagePipelineOutput

< >

( images: list[PIL.Image.Image] | numpy.ndarray )

Parameter

  • images (List[PIL.Image.Image] atau np.ndarray) — Daftar gambar PIL yang telah didenoise dengan panjang batch_size atau array NumPy dengan bentuk (batch_size, height, width, num_channels).

Kelas output untuk pipeline gambar.

Update on GitHub