Diffusers documentation

AutoencoderKLMiniMaxH3

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

AutoencoderKLMiniMaxH3

Le modèle de variational autoencoder (VAE) vidéo avec perte KL utilisé dans MiniMax-H3 par MiniMax. Il associe un encodeur CNN 3D causal à un décodeur ViT non causal et compresse 16x spatialement et 4x temporellement.

Trois éléments la distinguent de la plupart des auto-encodeurs de la bibliothèque :

  • Les latents sont normalisés par canal. Il n'y a pas de scaling_factor : un pipeline encode avec (latent - latents_mean) / latents_std et décode avec latent * latents_std + latents_mean.
  • La convention des pixels est le RGB normalisé ImageNet sur une plage de base [0, 1], et non la plage habituelle [-1, 1]. encode s'attend à (pixel - imagenet_mean) / imagenet_std et decode renvoie des valeurs dans cet même espace, de sorte qu'un pipeline applique sample * imagenet_std + imagenet_mean et borne à [0, 1] avant le post-traitement.
  • Le tuilage spatial est activé par défaut. MiniMax-H3 a été publié avec le tuilage activé pour l’encodage et le décodage, et les images publiées sont celles issues du tuilage fusionné ; le désactiver modifie donc la sortie. Utilisez enable_tiling pour modifier la géométrie des tuiles et disable_tiling pour le désactiver.

La géométrie temporelle est fixée par clip_length (17 trames de pixels par bloc d’encodeur) et token_drop (3 trames latentes finales supprimées par encodage), de sorte que 17 * n + 5 trames de pixels correspondent à 5 * n + 2 trames latentes.

import torch
from diffusers import AutoencoderKLMiniMaxH3

vae = AutoencoderKLMiniMaxH3.from_pretrained(
    "MiniMaxAI/MiniMax-H3", subfolder="vae", dtype=torch.float32
).to("cuda")  # or "mps", "xpu", "cpu"

AutoencoderKLMiniMaxH3

classe diffusers.AutoencoderKLMiniMaxH3

< >

( in_channels: int = 3out_channels: int = 3latent_channels: int = 24block_out_channels: tuple[int, ...] = (128, 256, 256, 512, 512, 1024)layers_per_block: int = 2spatial_downsample_factors: tuple[int, ...] = (2, 2, 2, 2, 1, 1)temporal_downsample_factors: tuple[int, ...] = (1, 2, 2, 1, 1, 1)norm_num_groups: int = 32norm_eps: float = 1e-06spatial_padding_mode: str = 'reflect'decoder_num_layers: int = 36decoder_num_attention_heads: int = 32decoder_attention_head_dim: int = 64decoder_num_register_tokens: int = 4decoder_ffn_mult: int = 4decoder_rope_theta: float = 100.0decoder_rope_dim_ratio: float = 0.75decoder_norm_eps: float = 1e-05clip_length: int = 17token_drop: int = 3latents_mean: tuple[float, ...] = (0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)latents_std: tuple[float, ...] = (1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0) )

Un modèle VAE doté d'un encodeur CNN 3D causal et d'un décodeur ViT non causal, utilisé dans MiniMax-H3.

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

Les latents sont normalisés avec latents_mean / latents_std par canal plutôt qu’avec un scaling_factor ; un pipeline encode avec (latent - latents_mean) / latents_std et décode avec latent * latents_std + latents_mean.

La convention des pixels est le RGB normalisé ImageNet sur une plage de base [0, 1], et non la plage habituelle [-1, 1] : encode s'attend à (pixel - imagenet_mean) / imagenet_std et decode renvoie des valeurs dans cet même espace, de sorte qu'un pipeline doit appliquer sample * imagenet_std + imagenet_mean (moyenne (0.485, 0.456, 0.406), écart-type (0.229, 0.224, 0.225)) et limiter à [0, 1] avant le post-traitement.

La géométrie temporelle est fixée par clip_length (17 trames de pixels par bloc d’encodeur) et token_drop (3 trames latentes finales supprimées par encodage) : 17 * n + 5 trames de pixels correspondent à 5 * n + 2 trames latentes.

Contrairement à la plupart des autoencodeurs de la bibliothèque, le tuilage spatial est activé par défaut : MiniMax-H3 a été publié avec le tuilage activé pour l’encodage et le décodage, et les images publiées sont celles issues du tuilage fusionné, de sorte que la désactivation du tuilage modifie la sortie. Utilisez enable_tiling pour modifier la géométrie des tuiles et disable_tiling pour le désactiver.

encode

< >

( x: Tensorreturn_dict: bool = True )

Paramètres

  • x (torch.Tensor) — Lot d'entrée de vidéos, de forme (batch_size, in_channels, num_frames, height, width).
  • return_dict (bool, facultatif, par défaut True) — Indique s'il faut retourner un AutoencoderKLOutput plutôt qu'un simple tuplet.

Encoder un lot de vidéos en latents.

décoder

< >

( z: Tensorreturn_dict: bool = True ) → DecoderOutput or tuple

Paramètres

  • z (torch.Tensor) — Lot d'entrée de vidéos latentes, de forme (batch_size, latent_channels, num_latent_frames, height, width).
  • return_dict (bool, facultatif, par défaut True) — Indique s'il faut retourner un DecoderOutput plutôt qu'un simple tuple.

Retourne

DecoderOutput ou tuple

Les vidéos décodées, de forme (batch_size, out_channels, num_frames, height, width).

Décoder un lot de vidéos latentes.

enable_tiling

< >

( tile_sample_min_height: int | None = Nonetile_sample_min_width: int | None = Nonetile_sample_min_overlap_height: int | None = Nonetile_sample_min_overlap_width: int | None = None )

Paramètres

  • tile_sample_min_height (int, facultatif) — La hauteur de la tuile en espace pixel. Les images plus hautes que cette valeur sont divisées le long de la dimension de hauteur.
  • tile_sample_min_width (int, facultatif) — La largeur de la tuile en espace pixel. Les images plus larges que cette valeur sont divisées le long de la dimension de largeur.
  • tile_sample_min_overlap_height (int, facultatif) — La superposition minimale, en pixels, entre deux tuiles verticales consécutives.
  • tile_sample_min_overlap_width (int, facultatif) — La superposition minimale, en pixels, entre deux tuiles horizontales consécutives.

Active l’encodage/décodage VAE par tuiles. Lorsque cette option est activée, le VAE divise les images en tuiles, encode ou décode chaque tuile séparément et fusionne linéairement les zones de chevauchement. Cela réduit la consommation mémoire et permet de traiter des images plus grandes.

forward

< >

( sample: Tensorsample_posterior: bool = Falsegenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → DecoderOutput or tuple

Paramètres

  • sample (torch.Tensor) — Lot d'entrée de vidéos, de forme (batch_size, in_channels, num_frames, height, width).
  • sample_posterior (bool, facultatif, par défaut False) — Indique s'il faut échantillonner la distribution a posteriori plutôt que de prendre son mode.
  • generator (torch.Generator, facultatif) — Générateur utilisé lorsque sample_posterior=True.
  • return_dict (bool, facultatif, par défaut True) — Indique s'il faut retourner un DecoderOutput plutôt qu'un simple tuple.

Retourne

DecoderOutput ou tuple

Les vidéos après aller-retour, de forme (batch_size, out_channels, num_frames, height, width).

Encoder puis décoder un lot de vidéos.

Update on GitHub