Diffusers documentation
ScoreSdeVeScheduler
ScoreSdeVeScheduler
ScoreSdeVeScheduler adalah penjadwal persamaan diferensial stokastik (SDE) dengan varians yang meledak. Penjadwal ini diperkenalkan dalam makalah Score-Based Generative Modeling through Stochastic Differential Equations oleh Yang Song, Jascha Sohl-Dickstein, Diederik P. Kingma, Abhishek Kumar, Stefano Ermon, dan Ben Poole.
Abstrak dari makalah tersebut adalah:
Membuat noise dari data itu mudah; membuat data dari noise adalah pemodelan generatif. Kami menyajikan persamaan diferensial stokastik (SDE) yang secara halus mengubah distribusi data yang kompleks menjadi distribusi prior yang diketahui dengan perlahan menyuntikkan noise, dan SDE waktu-terbalik yang sesuai yang mengubah distribusi prior kembali menjadi distribusi data dengan perlahan menghilangkan noise. Yang krusial, SDE waktu-terbalik hanya bergantung pada medan gradien yang bergantung waktu (\aka, skor) dari distribusi data yang terganggu. Dengan memanfaatkan kemajuan dalam pemodelan generatif berbasis skor, kami dapat memperkirakan skor-skor ini secara akurat dengan jaringan saraf, dan menggunakan solver SDE numerik untuk menghasilkan sampel. Kami menunjukkan bahwa kerangka kerja ini merangkum pendekatan-pendekatan sebelumnya dalam pemodelan generatif berbasis skor dan pemodelan probabilistik difusi, memungkinkan prosedur sampling baru dan kemampuan pemodelan baru. Secara khusus, kami memperkenalkan kerangka kerja predictor-corrector untuk mengoreksi kesalahan dalam evolusi SDE waktu-terbalik yang diskritisasi. Kami juga menurunkan neural ODE yang ekuivalen yang mengambil sampel dari distribusi yang sama seperti SDE, tetapi juga memungkinkan komputasi likelihood yang tepat, dan efisiensi sampling yang lebih baik. Selain itu, kami menyediakan cara baru untuk menyelesaikan masalah invers dengan model berbasis skor, seperti yang ditunjukkan dengan eksperimen pada generasi bersyarat kelas, inpainting gambar, dan pewarnaan. Digabungkan dengan beberapa peningkatan arsitektural, kami mencapai kinerja pemecahan rekor untuk generasi gambar tanpa syarat pada CIFAR-10 dengan skor Inception 9.89 dan FID 2.20, likelihood yang kompetitif 2.99 bits/dim, dan mendemonstrasikan generasi berkeandalan tinggi gambar 1024 x 1024 untuk pertama kalinya dari model generatif berbasis skor.
ScoreSdeVeScheduler
kelas diffusers.ScoreSdeVeScheduler
< source >( num_train_timesteps: int = 2000snr: float = 0.15sigma_min: float = 0.01sigma_max: float = 1348.0sampling_eps: float = 1e-05correct_steps: int = 1 )
Parameter
- num_train_timesteps (
int, defaultnya 2000) — Jumlah langkah difusi untuk melatih model. - snr (
float, default 0.15) — Koefisien yang memberi bobot pada langkah dari sampelmodel_output(dari jaringan) ke noise acak. - sigma_min (
float, defaultnya 0.01) — Skala noise awal untuk urutan sigma dalam prosedur sampling. Sigma minimum harus mencerminkan distribusi data. - sigma_max (
float, defaultnya 1348.0) — Nilai maksimum yang digunakan untuk rentang timestep kontinu yang diteruskan ke model. - sampling_eps (
float, defaultnya 1e-5) — Nilai akhir dari sampling di mana timestep berkurang secara progresif dari 1 hingga epsilon. - correct_steps (
int, defaultnya 1) — Jumlah langkah koreksi yang dilakukan pada sampel yang dihasilkan.
ScoreSdeVeScheduler adalah penjadwal persamaan diferensial stokastik (SDE) dengan varians yang meledak.
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. Ini adalah proses difusi maju.
get_adjacent_sigma
< source >( timesteps: Tensort: Tensor ) → torch.Tensor
Mengembalikan nilai sigma yang sesuai dengan indeks timestep sebelumnya. Ketika timestep adalah nol (tidak ada timestep sebelumnya), mengembalikan nol.
scale_model_input
< source >( sample: Tensortimestep: int | None = None ) → torch.Tensor
Memastikan interoperabilitas dengan scheduler yang perlu menskalakan input model denoising berdasarkan timestep saat ini.
set_sigmas
< source >( num_inference_steps: intsigma_min: float | None = Nonesigma_max: float | None = Nonesampling_eps: float | None = None )
Parameter
- num_inference_steps (
int) — Jumlah langkah difusi yang digunakan saat menghasilkan sampel dengan model terlatih. - sigma_min (
float, opsional) — Nilai skala noise awal (menimpa nilai yang diberikan saat instansiasi scheduler). - sigma_max (
float, opsional) — Nilai skala noise akhir (menimpa nilai yang diberikan saat instansiasi scheduler). - sampling_eps (
float, opsional) — Nilai timestep akhir (menimpa nilai yang diberikan saat instansiasi scheduler).
Menetapkan skala noise yang digunakan untuk rantai difusi (harus dijalankan sebelum inferensi). Sigma mengontrol bobot komponen drift dan diffusion dari pembaruan sampel.
set_timesteps
< source >( num_inference_steps: intsampling_eps: float | None = Nonedevice: typing.Union[str, torch.device, NoneType] = None )
Parameter
- num_inference_steps (
int) — Jumlah langkah difusi yang digunakan saat menghasilkan sampel dengan model terlatih. - sampling_eps (
float, opsional) — Nilai timestep akhir (menimpa nilai yang diberikan saat instansiasi scheduler). - device (
stratautorch.device, opsional) — Perangkat tempat timesteps harus dipindahkan. JikaNone, timesteps tidak dipindahkan.
Menetapkan langkah waktu kontinu yang digunakan untuk rantai difusi (untuk dijalankan sebelum inferensi).
step_correct
< source >( model_output: Tensorsample: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → SchedulerOutput or tuple
Parameter
- model_output (
torch.Tensor) — Output langsung dari model difusi yang dipelajari. - sample (
torch.Tensor) — Instans saat ini dari sampel yang dibuat oleh proses difusi. - generator (
torch.Generator, opsional) — Generator angka acak. - return_dict (
bool, opsional, defaultTrue) — Apakah akan mengembalikan SchedulerOutput atautuple.
Mengembalikan
SchedulerOutput atau tuple
If return_dict is True, SchedulerOutput is returned, otherwise a
tuple is returned where the first element is the sample tensor.
Perbaiki sampel prediksi berdasarkan model_output dari jaringan. Hal ini sering dijalankan secara berulang setelah membuat prediksi untuk timestep sebelumnya.
step_pred
< source >( model_output: Tensortimestep: intsample: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → SdeVeOutput 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, opsional, defaultnyaTrue) — Apakah akan mengembalikan SdeVeOutput atautuple.
Mengembalikan
SdeVeOutput atau tuple
If return_dict is True, SdeVeOutput 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).
SdeVeOutput
kelas diffusers.schedulers.scheduling_sde_ve.SdeVeOutput
< source >( prev_sample: Tensorprev_sample_mean: Tensor )
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. - prev_sample_mean (
torch.Tensordengan bentuk(batch_size, num_channels, height, width)untuk gambar) — Rata-rataprev_sampleyang dirata-ratakan di atas timestep sebelumnya.
Kelas output untuk output fungsi step penjadwal.