Diffusers documentation

AutoencoderKLMiniMaxH3Image

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

AutoencoderKLMiniMaxH3Image

Le modèle d'auto-encodeur variationnel (VAE) d'image avec perte KL utilisé dans MiniMax-H3-Image par MiniMax. Il associe l'encodeur CNN 3D causal de AutoencoderKLMiniMaxH3, exécuté sur une seule image, à un décodeur ViT 2D, et compresse spatialement par un facteur de 16. encode et decode prennent en entrée et renvoient des tenseurs d'image 4D.

Elle partage trois conventions avec AutoencoderKLMiniMaxH3 :

  • 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-Image a été publié avec le tuilage activé pour l’encodage et le décodage, et les images publiées sont celles issues du mélange de tuiles ; 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.
import torch
from diffusers import AutoencoderKLMiniMaxH3Image

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

AutoencoderKLMiniMaxH3Image

classe diffusers.AutoencoderKLMiniMaxH3Image

< >

( 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 = 24decoder_num_attention_heads: int = 16decoder_attention_head_dim: int = 64decoder_num_register_tokens: int = 4decoder_ffn_mult: int = 4decoder_rope_theta: float = 100.0decoder_rope_dim_ratio: float = 0.5decoder_norm_eps: float = 1e-05latents_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 2D non causal, utilisé dans MiniMax-H3-Image. L'encodeur est l'encodeur vidéo MiniMax-H3 appliqué à une seule image ; le décodeur est un ViT dédié aux images.

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.

Contrairement à la plupart des autoencodeurs de la bibliothèque, le tuilage spatial est activé par défaut : MiniMax-H3-Image a été publié avec le tuilage activé pour l’encodage et le décodage, et les images publiées sont celles obtenues par fusion de tuiles, 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'images en entrée, de forme (batch_size, in_channels, height, width).
  • return_dict (bool, facultatif, par défaut True) — Indique s'il faut retourner un AutoencoderKLOutput plutôt qu'un simple tuplet.

Encode un lot d'images en latents.

décoder

< >

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

Paramètres

  • z (torch.Tensor) — Lot d'entrée de latents, de forme (batch_size, latent_channels, 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 images décodées, de forme (batch_size, out_channels, height * spatial_compression_ratio, width * spatial_compression_ratio).

Décoder un lot de latents.

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'images en entrée, de forme (batch_size, in_channels, 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 images après aller-retour, de forme (batch_size, out_channels, height, width).

Encoder puis décoder un lot d'images.

Update on GitHub