Diffusers documentation
VQModel
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
< 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 )
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éfaut1) — 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éfaut3) — Nombre de canaux dans l'espace latent. - sample_size (
int, facultatif, par défaut32) — Taille de l'échantillon d'entrée. - num_vq_embeddings (
int, facultatif, par défaut256) — Nombre de vecteurs du codebook dans le VQ-VAE. - norm_num_groups (
int, facultatif, valeur par défaut32) — 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éfaut0.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 formulez = z * scaling_factoravant 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
< source >( sample: Tensorreturn_dict: bool = True ) → VQEncoderOutput or tuple
Paramètres
- sample (
torch.Tensor) — Échantillon d'entrée. - return_dict (
bool, facultatif, par défautTrue) — Indique s'il faut retourner un models.autoencoders.vq_model.VQEncoderOutput plutôt qu'un simple tuple.
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
< source >( latents: Tensor )
Sortie de la méthode d'encodage de VQModel.