Diffusers documentation

AutoencoderKLMiniMaxH3Image

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

AutoencoderKLMiniMaxH3Image

O modelo de autoencoder variacional (VAE) de imagem com perda KL usado em MiniMax-H3-Image pela MiniMax. Ele combina o codificador de CNN 3D causal de AutoencoderKLMiniMaxH3, executado sobre um único quadro, com um decodificador ViT 2D, e comprime espacialmente por um fator de 16x. encode e decode recebem e retornam tensores de imagem 4D.

Ele compartilha três convenções com AutoencoderKLMiniMaxH3:

  • 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 mosaico espacial está ativado por padrão. O MiniMax-H3-Image foi lançado com o mosaico ativado tanto para codificação quanto para decodificação, e as imagens publicadas são as de mosaico mesclado, portanto desativá-lo altera a saída. Use enable_tiling para alterar a geometria do mosaico e disable_tiling para desativá-lo.
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) )

Um modelo VAE com um codificador de CNN 3D causal e um decodificador de ViT 2D não causal, usado em MiniMax-H3-Image. O codificador é o codificador de vídeo MiniMax-H3 executado sobre um único frame; o decodificador é um ViT apenas para imagem.

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.

Diferente da maioria dos autoencoders na biblioteca, o tiling espacial está ativado por padrão: o MiniMax-H3-Image foi lançado com o tiling habilitado tanto para codificação quanto para decodificação, e as imagens lançadas são as de tiles mesclados, portanto, desabilitar 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 imagens, com forma (batch_size, in_channels, height, width).
  • return_dict (bool, opcional, padrão True) — Se deve retornar um AutoencoderKLOutput em vez de uma tupla simples.

Codifica um lote de imagens em latentes.

decode

< >

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

Parâmetros

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

Retorna

DecoderOutput ou tuple

As imagens decodificadas, com forma (batch_size, out_channels, height * spatial_compression_ratio, width * spatial_compression_ratio).

Decodifica um lote de 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 imagens, com forma (batch_size, in_channels, 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

As imagens de ida e volta, com forma (batch_size, out_channels, height, width).

Codifique e depois decodifique um lote de imagens.

Update on GitHub