Buckets:

mishig's picture
|
download
raw
9.72 kB

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[[diffusers.RePaintScheduler]]

diffusers.RePaintScheduler[[diffusers.RePaintScheduler]]

diffusers.RePaintScheduler(num_train_timesteps: int = 1000, beta_start: float = 0.0001, beta_end: float = 0.02, beta_schedule: str = 'linear', eta: float = 0.0, trained_betas: numpy.ndarray | None = None, clip_sample: bool = True)

Sumber

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 (str, defaultnya "linear") : Jadwal beta, pemetaan dari rentang beta ke urutan beta untuk melangkah model. Pilih dari linear, scaled_linear, squaredcos_cap_v2, atau sigmoid.

eta (float, defaultnya 0.0) : Bobot noise yang ditambahkan selama langkah difusi. Nilai 0.0 sesuai dengan DDIM dan nilai 1.0 sesuai dengan DDPM.

trained_betas (np.ndarray, opsional) : Lewatkan beta_start dan beta_end dengan meneruskan array betas secara langsung ke konstruktor.

clip_sample (bool, defaultnya True) : 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[[diffusers.RePaintScheduler.add_noise]]

add_noise(original_samples: Tensor, noise: Tensor, timesteps: IntTensor)

Sumber

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 akan menentukan tingkat noise untuk setiap sampel.

Mengangkat: NotImplementedError

Tunjukkan bahwa penambahan noise untuk pelatihan RePaint tidak didukung oleh scheduler ini.

scale_model_input[[diffusers.RePaintScheduler.scale_model_input]]

scale_model_input(sample: Tensor, timestep: int | None = None)

Sumber

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.RePaintScheduler.set_timesteps]]

set_timesteps(num_inference_steps: int, jump_length: int = 10, jump_n_sample: int = 10, device: typing.Union[str, torch.device, NoneType] = None)

Sumber

Parameter:

num_inference_steps (int) : Jumlah langkah difusi yang digunakan saat menghasilkan sampel dengan model terlatih sebelumnya.

jump_length (int, defaultnya 10) : Jumlah langkah yang diambil maju dalam waktu sebelum mundur dalam waktu untuk satu lompatan (“j” dalam paper RePaint). Lihat Gambar 9 dan 10 dalam paper tersebut.

jump_n_sample (int, defaultnya 10) : Jumlah kali lompatan waktu ke depan yang dilakukan untuk sampel waktu tertentu. Lihat Gambar 9 dan 10 di makalah tersebut.

device (str atau torch.device, opsional) : Perangkat tempat timestep harus dipindahkan. Jika None, timestep tidak dipindahkan.

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

langkah[[diffusers.RePaintScheduler.step]]

step(model_output: Tensor, timestep: int, sample: Tensor, original_image: Tensor, mask: Tensor, generator: typing.Optional[torch.Generator] = None, return_dict: bool = True)

Sumber

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.

original_image (torch.Tensor) : Gambar asli untuk di-inpaint.

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, defaultnya True) : Apakah akan mengembalikan RePaintSchedulerOutput alih-alih tuple.

Mengembalikan: RePaintSchedulerOutput atau tuple[torch.Tensor, torch.Tensor]

Jika return_dict adalah True, RePaintSchedulerOutput dikembalikan, selain itu 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[[diffusers.RePaintScheduler.undo_step]]

undo_step(sample: Tensor, timestep: int, generator: typing.Optional[torch.Generator] = None)

Sumber

Parameter:

sample (torch.Tensor) : Sampel yang ditambahkan dengan noise.

timestep (int) : Langkah waktu diskret saat ini dalam rantai difusi.

generator (torch.Generator, opsional) : Generator angka acak.

Mengembalikan: torch.Tensor

Contoh pada langkah waktu berikutnya dalam rantai difusi.

Tambahkan noise ke sampel untuk menggerakkannya maju satu langkah difusi.

RePaintSchedulerOutput[[diffusers.schedulers.scheduling_repaint.RePaintSchedulerOutput]]

diffusers.schedulers.scheduling_repaint.RePaintSchedulerOutput[[diffusers.schedulers.scheduling_repaint.RePaintSchedulerOutput]]

diffusers.schedulers.scheduling_repaint.RePaintSchedulerOutput(prev_sample: Tensor, pred_original_sample: Tensor)

Sumber

Parameter:

prev_sample (torch.Tensor dengan bentuk (batch_size, num_channels, height, width) untuk gambar) : Sampel yang dihitung (x_{t-1}) 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 (x_{0}) yang diprediksi berdasarkan output model dari timestep saat ini. pred_original_sample dapat digunakan untuk pratinjau progres atau untuk guidance.

Kelas output untuk output fungsi langkah penjadwal.

Xet Storage Details

Size:
9.72 kB
·
Xet hash:
8766de0ca1950d49aa8c182609b1060945e133d9ab508f9e54a3229094de6267

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