Buckets:

mishig's picture
|
download
raw
6.16 kB

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[[diffusers.DDIMPipeline]]

diffusers.DDIMPipeline[[diffusers.DDIMPipeline]]

diffusers.DDIMPipeline(unet: UNet2DModel, scheduler: DDIMScheduler)

Sumber

Parameter:

unet (UNet2DModel) : Sebuah UNet2DModel untuk menghilangkan noise dari latens gambar yang telah dikodekan.

scheduler (SchedulerMixin) : Penjadwal yang digunakan bersama unet untuk menghilangkan noise dari gambar yang telah dikodekan. 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[[diffusers.DDIMPipeline.call]]

__call__(batch_size: int = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, eta: float = 0.0, num_inference_steps: int = 50, use_clipped_model_output: bool | None = None, output_type: str | None = 'pil', return_dict: bool = True)

Sumber

Parameter:

batch_size (int, opsional, default 1) : Jumlah gambar yang akan dihasilkan.

generator (torch.Generator, opsional) : Sebuah 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, defaultnya 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 (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[[diffusers.ImagePipelineOutput]]

diffusers.ImagePipelineOutput[[diffusers.ImagePipelineOutput]]

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

Sumber

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.

Xet Storage Details

Size:
6.16 kB
·
Xet hash:
589875fda510a5743b32fdad7c44aa1f6db90255b676ae4547c4ea1189386848

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.