Buckets:
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[[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)
Paramètres :
in_channels (int, facultatif, valeur par défaut 3) : Nombre de canaux de l'image d'entrée.
out_channels (int, facultatif, valeur 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 downsampling.
up_block_types (tuple[str], facultatif, par défaut ("UpDecoderBlock2D",)) : tuple des types de blocs de suréchantillonnage.
block_out_channels (tuple[int], facultatif, par défaut (64,)) : tuple 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, par défaut 3) : Nombre de canaux dans l'espace latent.
sample_size (int, facultatif, par défaut 32) : Taille d'entrée d'échantillonnage.
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 de données 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 (tels que le téléchargement ou l'enregistrement).
forward[[diffusers.VQModel.forward]]
forward(sample: Tensor, return_dict: bool = True)
Paramètres :
sample (torch.Tensor) : Échantillon d'entrée.
return_dict (bool, facultatif, par défaut True) : Indique s'il faut retourner un models.autoencoders.vq_model.VQEncoderOutput plutôt qu'un simple tuple.
Retourne : VQEncoderOutput ou tuple
Si return_dict est True, un VQEncoderOutput est renvoyé, sinon un simple tuple est renvoyé.
La méthode forward de 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)
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.
Xet Storage Details
- Size:
- 6.66 kB
- Xet hash:
- 0c2b10f20c5f228d851761b8d119d113688468e986dadb16f7f6a585125f6b1d
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.