Diffusers documentation

VQModel

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

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

< >

( 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, default 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, default 32) — Ukuran sampel input.
  • num_vq_embeddings (int, opsional, default 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, default 0.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 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

< >

( sample: Tensorreturn_dict: bool = True ) → VQEncoderOutput or tuple

Parameter

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

< >

( latents: Tensor )

Parameter

  • latents (torch.Tensor dengan bentuk (batch_size, num_channels, height, width)) — Contoh output terenkripsi dari lapisan terakhir model.

Output dari metode encoding VQModel.

Update on GitHub