Diffusers documentation

RePaintScheduler

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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

< >

( 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, defaultnya 1000) — Jumlah langkah difusi untuk melatih model.
  • beta_start (float, defaultnya 0.0001) — Nilai beta awal 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 melangkahkan 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) — Lewati beta_start dan beta_end dengan meneruskan array betas 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

< >

( 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

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

scale_model_input

< >

( sample: Tensortimestep: int | None = None ) → torch.Tensor

Parameter

  • sample (torch.Tensor) — Contoh input.
  • timestep (int, opsional) — 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

< >

( 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, defaultnya 10) — 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, defaultnya 10) — Jumlah kali lompatan waktu maju yang dilakukan untuk sampel waktu tertentu. Lihat Gambar 9 dan 10 di makalah tersebut.
  • device (str atau torch.device, opsional) — Perangkat tempat timesteps harus dipindahkan. Jika None, timesteps tidak dipindahkan.

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

langkah

< >

( 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, defaultnya True) — 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

< >

( sample: Tensortimestep: intgenerator: typing.Optional[torch.Generator] = None ) → torch.Tensor

Parameter

  • sample (torch.Tensor) — Contoh yang akan ditambahkan dengan noise.
  • timestep (int) — Timestep diskrit 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

kelas diffusers.schedulers.scheduling_repaint.RePaintSchedulerOutput

< >

( prev_sample: Tensorpred_original_sample: Tensor )

Parameter

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

Kelas output untuk output fungsi langkah penjadwal.

Update on GitHub