Diffusers documentation

DDPMScheduler

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

DDPMScheduler

Denoising Diffusion Probabilistic Models (DDPM) oleh Jonathan Ho, Ajay Jain, dan Pieter Abbeel mengusulkan model berbasis difusi dengan nama yang sama. Dalam konteks pustaka 🤗 Diffusers, DDPM merujuk pada penjadwal denoising diskrit dari makalah tersebut serta pipeline-nya.

Abstrak dari makalah tersebut adalah:

Kami menyajikan hasil sintesis gambar berkualitas tinggi menggunakan model probabilistik difusi, yaitu kelas model variabel laten yang terinspirasi oleh pertimbangan dari termodinamika non-kesetimbangan. Hasil terbaik kami diperoleh dengan melatih pada batas variational berbobot yang dirancang berdasarkan koneksi baru antara model probabilistik difusi dan pencocokan skor denoising dengan dinamika Langevin, dan model kami secara alami menerima skema dekompresi progresif yang lossy yang dapat diinterpretasikan sebagai generalisasi dari decoding autoregressive. Pada dataset CIFAR10 unconditional, kami memperoleh skor Inception sebesar 9.46 dan skor FID state-of-the-art sebesar 3.17. Pada LSUN 256x256, kami memperoleh kualitas sampel yang serupa dengan ProgressiveGAN. Implementasi kami tersedia di this https URL.

DDPMScheduler

kelas diffusers.DDPMScheduler

< >

( num_train_timesteps: int = 1000beta_start: float = 0.0001beta_end: float = 0.02beta_schedule: typing.Literal['linear', 'scaled_linear', 'squaredcos_cap_v2', 'sigmoid'] = 'linear'trained_betas: numpy.ndarray | list[float] | None = Nonevariance_type: typing.Literal['fixed_small', 'fixed_small_log', 'fixed_large', 'fixed_large_log', 'learned', 'learned_range'] = 'fixed_small'clip_sample: bool = Trueprediction_type: typing.Literal['epsilon', 'sample', 'v_prediction'] = 'epsilon'thresholding: bool = Falsedynamic_thresholding_ratio: float = 0.995clip_sample_range: float = 1.0sample_max_value: float = 1.0timestep_spacing: typing.Literal['linspace', 'leading', 'trailing'] = 'leading'steps_offset: int = 0rescale_betas_zero_snr: bool = False )

Parameter

  • num_train_timesteps (int, defaultnya 1000) — Jumlah langkah difusi untuk melatih model.
  • beta_start (float, defaultnya 0.0001) — Nilai beta awal untuk inferensi.
  • beta_end (float, defaultnya 0.02) — Nilai beta akhir.
  • beta_schedule ("linear", "scaled_linear", "squaredcos_cap_v2", atau "sigmoid", defaultnya "linear") — Jadwal beta, pemetaan dari rentang beta ke urutan beta untuk melangkahkan model.
  • trained_betas (np.ndarray, opsional) — Array of betas untuk diteruskan langsung ke konstruktor tanpa menggunakan beta_start dan beta_end.
  • variance_type ("fixed_small", "fixed_small_log", "fixed_large", "fixed_large_log", "learned", atau "learned_range", defaultnya "fixed_small") — Memotong (clip) varians saat menambahkan noise ke sampel yang telah didenoise.
  • clip_sample (bool, defaultnya True) — Memotong sampel yang diprediksi untuk stabilitas numerik.
  • clip_sample_range (float, defaultnya 1.0) — Magnitudo maksimum untuk pemotongan sampel. Hanya valid ketika clip_sample=True.
  • prediction_type ("epsilon", "sample", or "v_prediction", defaults to "epsilon") — Prediction type of the scheduler function; can be epsilon (predicts the noise of the diffusion process), sample (directly predicts the noisy sample) or v_prediction` (see section 2.4 of Imagen Video paper).
  • thresholding (bool, defaultnya False) — Apakah akan menggunakan metode “dynamic thresholding”. Metode ini tidak cocok untuk model difusi ruang laten seperti Stable Diffusion.
  • dynamic_thresholding_ratio (float, defaultnya 0.995) — Rasio untuk metode thresholding dinamis. Hanya valid ketika thresholding=True.
  • sample_max_value (float, defaultnya 1.0) — Nilai ambang untuk thresholding dinamis. Hanya valid ketika thresholding=True.
  • timestep_spacing ("linspace", "leading", atau "trailing", defaultnya "leading") — Cara timestep harus diskalakan. Lihat Tabel 2 dari Common Diffusion Noise Schedules and Sample Steps are Flawed untuk informasi lebih lanjut.
  • steps_offset (int, defaultnya 0) — Offset yang ditambahkan ke langkah inferensi, sesuai kebutuhan beberapa keluarga model.
  • rescale_betas_zero_snr (bool, defaultnya False) — Apakah akan menskalakan ulang betas agar memiliki SNR terminal nol. Hal ini memungkinkan model untuk menghasilkan sampel yang sangat terang dan gelap, alih-alih membatasi pada sampel dengan kecerahan sedang. Terkait secara longgar dengan --offset_noise.

DDPMScheduler mengeksplorasi hubungan antara pencocokan skor denoising dan pengambilan sampel dinamika Langevin.

Model ini mewarisi dari SchedulerMixin dan ConfigMixin. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan pustaka ini untuk semua scheduler, seperti pemuatan dan penyimpanan.

add_noise

< >

( original_samples: Tensornoise: Tensortimesteps: IntTensor ) → torch.Tensor

Parameter

  • original_samples (torch.Tensor) — Sampel asli yang akan ditambahkan dengan noise.
  • noise (torch.Tensor) — Noise yang akan ditambahkan ke sampel.
  • timesteps (torch.IntTensor) — Timesteps yang menunjukkan tingkat noise untuk setiap sampel.

Mengembalikan

torch.Tensor

Sampel yang bising.

Tambahkan noise ke sampel asli sesuai dengan magnitudo noise pada setiap timestep (ini adalah proses difusi maju).

get_velocity

< >

( sample: Tensornoise: Tensortimesteps: IntTensor ) → torch.Tensor

Parameter

  • sample (torch.Tensor) — Contoh input.
  • noise (torch.Tensor) — Tensor noise.
  • timesteps (torch.IntTensor) — Timesteps untuk komputasi kecepatan.

Mengembalikan

torch.Tensor

Kecepatan yang dihitung.

Hitung prediksi kecepatan dari sampel dan noise sesuai dengan rumus kecepatan.

previous_timestep

< >

( timestep: int ) → int or torch.Tensor

Parameter

  • timestep (int) — Timestep saat ini.

Mengembalikan

int atau torch.Tensor

Langkah waktu sebelumnya.

Hitung langkah waktu sebelumnya dalam rantai difusi.

scale_model_input

< >

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

Parameter

  • sample (torch.Tensor) — Contoh input.
  • timestep (int, opsional) — Timestep saat ini dalam rantai difusi.

Mengembalikan

torch.Tensor

Contoh input yang diskalakan.

Memastikan interoperabilitas dengan scheduler yang perlu menskalakan input model denoising berdasarkan timestep saat ini.

set_timesteps

< >

( num_inference_steps: int = Nonedevice: typing.Union[str, torch.device] = Nonetimesteps: list[int] | None = None )

Parameter

  • num_inference_steps (int, opsional) — Jumlah langkah difusi yang digunakan saat menghasilkan sampel dengan model terlatih. Jika digunakan, timesteps harus None.
  • device (str atau torch.device, opsional) — Perangkat tempat timesteps harus dipindahkan. Jika None, timesteps tidak dipindahkan.
  • timesteps (list[int], opsional) — Timesteps kustom yang digunakan untuk mendukung spasi arbitrer antar timesteps. Jika None, maka strategi spasi timestep default dengan spasi yang sama antar timesteps digunakan. Jika timesteps diberikan, num_inference_steps harus None.

Menetapkan langkah waktu diskrit yang digunakan untuk rantai difusi (untuk dijalankan sebelum inferensi).

langkah

< >

( model_output: Tensortimestep: intsample: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → DDPMSchedulerOutput or tuple

Parameter

  • model_output (torch.Tensor) — Output langsung dari model difusi yang dipelajari.
  • timestep (int) — Timestep diskrit saat ini dalam rantai difusi.
  • sample (torch.Tensor) — Instans saat ini dari sampel yang dibuat oleh proses difusi.
  • generator (torch.Generator, opsional) — Generator angka acak.
  • return_dict (bool, defaultnya True) — Apakah akan mengembalikan DDPMSchedulerOutput atau tuple.

Mengembalikan

DDPMSchedulerOutput atau tuple

If return_dict is True, DDPMSchedulerOutput is returned, otherwise a tuple is returned where the first element is the sample tensor.

Prediksi sampel dari langkah waktu sebelumnya dengan membalik SDE. Fungsi ini menyebarkan proses difusi dari keluaran model yang dipelajari (paling sering berupa noise yang diprediksi).

DDPMSchedulerOutput

kelas diffusers.schedulers.scheduling_ddpm.DDPMSchedulerOutput

< >

( prev_sample: Tensorpred_original_sample: typing.Optional[torch.Tensor] = None )

Parameter

  • prev_sample (torch.Tensor dengan bentuk (batch_size, num_channels, height, width) untuk gambar) — Contoh yang dihitung (x_{t-1}) dari langkah waktu sebelumnya. prev_sample harus digunakan sebagai input model berikutnya dalam loop denoising.
  • pred_original_sample (torch.Tensor dengan bentuk (batch_size, num_channels, height, width) untuk gambar) — Sampel denoised yang diprediksi (x_{0}) berdasarkan output model dari timestep saat ini. pred_original_sample dapat digunakan untuk pratinjau progres atau untuk guidance.

Kelas output untuk output fungsi step penjadwal.

Update on GitHub