Buckets:

mishig's picture
|
download
raw
6.1 kB

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

diffusers.VQModel[[diffusers.VQModel]]

diffusers.VQModel(in_channels: int = 3, out_channels: int = 3, down_block_types: tuple[str, ...] = ('DownEncoderBlock2D',), up_block_types: tuple[str, ...] = ('UpDecoderBlock2D',), block_out_channels: tuple[int, ...] = (64,), layers_per_block: int = 1, act_fn: str = 'silu', latent_channels: int = 3, sample_size: int = 32, num_vq_embeddings: int = 256, norm_num_groups: int = 32, vq_embed_dim: int | None = None, scaling_factor: float = 0.18215, norm_type: str = 'group', mid_block_add_attention = True, lookup_from_codebook = False, force_upcast = False)

Sumber

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, defaultnya (64,)) : tuple dari kanal output blok.

layers_per_block (int, opsional, defaultnya 1) : Jumlah lapisan per blok.

act_fn (str, opsional, defaultnya "silu") : Fungsi aktivasi yang akan digunakan.

latent_channels (int, opsional, defaultnya 3) : Jumlah channel di ruang laten.

sample_size (int, opsional, defaultnya 32) : Ukuran input sampel.

num_vq_embeddings (int, opsional, defaultnya 256) : Jumlah vektor codebook dalam VQ-VAE.

norm_num_groups (int, opsional, defaultnya 32) : Jumlah grup untuk lapisan normalisasi.

vq_embed_dim (int, opsional) : Dimensi tersembunyi dari vektor codebook dalam VQ-VAE.

scaling_factor (float, opsional, defaultnya 0.18215) : Deviasi standar per komponen dari ruang laten yang dilatih, dihitung menggunakan batch pertama dari set pelatihan. Ini digunakan untuk menskalakan ruang laten agar memiliki varians satuan saat melatih model difusi. Laten diskalakan dengan rumus z = z * scaling_factor sebelum 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[[diffusers.VQModel.forward]]

forward(sample: Tensor, return_dict: bool = True)

Sumber

Parameter:

sample (torch.Tensor) : Sampel input.

return_dict (bool, opsional, defaultnya True) : 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[[diffusers.models.autoencoders.vq_model.VQEncoderOutput]]

diffusers.models.autoencoders.vq_model.VQEncoderOutput[[diffusers.models.autoencoders.vq_model.VQEncoderOutput]]

diffusers.models.autoencoders.vq_model.VQEncoderOutput(latents: Tensor)

Sumber

Parameter:

latents (torch.Tensor dengan bentuk (batch_size, num_channels, height, width)) : Sampel output terenkod dari lapisan terakhir model.

Output dari metode encoding VQModel.

Xet Storage Details

Size:
6.1 kB
·
Xet hash:
88d2a328da6e9adf796cdba0530490b3df0e470bfd178f0f634f209058e46a4c

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