# AutoencoderKLMiniMaxH3Image

Mô hình autoencoder biến phân (VAE) cho ảnh với tổn thất KL được sử dụng trong [MiniMax-H3-Image](https://huggingface.co/MiniMaxAI/MiniMax-H3-Image) của MiniMax. Nó kết hợp bộ mã hóa CNN 3D nhân quả của [AutoencoderKLMiniMaxH3](/docs/diffusers/v0.43.0/vi/api/models/autoencoderkl_minimax_h3#diffusers.AutoencoderKLMiniMaxH3), chạy trên một khung hình duy nhất, với bộ giải mã ViT 2D, và nén 16 lần theo không gian. `encode` và `decode` nhận và trả về các tensor ảnh 4 chiều.

Nó chia sẻ ba quy ước với [AutoencoderKLMiniMaxH3](/docs/diffusers/v0.43.0/vi/api/models/autoencoderkl_minimax_h3#diffusers.AutoencoderKLMiniMaxH3):

- **Latents được chuẩn hóa theo từng kênh.** Không có `scaling_factor`: một pipeline mã hóa bằng `(latent - latents_mean) / latents_std` và giải mã bằng `latent * latents_std + latents_mean`.
- Quy ước pixel là **RGB được chuẩn hóa theo ImageNet trên khoảng cơ sở `[0, 1]`**, không phải `[-1, 1]` thông thường. `encode` kỳ vọng `(pixel - imagenet_mean) / imagenet_std` và `decode` trả về các giá trị trong cùng không gian đó, do đó một pipeline sẽ áp dụng `sample * imagenet_std + imagenet_mean` và kẹp vào `[0, 1]` trước khi xử lý hậu kỳ.
- **Chia ô không gian được bật theo mặc định.** MiniMax-H3-Image được phát hành với tính năng chia ô được bật cho cả mã hóa và giải mã, và các hình ảnh được phát hành là các hình ảnh ghép từ các ô đã trộn, do đó việc tắt tính năng này sẽ làm thay đổi đầu ra. Sử dụng `enable_tiling` để thay đổi hình học của các ô và `disable_tiling` để tắt tính năng này.

```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))
```

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

Một mô hình VAE với bộ mã hóa CNN 3D nhân quả và bộ giải mã ViT 2D phi nhân quả, được sử dụng trong [MiniMax-H3-Image](https://huggingface.co/MiniMaxAI). Bộ mã hóa là bộ mã hóa video MiniMax-H3 chạy trên một khung hình duy nhất; bộ giải mã là ViT chỉ dành cho ảnh.

Mô hình này kế thừa từ [ModelMixin](/docs/diffusers/v0.43.0/vi/api/models/overview#diffusers.ModelMixin). Hãy xem tài liệu của lớp cha để biết các phương thức chung được triển khai cho tất cả các mô hình (chẳng hạn như tải xuống hoặc lưu trữ).

Latents được chuẩn hóa bằng `latents_mean` / `latents_std` cho từng kênh thay vì `scaling_factor`; một pipeline mã hóa bằng `(latent - latents_mean) / latents_std` và giải mã bằng `latent * latents_std + latents_mean`.

Quy ước pixel là RGB được chuẩn hóa theo ImageNet trên dải cơ sở `[0, 1]`, không phải `[-1, 1]` thông thường: `encode` kỳ vọng `(pixel - imagenet_mean) / imagenet_std` và `decode` trả về các giá trị trong cùng không gian đó, do đó một pipeline phải áp dụng `sample * imagenet_std + imagenet_mean` (mean `(0.485, 0.456, 0.406)`, std `(0.229, 0.224, 0.225)`) và kẹp vào `[0, 1]` trước khi xử lý hậu kỳ.

Khác với hầu hết các autoencoder trong thư viện, spatial tiling được **bật theo mặc định**: MiniMax-H3-Image được phát hành với tiling được bật cho cả encoding và decoding, và các hình ảnh được phát hành là các hình ảnh blended-tile, do đó việc tắt tiling sẽ làm thay đổi đầu ra. Sử dụng `enable_tiling` để thay đổi hình học của tile, `disable_tiling` để tắt tính năng này.

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

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

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

**Tham số:**

x (`torch.Tensor`) : Lô đầu vào các hình ảnh, hình dạng `(batch_size, in_channels, height, width)`.

return_dict (`bool`, *tùy chọn*, mặc định là `True`) : Có nên trả về một [AutoencoderKLOutput](/docs/diffusers/v0.43.0/vi/api/models/autoencoderkl_qwenimage#diffusers.models.modeling_outputs.AutoencoderKLOutput) thay vì một tuple thông thường hay không.

**Trả về:**

Phân phối ẩn của các hình ảnh đã mã hóa, trên các ẩn có hình dạng `(batch_size, latent_channels, height // spatial_compression_ratio, width // spatial_compression_ratio)`. Lưu ý rằng MiniMax-H3-Image chuẩn hóa các ẩn đã lấy mẫu bằng `latents_mean` / `latents_std` sau đó.

Mã hóa một lô ảnh thành các biến ẩn.

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

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

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

**Tham số:**

z (`torch.Tensor`) : Lô đầu vào của các biến ẩn, hình dạng `(batch_size, latent_channels, height, width)`.

return_dict (`bool`, *tùy chọn*, mặc định là `True`) : Có nên trả về một [DecoderOutput](/docs/diffusers/v0.43.0/vi/api/models/autoencoderkl_qwenimage#diffusers.models.autoencoders.vae.DecoderOutput) thay vì một tuple thông thường hay không.

**Trả về:** [DecoderOutput](/docs/diffusers/v0.43.0/vi/api/models/autoencoderkl_qwenimage#diffusers.models.autoencoders.vae.DecoderOutput) hoặc `tuple`

Các hình ảnh đã giải mã, có hình dạng `(batch_size, out_channels, height * spatial_compression_ratio, width * spatial_compression_ratio)`.

Giải mã một lô latents.

#### 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)
```

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

**Tham số:**

tile_sample_min_height (`int`, *optional*) : Chiều cao của tile trong không gian pixel. Các khung hình cao hơn giá trị này sẽ được chia dọc theo chiều cao.

tile_sample_min_width (`int`, *optional*) : Độ rộng của tile trong không gian pixel. Các khung hình rộng hơn giá trị này sẽ được chia dọc theo chiều rộng.

tile_sample_min_overlap_height (`int`, *optional*) : Độ chồng lấn tối thiểu, tính bằng pixel, giữa hai lát cắt dọc liên tiếp.

tile_sample_min_overlap_width (`int`, *optional*) : Độ chồng lấn tối thiểu, tính bằng pixel, giữa hai lát cắt ngang liên tiếp.

Bật mã hóa/giải mã VAE dạng gạch. Khi tùy chọn này được bật, VAE sẽ chia các khung hình thành các gạch, mã hóa hoặc giải mã từng gạch riêng biệt và trộn tuyến tính các phần chồng lấn lại với nhau. Điều này làm giảm yêu cầu về bộ nhớ và cho phép xử lý các khung hình lớn hơn.

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

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

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

**Tham số:**

sample (`torch.Tensor`) : Lô đầu vào các hình ảnh, hình dạng `(batch_size, in_channels, height, width)`.

sample_posterior (`bool`, *tùy chọn*, mặc định là `False`) : Có lấy mẫu từ phân phối hậu nghiệm thay vì lấy mode của nó hay không.

generator (`torch.Generator`, *tùy chọn*) : Generator được sử dụng khi `sample_posterior=True`.

return_dict (`bool`, *tùy chọn*, mặc định là `True`) : Có nên trả về một [DecoderOutput](/docs/diffusers/v0.43.0/vi/api/models/autoencoderkl_qwenimage#diffusers.models.autoencoders.vae.DecoderOutput) thay vì một tuple thông thường hay không.

**Trả về:** [DecoderOutput](/docs/diffusers/v0.43.0/vi/api/models/autoencoderkl_qwenimage#diffusers.models.autoencoders.vae.DecoderOutput) hoặc `tuple`

Các hình ảnh sau khi thực hiện quá trình đi và về, có hình dạng `(batch_size, out_channels, height, width)`.

Mã hóa rồi giải mã một lô ảnh.

