Diffusers documentation
EulerAncestralDiscreteScheduler
EulerAncestralDiscreteScheduler
Scheduler yang menggunakan ancestral sampling dengan langkah metode Euler. Ini adalah scheduler yang cepat dan sering kali dapat menghasilkan output yang baik dalam 20-30 langkah. Scheduler ini didasarkan pada implementasi k-diffusion asli oleh Katherine Crowson.
EulerAncestralDiscreteScheduler
kelas diffusers.EulerAncestralDiscreteScheduler
< source >( num_train_timesteps: int = 1000beta_start: float = 0.0001beta_end: float = 0.02beta_schedule: str = 'linear'trained_betas: numpy.ndarray | list[float] | None = Noneprediction_type: str = 'epsilon'timestep_spacing: str = 'linspace'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) — Nilaibetaawal untuk inferensi. - beta_end (
float, defaultnya 0.02) — Nilaibetaakhir. - beta_schedule (
"linear","scaled_linear", atau"squaredcos_cap_v2", defaultnya"linear") — Jadwal beta, pemetaan dari rentang beta ke urutan beta untuk melangkahkan model. Pilih darilinear,scaled_linear, atausquaredcos_cap_v2. - trained_betas (
np.ndarray, opsional) — Lewatibeta_startdanbeta_enddengan meneruskan array betas langsung ke konstruktor. - prediction_type (
"epsilon","sample", or"v_prediction", defaults to"epsilon", optional) — Prediction type of the scheduler function; can beepsilon(predicts the noise of the diffusion process),sample(directly predicts the noisy sample) orv_prediction` (see section 2.4 of Imagen Video paper). - timestep_spacing (
"linspace","leading", atau"trailing", defaultnya"linspace") — 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, defaultnyaFalse) — 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.
Pengambilan sampel nenek moyang dengan langkah metode Euler.
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
< source >( original_samples: Tensornoise: Tensortimesteps: Tensor ) → torch.Tensor
Parameter
- original_samples (
torch.Tensor) — Sampel asli yang akan ditambahkan dengan noise. - noise (
torch.Tensor) — Tensor noise yang akan ditambahkan ke sampel asli. - timesteps (
torch.Tensor) — Timesteps untuk menambahkan noise, yang menentukan tingkat noise dari jadwal.
Mengembalikan
torch.Tensor
Sampel berisik dengan tambahan noise yang diskalakan sesuai dengan jadwal timestep.
Tambahkan noise ke sampel asli sesuai dengan jadwal noise pada timestep yang ditentukan.
index_for_timestep
< source >( timestep: typing.Union[float, torch.Tensor]schedule_timesteps: typing.Optional[torch.Tensor] = None ) → int
Parameter
- timestep (
floatatautorch.Tensor) — Nilai timestep yang akan dicari dalam jadwal. - schedule_timesteps (
torch.Tensor, opsional) — Jadwal timestep yang akan dicari. JikaNone, gunakanself.timesteps.
Mengembalikan
int
Indeks timestep dalam jadwal. Untuk langkah pertama, mengembalikan indeks kedua jika ada beberapa kecocokan untuk menghindari pengabaian sigma saat memulai di tengah jadwal (misalnya, untuk image-to-image).
Cari indeks dari timestep tertentu dalam jadwal timestep.
scale_model_input
< source >( sample: Tensortimestep: typing.Union[float, torch.Tensor] ) → torch.Tensor
Memastikan interoperabilitas dengan scheduler yang perlu menskalakan input model denoising berdasarkan timestep saat ini. Menskalakan input model denoising dengan (sigma**2 + 1) ** 0.5 untuk menyesuaikan dengan algoritma Euler.
set_begin_index
< source >( begin_index: int = 0 )
Menetapkan indeks awal untuk penjadwal. Fungsi ini harus dijalankan dari pipeline sebelum inferensi.
set_timesteps
< source >( num_inference_steps: intdevice: typing.Union[str, torch.device] = None )
Menetapkan langkah waktu diskrit yang digunakan untuk rantai difusi (untuk dijalankan sebelum inferensi).
langkah
< source >( model_output: Tensortimestep: typing.Union[float, torch.Tensor]sample: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → EulerAncestralDiscreteSchedulerOutput or tuple
Parameter
- model_output (
torch.Tensor) — Output langsung dari model difusi yang dipelajari. - timestep (
floatatautorch.Tensor) — 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, defaultnyaTrue) — Apakah akan mengembalikan EulerAncestralDiscreteSchedulerOutput atau tuple.
Mengembalikan
EulerAncestralDiscreteSchedulerOutput atau tuple
Jika return_dict adalah True,
EulerAncestralDiscreteSchedulerOutput dikembalikan,
sebaliknya sebuah tuple dikembalikan di mana elemen pertama adalah tensor sampel.
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).
EulerAncestralDiscreteSchedulerOutput
kelas diffusers.schedulers.scheduling_euler_ancestral_discrete.EulerAncestralDiscreteSchedulerOutput
< source >( prev_sample: Tensorpred_original_sample: typing.Optional[torch.Tensor] = None )
Parameter
- prev_sample (
torch.Tensordengan bentuk(batch_size, num_channels, height, width)untuk gambar) — Contoh yang dihitung(x_{t-1})dari langkah waktu sebelumnya.prev_sampleharus digunakan sebagai input model berikutnya dalam loop denoising. - pred_original_sample (
torch.Tensordengan bentuk(batch_size, num_channels, height, width)untuk gambar) — Sampel denoised yang diprediksi(x_{0})berdasarkan output model dari timestep saat ini.pred_original_sampledapat digunakan untuk pratinjau progres atau untuk guidance.
Kelas output untuk output fungsi step penjadwal.