Diffusers documentation

AutoencoderKLMiniMaxH3Image

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

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