Buckets:

mishig's picture
|
download
raw
11.2 kB
# DDPMScheduler
[Denoising Diffusion Probabilistic Models](https://huggingface.co/papers/2006.11239) (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](https://github.com/hojonathanho/diffusion).*
## DDPMScheduler[[diffusers.DDPMScheduler]]
#### diffusers.DDPMScheduler[[diffusers.DDPMScheduler]]
```python
diffusers.DDPMScheduler(num_train_timesteps: int = 1000, beta_start: float = 0.0001, beta_end: float = 0.02, beta_schedule: typing.Literal['linear', 'scaled_linear', 'squaredcos_cap_v2', 'sigmoid'] = 'linear', trained_betas: numpy.ndarray | list[float] | None = None, variance_type: typing.Literal['fixed_small', 'fixed_small_log', 'fixed_large', 'fixed_large_log', 'learned', 'learned_range'] = 'fixed_small', clip_sample: bool = True, prediction_type: typing.Literal['epsilon', 'sample', 'v_prediction'] = 'epsilon', thresholding: bool = False, dynamic_thresholding_ratio: float = 0.995, clip_sample_range: float = 1.0, sample_max_value: float = 1.0, timestep_spacing: typing.Literal['linspace', 'leading', 'trailing'] = 'leading', steps_offset: int = 0, rescale_betas_zero_snr: bool = False)
```
[Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_ddpm.py#L137)
**Parameter:**
num_train_timesteps (`int`, defaultnya `1000`) : Jumlah langkah difusi untuk melatih model.
beta_start (`float`, defaultnya `0.0001`) : Nilai awal `beta` untuk inferensi.
beta_end (`float`, defaultnya `0.02`) : Nilai `beta` akhir.
beta_schedule (`"linear"`, `"scaled_linear"`, `"squaredcos_cap_v2"`, atau `"sigmoid"`, secara default `"linear"`) : Jadwal beta, pemetaan dari rentang beta ke urutan beta untuk melangkahkan model.
trained_betas (`np.ndarray`, *opsional*) : Array of betas untuk dilewatkan 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 varians saat menambahkan noise ke sampel yang telah dinoise.
clip_sample (`bool`, defaultnya `True`) : Memotong sampel prediksi 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](https://huggingface.co/papers/2210.02303) 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 ambang dinamis. Hanya valid ketika `thresholding=True`.
sample_max_value (`float`, defaultnya `1.0`) : Nilai ambang untuk pengambangan 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](https://huggingface.co/papers/2305.08891) untuk informasi lebih lanjut.
steps_offset (`int`, defaultnya `0`) : Offset yang ditambahkan ke langkah inferensi, sesuai dengan kebutuhan beberapa keluarga model.
rescale_betas_zero_snr (`bool`, defaultnya `False`) : Apakah akan melakukan penskalaan 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`](https://github.com/huggingface/diffusers/blob/74fd735eb073eb1d774b1ab4154a0876eb82f055/examples/dreambooth/train_dreambooth.py#L506).
`DDPMScheduler` mengeksplorasi hubungan antara pencocokan skor denoising dan pengambilan sampel dinamika Langevin.
Model ini mewarisi dari [SchedulerMixin](/docs/diffusers/main/id/api/schedulers/overview#diffusers.SchedulerMixin) dan [ConfigMixin](/docs/diffusers/main/id/api/configuration#diffusers.ConfigMixin). Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan pustaka ini untuk semua scheduler, seperti pemuatan dan penyimpanan.
#### add_noise[[diffusers.DDPMScheduler.add_noise]]
```python
add_noise(original_samples: Tensor, noise: Tensor, timesteps: IntTensor)
```
[Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_ddpm.py#L569)
**Parameter:**
original_samples (`torch.Tensor`) : Sampel asli yang akan ditambahkan dengan noise.
noise (`torch.Tensor`) : Kebisingan yang akan ditambahkan ke sampel.
timesteps (`torch.IntTensor`) : Langkah waktu 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[[diffusers.DDPMScheduler.get_velocity]]
```python
get_velocity(sample: Tensor, noise: Tensor, timesteps: IntTensor)
```
[Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_ddpm.py#L611)
**Parameter:**
sample (`torch.Tensor`) : Sampel input.
noise (`torch.Tensor`) : Tensor noise.
timesteps (`torch.IntTensor`) : Langkah waktu untuk komputasi kecepatan.
**Mengembalikan:** `torch.Tensor`
Kecepatan yang dihitung.
Hitung prediksi kecepatan dari sampel dan noise sesuai dengan rumus kecepatan.
#### previous_timestep[[diffusers.DDPMScheduler.previous_timestep]]
```python
previous_timestep(timestep: int)
```
[Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_ddpm.py#L648)
**Parameter:**
timestep (`int`) : Langkah waktu saat ini.
**Mengembalikan:** `int` atau `torch.Tensor`
Langkah waktu sebelumnya.
Hitung langkah waktu sebelumnya dalam rantai difusi.
#### scale_model_input[[diffusers.DDPMScheduler.scale_model_input]]
```python
scale_model_input(sample: Tensor, timestep: int | None = None)
```
[Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_ddpm.py#L257)
**Parameter:**
sample (`torch.Tensor`) : Sampel input.
timestep (`int`, *opsional*) : Langkah waktu (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[[diffusers.DDPMScheduler.set_timesteps]]
```python
set_timesteps(num_inference_steps: int = None, device: typing.Union[str, torch.device] = None, timesteps: list[int] | None = None)
```
[Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_ddpm.py#L274)
**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 timestep harus dipindahkan. Jika `None`, timestep 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` diteruskan, `num_inference_steps` harus `None`.
Menetapkan langkah waktu diskrit yang digunakan untuk rantai difusi (untuk dijalankan sebelum inferensi).
#### langkah[[diffusers.DDPMScheduler.step]]
```python
step(model_output: Tensor, timestep: int, sample: Tensor, generator: typing.Optional[torch.Generator] = None, return_dict: bool = True)
```
[Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_ddpm.py#L461)
**Parameter:**
model_output (`torch.Tensor`) : Output langsung dari model difusi yang telah dipelajari.
timestep (`int`) : Langkah waktu diskret 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](/docs/diffusers/main/id/api/schedulers/ddpm#diffusers.schedulers.scheduling_ddpm.DDPMSchedulerOutput) atau `tuple`.
**Mengembalikan:** [DDPMSchedulerOutput](/docs/diffusers/main/id/api/schedulers/ddpm#diffusers.schedulers.scheduling_ddpm.DDPMSchedulerOutput) atau `tuple`
If return_dict is `True`, [DDPMSchedulerOutput](/docs/diffusers/main/id/api/schedulers/ddpm#diffusers.schedulers.scheduling_ddpm.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[[diffusers.schedulers.scheduling_ddpm.DDPMSchedulerOutput]]
#### diffusers.schedulers.scheduling_ddpm.DDPMSchedulerOutput[[diffusers.schedulers.scheduling_ddpm.DDPMSchedulerOutput]]
```python
diffusers.schedulers.scheduling_ddpm.DDPMSchedulerOutput(prev_sample: Tensor, pred_original_sample: typing.Optional[torch.Tensor] = None)
```
[Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_ddpm.py#L31)
**Parameter:**
prev_sample (`torch.Tensor` dengan bentuk `(batch_size, num_channels, height, width)` untuk gambar) : Sampel `(x_{t-1})` yang dihitung dari timestep 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` scheduler.

Xet Storage Details

Size:
11.2 kB
·
Xet hash:
b2dae87a918cfae8d43b1fd39ac68bb7352702b06883310a774f69062cebe5f7

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