Diffusers documentation

AutoencoderKLMiniMaxH3

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.43.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

AutoencoderKLMiniMaxH3

O modelo de autoencoder variacional de vídeo (VAE) com perda KL usado em MiniMax-H3 pela MiniMax. Ele combina um codificador de CNN 3D causal com um decodificador ViT não causal e comprime 16x espacialmente e 4x temporalmente.

Três coisas o diferenciam da maioria dos autoencoders na biblioteca:

  • Os latentes são normalizados por canal. Não há scaling_factor: um pipeline codifica com (latent - latents_mean) / latents_std e decodifica com latent * latents_std + latents_mean.
  • A convenção de pixels é RGB normalizado pelo ImageNet sobre um intervalo base de [0, 1], e não o intervalo usual de [-1, 1]. encode espera (pixel - imagenet_mean) / imagenet_std e decode retorna valores nesse mesmo espaço, de modo que um pipeline aplica sample * imagenet_std + imagenet_mean e limita para [0, 1] antes do pós-processamento.
  • O tileamento espacial está ativado por padrão. O MiniMax-H3 foi lançado com o tileamento ativado tanto para codificação quanto para decodificação, e os quadros liberados são os de tiles mesclados, portanto desativá-lo altera a saída. Use enable_tiling para alterar a geometria dos tiles e disable_tiling para desativá-lo.

A geometria temporal é fixada por clip_length (17 quadros de pixels por bloco do codificador) e token_drop (3 quadros latentes finais descartados por codificação), de modo que 17 * n + 5 quadros de pixels correspondem a 5 * n + 2 quadros 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) )

Um modelo VAE com um codificador de CNN 3D causal e um decodificador ViT não causal, usado no MiniMax-H3.

Este modelo herda de ModelMixin. Consulte a documentação da superclasse para seus métodos genéricos implementados para todos os modelos (como download ou salvamento).

Os latentes são normalizados com latents_mean / latents_std por canal, em vez de um scaling_factor; um pipeline codifica com (latent - latents_mean) / latents_std e decodifica com latent * latents_std + latents_mean.

A convenção de pixels é RGB normalizado pelo ImageNet sobre uma faixa base de [0, 1], e não a usual [-1, 1]: encode espera (pixel - imagenet_mean) / imagenet_std e decode retorna valores nesse mesmo espaço, portanto um pipeline precisa aplicar sample * imagenet_std + imagenet_mean (média (0.485, 0.456, 0.406), desvio padrão (0.229, 0.224, 0.225)) e limitar para [0, 1] antes do pós-processamento.

A geometria temporal é fixada por clip_length (17 quadros de pixels por bloco do codificador) e token_drop (3 quadros latentes finais descartados por codificação): 17 * n + 5 quadros de pixels mapeiam para 5 * n + 2 quadros latentes.

Diferente da maioria dos autoencoders da biblioteca, o tiling espacial está ativado por padrão: o MiniMax-H3 foi lançado com o tiling habilitado tanto para codificação quanto para decodificação, e os quadros publicados são os de tiles mesclados, portanto, desativar o tiling altera a saída. Use enable_tiling para alterar a geometria dos tiles e disable_tiling para desativá-lo.

encode

< >

( x: Tensorreturn_dict: bool = True )

Parâmetros

  • x (torch.Tensor) — Lote de entrada de vídeos, com forma (batch_size, in_channels, num_frames, height, width).
  • return_dict (bool, opcional, padrão True) — Se deve retornar um AutoencoderKLOutput em vez de uma tupla simples.

Codifique um lote de vídeos em latentes.

decode

< >

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

Parâmetros

  • z (torch.Tensor) — Lote de entrada de vídeos latentes, com forma (batch_size, latent_channels, num_latent_frames, height, width).
  • return_dict (bool, opcional, padrão True) — Se deve retornar um DecoderOutput em vez de uma tupla simples.

Retorna

DecoderOutput ou tuple

Os vídeos decodificados, com forma (batch_size, out_channels, num_frames, height, width).

Decodifique um lote de vídeos 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 )

Parâmetros

  • tile_sample_min_height (int, opcional) — A altura da tile no espaço de pixels. Quadros mais altos que isso são divididos ao longo da dimensão de altura.
  • tile_sample_min_width (int, opcional) — A largura do tile no espaço de pixels. Quadros mais largos que esse valor são divididos ao longo da dimensão de largura.
  • tile_sample_min_overlap_height (int, opcional) — A sobreposição mínima, em pixels, entre duas tiles verticais consecutivas.
  • tile_sample_min_overlap_width (int, opcional) — A sobreposição mínima, em pixels, entre duas tiles horizontais consecutivas.

Ativa a codificação/decodificação em blocos (tiled) do VAE. Quando essa opção está ativada, o VAE divide os quadros em blocos, codifica ou decodifica cada bloco separadamente e mescla linearmente as sobreposições novamente. Isso reduz o requisito de memória e permite o processamento de quadros maiores.

forward

< >

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

Parâmetros

  • sample (torch.Tensor) — Lote de entrada de vídeos, forma (batch_size, in_channels, num_frames, height, width).
  • sample_posterior (bool, opcional, padrão False) — Se deve amostrar a posterior em vez de tomar seu modo.
  • generator (torch.Generator, opcional) — Gerador usado quando sample_posterior=True.
  • return_dict (bool, opcional, padrão True) — Se deve retornar um DecoderOutput em vez de uma tupla simples.

Retorna

DecoderOutput ou tuple

Os vídeos de ida e volta, com forma (batch_size, out_channels, num_frames, height, width).

Codifique e depois decodifique um lote de vídeos.

Update on GitHub