Diffusers documentation
RePaintScheduler
RePaintScheduler
RePaintScheduler adalah scheduler inpainting berbasis DDPM untuk inpainting tanpa pengawasan dengan mask ekstrem. Scheduler ini dirancang untuk digunakan bersama RePaintPipeline, dan didasarkan pada makalah RePaint: Inpainting using Denoising Diffusion Probabilistic Models oleh Andreas Lugmayr dkk.
Abstrak dari makalah tersebut adalah:
Inpainting bebas bentuk adalah tugas menambahkan konten baru ke dalam gambar pada wilayah yang ditentukan oleh mask biner arbitrer. Sebagian besar pendekatan yang ada dilatih untuk distribusi mask tertentu, yang membatasi kemampuan generalisasinya terhadap jenis mask yang belum pernah dilihat. Selain itu, pelatihan dengan kerugian piksel-ke-piksel dan perseptual sering kali menghasilkan ekstensi tekstural sederhana ke arah area yang hilang, bukan generasi yang bermakna secara semantik. Dalam karya ini, kami mengusulkan RePaint: pendekatan inpainting berbasis Model Probabilistik Difusi Denoising (DDPM) yang dapat diterapkan bahkan pada mask ekstrem. Kami menggunakan DDPM tak bersyarat yang telah dilatih sebelumnya sebagai prior generatif. Untuk mengondisikan proses generasi, kami hanya mengubah iterasi difusi terbalik dengan mengambil sampel wilayah yang tidak dimask menggunakan informasi gambar yang diberikan. Karena teknik ini tidak memodifikasi atau mengondisikan jaringan DDPM aslinya, model menghasilkan gambar keluaran berkualitas tinggi dan beragam untuk bentuk inpainting apa pun. Kami memvalidasi metode kami untuk inpainting wajah dan gambar umum menggunakan mask standar dan ekstrem. RePaint melampaui pendekatan Autoregressive dan GAN terkini untuk setidaknya lima dari enam distribusi mask. Repositori GitHub: this http URL.
Implementasi asli dapat ditemukan di andreas128/RePaint.
RePaintScheduler
kelas diffusers.RePaintScheduler
< source >( num_train_timesteps: int = 1000beta_start: float = 0.0001beta_end: float = 0.02beta_schedule: str = 'linear'eta: float = 0.0trained_betas: numpy.ndarray | None = Noneclip_sample: bool = True )
Parameter
- num_train_timesteps (
int, defaultnya1000) — Jumlah langkah difusi untuk melatih model. - beta_start (
float, defaultnya0.0001) — Nilaibetaawal untuk inferensi. - beta_end (
float, defaultnya0.02) — Nilaibetaakhir. - beta_schedule (
str, defaultnya"linear") — Jadwal beta, pemetaan dari rentang beta ke urutan beta untuk melangkahkan model. Pilih darilinear,scaled_linear,squaredcos_cap_v2, atausigmoid. - eta (
float, defaultnya0.0) — Bobot noise yang ditambahkan selama langkah difusi. Nilai0.0sesuai dengan DDIM dan nilai1.0sesuai dengan DDPM. - trained_betas (
np.ndarray, opsional) — Lewatibeta_startdanbeta_enddengan meneruskan array betas langsung ke konstruktor. - clip_sample (
bool, defaultnyaTrue) — Memotong sampel prediksi antara -1 dan 1 untuk stabilitas numerik.
RePaintScheduler adalah scheduler untuk inpainting DDPM di dalam mask yang diberikan.
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: IntTensor )
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 akan menentukan tingkat noise untuk setiap sampel.
Membuang
NotImplementedError
NotImplementedError— Pelatihan RePaint seharusnya menggunakan DDPMScheduler.add_noise() sebagai gantinya.
Tunjukkan bahwa penambahan noise untuk pelatihan RePaint tidak didukung oleh scheduler ini.
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_timesteps
< source >( num_inference_steps: intjump_length: int = 10jump_n_sample: int = 10device: typing.Union[str, torch.device, NoneType] = None )
Parameter
- num_inference_steps (
int) — Jumlah langkah difusi yang digunakan saat menghasilkan sampel dengan model terlatih. - jump_length (
int, defaultnya10) — Jumlah langkah yang diambil maju dalam waktu sebelum mundur dalam waktu untuk satu lompatan (“j” dalam makalah RePaint). Lihat Gambar 9 dan 10 dalam makalah tersebut. - jump_n_sample (
int, defaultnya10) — Jumlah kali lompatan waktu maju yang dilakukan untuk sampel waktu tertentu. Lihat Gambar 9 dan 10 di makalah tersebut. - device (
stratautorch.device, opsional) — Perangkat tempat timesteps harus dipindahkan. JikaNone, timesteps tidak dipindahkan.
Menetapkan langkah waktu diskrit yang digunakan untuk rantai difusi (untuk dijalankan sebelum inferensi).
langkah
< source >( model_output: Tensortimestep: intsample: Tensororiginal_image: Tensormask: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → RePaintSchedulerOutput or tuple[torch.Tensor, torch.Tensor]
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. - original_image (
torch.Tensor) — Gambar asli untuk diinpaint. - mask (
torch.Tensor) — Mask di mana nilai 0.0 menunjukkan bagian dari gambar asli yang akan di-inpaint. - generator (
torch.Generator, opsional) — Generator angka acak. - return_dict (
bool, defaultnyaTrue) — Apakah akan mengembalikan RePaintSchedulerOutput alih-alih tuple.
Mengembalikan
RePaintSchedulerOutput atau tuple[torch.Tensor, torch.Tensor]
Jika return_dict adalah True, RePaintSchedulerOutput dikembalikan,
sebaliknya sebuah tuple dikembalikan di mana elemen pertama adalah sampel sebelumnya dan elemen kedua adalah
sampel asli yang diprediksi.
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).
undo_step
< source >( sample: Tensortimestep: intgenerator: typing.Optional[torch.Generator] = None ) → torch.Tensor
Tambahkan noise ke sampel untuk menggerakkannya maju satu langkah difusi.
RePaintSchedulerOutput
kelas diffusers.schedulers.scheduling_repaint.RePaintSchedulerOutput
< source >( prev_sample: Tensorpred_original_sample: 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. - pred_original_sample (
torch.Tensordengan bentuk(batch_size, num_channels, height, width)untuk gambar) — Contoh denoised (x_{0}) yang diprediksi berdasarkan keluaran model dari timestep saat ini.pred_original_sampledapat digunakan untuk pratinjau progres atau untuk guidance.
Kelas output untuk output fungsi langkah penjadwal.