Diffusers documentation
VQModel
VQModel
Model VQ-VAE diperkenalkan dalam Neural Discrete Representation Learning oleh Aaron van den Oord, Oriol Vinyals, dan Koray Kavukcuoglu. Model ini digunakan dalam 🤗 Diffusers untuk mendekode representasi laten menjadi gambar. Berbeda dengan AutoencoderKL, VQModel bekerja di ruang laten yang terkuantisasi.
Abstrak dari makalah tersebut adalah:
Belajar representasi yang berguna tanpa supervisi tetap menjadi tantangan utama dalam machine learning. Dalam makalah ini, kami mengusulkan model generatif yang sederhana namun kuat untuk mempelajari representasi diskrit semacam itu. Model kami, Vector Quantised-Variational AutoEncoder (VQ-VAE), berbeda dari VAE dalam dua hal utama: jaringan encoder menghasilkan kode diskrit, bukan kontinu; dan prior dipelajari, bukan statis. Untuk mempelajari representasi laten diskrit, kami mengintegrasikan ide-ide dari vector quantisation (VQ). Penggunaan metode VQ memungkinkan model menghindari masalah “posterior collapse” — di mana laten diabaikan ketika dipasangkan dengan decoder autoregressive yang kuat — yang biasanya diamati dalam kerangka kerja VAE. Dengan memasangkan representasi ini dengan prior autoregressive, model dapat menghasilkan gambar, video, dan ucapan berkualitas tinggi, serta melakukan konversi pembicara berkualitas tinggi dan pembelajaran fonem tanpa supervisi, yang memberikan bukti lebih lanjut tentang kegunaan representasi yang dipelajari.
VQModel
kelas diffusers.VQModel
< source >( in_channels: int = 3out_channels: int = 3down_block_types: tuple = ('DownEncoderBlock2D',)up_block_types: tuple = ('UpDecoderBlock2D',)block_out_channels: tuple = (64,)layers_per_block: int = 1act_fn: str = 'silu'latent_channels: int = 3sample_size: int = 32num_vq_embeddings: int = 256norm_num_groups: int = 32vq_embed_dim: int | None = Nonescaling_factor: float = 0.18215norm_type: str = 'group'mid_block_add_attention = Truelookup_from_codebook = Falseforce_upcast = False )
Parameter
- in_channels (int, opsional, default 3) — Jumlah channel pada gambar input.
- out_channels (int, opsional, default 3) — Jumlah channel pada output.
- down_block_types (
tuple[str], opsional, defaultnya("DownEncoderBlock2D",)) — tuple dari tipe blok downsample. - up_block_types (
tuple[str], opsional, defaultnya("UpDecoderBlock2D",)) — tuple dari tipe blok upsample. - block_out_channels (
tuple[int], opsional, default(64,)) — tuple dari kanal output blok. - layers_per_block (
int, opsional, default1) — Jumlah lapisan per blok. - act_fn (
str, opsional, defaultnya"silu") — Fungsi aktivasi yang akan digunakan. - latent_channels (
int, opsional, defaultnya3) — Jumlah channel di ruang laten. - sample_size (
int, opsional, default32) — Ukuran sampel input. - num_vq_embeddings (
int, opsional, default256) — Jumlah vektor codebook dalam VQ-VAE. - norm_num_groups (
int, opsional, defaultnya32) — Jumlah grup untuk lapisan normalisasi. - vq_embed_dim (
int, opsional) — Dimensi tersembunyi dari vektor codebook dalam VQ-VAE. - scaling_factor (
float, opsional, default0.18215) — Standar deviasi per komponen dari ruang laten yang dilatih, dihitung menggunakan batch pertama dari set pelatihan. Nilai ini digunakan untuk menskalakan ruang laten agar memiliki varians satu saat melatih model difusi. Laten diskalakan dengan rumusz = z * scaling_factorsebelum diteruskan ke model difusi. Saat decoding, laten diskalakan kembali ke skala aslinya dengan rumus:z = 1 / scaling_factor * z. Untuk detail lebih lanjut, lihat bagian 4.3.2 dan D.1 dari paper High-Resolution Image Synthesis with Latent Diffusion Models. - norm_type (
str, opsional, defaultnya"group") — Jenis lapisan normalisasi yang akan digunakan. Bisa berupa"group"atau"spatial".
Model VQ-VAE untuk mendekode representasi laten.
Model ini mewarisi dari ModelMixin. Periksa dokumentasi kelas induk untuk metode generiknya yang diimplementasikan untuk semua model (seperti mengunduh atau menyimpan).
forward
< source >( sample: Tensorreturn_dict: bool = True ) → VQEncoderOutput or tuple
Parameter
- sample (
torch.Tensor) — Sampel input. - return_dict (
bool, opsional, defaultTrue) — Apakah akan mengembalikan models.autoencoders.vq_model.VQEncoderOutput alih-alih tuple biasa.
Mengembalikan
VQEncoderOutput atau tuple
Jika return_dict adalah True, sebuah VQEncoderOutput dikembalikan, selain itu sebuah tuple polos dikembalikan.
Metode forward dari VQModel.
VQEncoderOutput
kelas diffusers.models.autoencoders.vq_model.VQEncoderOutput
< source >( latents: Tensor )
Output dari metode encoding VQModel.