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

Le modèle VQ-VAE a été introduit dans Neural Discrete Representation Learning par Aaron van den Oord, Oriol Vinyals et Koray Kavukcuoglu. Le modèle est utilisé dans 🤗 Diffusers pour décoder des représentations latentes en images. Contrairement à AutoencoderKL, le VQModel fonctionne dans un espace latent quantifié.

L'abstract de l'article est :

Apprendre des représentations utiles sans supervision reste un défi majeur en apprentissage automatique. Dans cet article, nous proposons un modèle génératif simple mais puissant qui apprend de telles représentations discrètes. Notre modèle, le Vector Quantised-Variational AutoEncoder (VQ-VAE), diffère des VAE à deux égards essentiels : le réseau encodeur produit des codes discrets plutôt que continus ; et la loi a priori est apprise plutôt que statique. Afin d’apprendre une représentation latente discrète, nous intégrons des idées issues de la quantification vectorielle (VQ). L’utilisation de la méthode VQ permet au modèle de contourner les problèmes de « posterior collapse » — où les variables latentes sont ignorées lorsqu’elles sont associées à un décodeur autorégressif puissant — généralement observés dans le cadre des VAE. En associant ces représentations à une loi a priori autorégressive, le modèle peut générer des images, des vidéos et des voix de haute qualité, ainsi que réaliser des conversions de locuteurs de haute qualité et un apprentissage non supervisé de phonèmes, fournissant ainsi des preuves supplémentaires de l’utilité des représentations apprises.

VQModel

classe 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 )

Paramètres

  • in_channels (int, facultatif, valeur par défaut 3) — Nombre de canaux de l'image d'entrée.
  • out_channels (int, facultatif, par défaut 3) — Nombre de canaux dans la sortie.
  • down_block_types (tuple[str], facultatif, par défaut ("DownEncoderBlock2D",)) — tuple des types de blocs de sous-échantillonnage.
  • up_block_types (tuple[str], facultatif, par défaut ("UpDecoderBlock2D",)) — tuple de types de blocs de suréchantillonnage.
  • block_out_channels (tuple[int], facultatif, par défaut (64,)) — tuplet des canaux de sortie des blocs.
  • layers_per_block (int, facultatif, par défaut 1) — Nombre de couches par bloc.
  • act_fn (str, facultatif, par défaut "silu") — La fonction d'activation à utiliser.
  • latent_channels (int, facultatif, valeur par défaut 3) — Nombre de canaux dans l'espace latent.
  • sample_size (int, facultatif, par défaut 32) — Taille de l'échantillon d'entrée.
  • num_vq_embeddings (int, facultatif, par défaut 256) — Nombre de vecteurs du codebook dans le VQ-VAE.
  • norm_num_groups (int, facultatif, valeur par défaut 32) — Nombre de groupes pour les couches de normalisation.
  • vq_embed_dim (int, facultatif) — Dimension cachée des vecteurs du codebook dans le VQ-VAE.
  • scaling_factor (float, facultatif, valeur par défaut 0.18215) — L'écart-type par composante de l'espace latent entraîné, calculé à l'aide du premier lot du jeu d'entraînement. Il est utilisé pour mettre à l'échelle l'espace latent afin qu'il ait une variance unitaire lors de l'entraînement du modèle de diffusion. Les latents sont mis à l'échelle avec la formule z = z * scaling_factor avant d'être transmis au modèle de diffusion. Lors du décodage, les latents sont remis à l'échelle d'origine avec la formule : z = 1 / scaling_factor * z. Pour plus de détails, consultez les sections 4.3.2 et D.1 de l'article High-Resolution Image Synthesis with Latent Diffusion Models.
  • norm_type (str, facultatif, par défaut "group") — Type de couche de normalisation à utiliser. Peut être "group" ou "spatial".

Un modèle VQ-VAE pour le décodage des représentations latentes.

Ce modèle hérite de ModelMixin. Consultez la documentation de la classe parente pour ses méthodes génériques implémentées pour tous les modèles (téléchargement ou sauvegarde, par exemple).

forward

< >

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

Paramètres

Retourne

VQEncoderOutput ou tuple

If return_dict is True, a VQEncoderOutput is returned, otherwise a plain tuple is returned.

La méthode forward de VQModel.

VQEncoderOutput

classe diffusers.models.autoencoders.vq_model.VQEncoderOutput

< >

( latents: Tensor )

Paramètres

  • latents (torch.Tensor de forme (batch_size, num_channels, height, width)) — L'échantillon de sortie encodé de la dernière couche du modèle.

Sortie de la méthode d'encodage de VQModel.

Update on GitHub