# AutoencoderKLMiniMaxH3Image

O modelo de autoencoder variacional (VAE) de imagem com perda KL usado em [MiniMax-H3-Image](https://huggingface.co/MiniMaxAI/MiniMax-H3-Image) pela MiniMax. Ele combina o codificador de CNN 3D causal de [AutoencoderKLMiniMaxH3](/docs/diffusers/v0.43.0/pt/api/models/autoencoderkl_minimax_h3#diffusers.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](/docs/diffusers/v0.43.0/pt/api/models/autoencoderkl_minimax_h3#diffusers.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.

```python
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[[diffusers.AutoencoderKLMiniMaxH3Image]]

#### diffusers.AutoencoderKLMiniMaxH3Image[[diffusers.AutoencoderKLMiniMaxH3Image]]

```python
diffusers.AutoencoderKLMiniMaxH3Image(in_channels: int = 3, out_channels: int = 3, latent_channels: int = 24, block_out_channels: tuple[int, ...] = (128, 256, 256, 512, 512, 1024), layers_per_block: int = 2, spatial_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 = 32, norm_eps: float = 1e-06, spatial_padding_mode: str = 'reflect', decoder_num_layers: int = 24, decoder_num_attention_heads: int = 16, decoder_attention_head_dim: int = 64, decoder_num_register_tokens: int = 4, decoder_ffn_mult: int = 4, decoder_rope_theta: float = 100.0, decoder_rope_dim_ratio: float = 0.5, decoder_norm_eps: float = 1e-05, latents_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))
```

[Fonte](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/autoencoder_kl_minimax_h3_image.py#L499)

Um modelo VAE com um codificador de CNN 3D causal e um decodificador de ViT 2D não causal, usado em [MiniMax-H3-Image](https://huggingface.co/MiniMaxAI). O codificador é o codificador de vídeo MiniMax-H3 executado sobre um único quadro; o decodificador é um ViT apenas para imagem.

Este modelo herda de [ModelMixin](/docs/diffusers/v0.43.0/pt/api/models/overview#diffusers.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 deve 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 publicadas são as 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[[diffusers.AutoencoderKLMiniMaxH3Image.encode]]

```python
encode(x: Tensor, return_dict: bool = True)
```

[Fonte](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/autoencoder_kl_minimax_h3_image.py#L758)

**Parâmetros:**

x (`torch.Tensor`) : Lote de imagens de entrada, com forma `(batch_size, in_channels, height, width)`.

return_dict (`bool`, *opcional*, padrão `True`) : Se deve retornar um [AutoencoderKLOutput](/docs/diffusers/v0.43.0/pt/api/models/autoencoderkl_qwenimage#diffusers.models.modeling_outputs.AutoencoderKLOutput) em vez de uma tupla simples.

**Retorna:**

A distribuição latente das imagens codificadas, sobre latentes de forma `(batch_size, latent_channels, height // spatial_compression_ratio, width // spatial_compression_ratio)`. Observe que o MiniMax-H3-Image normaliza os latentes amostrados com `latents_mean` / `latents_std` em seguida.

Codifica um lote de imagens em latentes.

#### decode[[diffusers.AutoencoderKLMiniMaxH3Image.decode]]

```python
decode(z: Tensor, return_dict: bool = True)
```

[Fonte](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/autoencoder_kl_minimax_h3_image.py#L786)

**Parâmetros:**

z (`torch.Tensor`) : Lote de entrada de latentes, formato `(batch_size, latent_channels, height, width)`.

return_dict (`bool`, *opcional*, padrão `True`) : Se deve retornar um [DecoderOutput](/docs/diffusers/v0.43.0/pt/api/models/autoencoderkl_qwenimage#diffusers.models.autoencoders.vae.DecoderOutput) em vez de uma tupla simples.

**Retorna:** [DecoderOutput](/docs/diffusers/v0.43.0/pt/api/models/autoencoderkl_qwenimage#diffusers.models.autoencoders.vae.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[[diffusers.AutoencoderKLMiniMaxH3Image.enable_tiling]]

```python
enable_tiling(tile_sample_min_height: int | None = None, tile_sample_min_width: int | None = None, tile_sample_min_overlap_height: int | None = None, tile_sample_min_overlap_width: int | None = None)
```

[Fonte](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/autoencoder_kl_minimax_h3_image.py#L608)

**Parâmetros:**

tile_sample_min_height (`int`, *opcional*) : A altura do 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 isso são divididos ao longo da dimensão de largura.

tile_sample_min_overlap_height (`int`, *opcional*) : O mínimo de sobreposição, em pixels, entre duas tiles verticais consecutivas.

tile_sample_min_overlap_width (`int`, *opcional*) : O mínimo de sobreposição, 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[[diffusers.AutoencoderKLMiniMaxH3Image.forward]]

```python
forward(sample: Tensor, sample_posterior: bool = False, generator: typing.Optional[torch.Generator] = None, return_dict: bool = True)
```

[Fonte](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/autoencoder_kl_minimax_h3_image.py#L812)

**Parâmetros:**

sample (`torch.Tensor`) : Lote de imagens de entrada, 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](/docs/diffusers/v0.43.0/pt/api/models/autoencoderkl_qwenimage#diffusers.models.autoencoders.vae.DecoderOutput) em vez de uma tupla simples.

**Retorna:** [DecoderOutput](/docs/diffusers/v0.43.0/pt/api/models/autoencoderkl_qwenimage#diffusers.models.autoencoders.vae.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.

