# AutoencoderKLPH3Image

VAE hình ảnh của [P-H3-Image](https://huggingface.co/PrunaAI/P-H3-Image) do Pruna AI phát triển. Nó sử dụng encoder và không gian latent của [VAE video](./autoencoderkl_minimax_h3) của MiniMax-H3, cùng với một decoder ViT giải mã một khung latent duy nhất thành hình ảnh.

Nó tuân theo các quy ước của [AutoencoderKLMiniMaxH3](/docs/diffusers/main/vi/api/models/autoencoderkl_minimax_h3#diffusers.AutoencoderKLMiniMaxH3):

- Hình ảnh được truyền dưới dạng video một khung hình, `(batch_size, channels, 1, height, width)`, với nén không gian 16x.
- Latents được chuẩn hóa theo từng kênh bằng `latents_mean` / `latents_std` thay vì một `scaling_factor`.
- Pixels là RGB được chuẩn hóa theo ImageNet trên `[0, 1]`: `encode` kỳ vọng `(pixel - imagenet_mean) / imagenet_std` và `decode` trả về không gian đó.
- Chia ô không gian được bật theo mặc định, với các ô 256 pixel và ít nhất 64 pixel chồng lấn.

```python
import torch
from diffusers import AutoencoderKLPH3Image

vae = AutoencoderKLPH3Image.from_pretrained("PrunaAI/P-H3-Image", subfolder="vae", dtype=torch.bfloat16).to(
    "cuda"
)  # or "mps", "xpu", "cpu"
```

Đầu ra của bộ mã hóa và phép chiếu đầu ra của bộ giải mã luôn ở dạng float32 bất kể `dtype` mà mô hình được nạp vào là gì.

## AutoencoderKLPH3Image[[diffusers.AutoencoderKLPH3Image]]

#### diffusers.AutoencoderKLPH3Image[[diffusers.AutoencoderKLPH3Image]]

```python
diffusers.AutoencoderKLPH3Image(in_channels: int = 3, out_channels: int = 3, latent_channels: int = 24, block_out_channels: tuple = (128, 256, 256, 512, 512, 1024), layers_per_block: int = 2, spatial_downsample_factors: tuple = (2, 2, 2, 2, 1, 1), temporal_downsample_factors: tuple = (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 = 36, decoder_num_attention_heads: int = 32, 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.75, decoder_norm_eps: float = 1e-05, latents_mean: tuple = (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 = (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/main/src/diffusers/models/autoencoders/autoencoder_kl_p_h3_image.py#L493)

VAE hình ảnh của [P-H3-Image](https://huggingface.co/PrunaAI/P-H3-Image): bộ mã hóa VAE và không gian ẩn của MiniMax-H3, với `PH3ImageViTDecoder` để giải mã một khung ẩn duy nhất.

Hình ảnh được truyền dưới dạng video một khung hình, `(batch_size, channels, 1, height, width)`. Giống như trong [AutoencoderKLMiniMaxH3](/docs/diffusers/main/vi/api/models/autoencoderkl_minimax_h3#diffusers.AutoencoderKLMiniMaxH3), các pixel là RGB được chuẩn hóa theo ImageNet trên `[0, 1]` (trung bình `(0.485, 0.456, 0.406)`, độ lệch chuẩn `(0.229, 0.224, 0.225)`) và việc chia ô không gian được bật theo mặc định.

#### encode[[diffusers.AutoencoderKLPH3Image.encode]]

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

[Nguồn](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/autoencoder_kl_p_h3_image.py#L728)

**Tham số:**

x (`torch.Tensor`) : Lô đầu vào các hình ảnh dưới dạng video một khung hình, có hình dạng `(batch_size, in_channels, 1, height, width)`.

return_dict (`bool`, *tùy chọn*, mặc định là `True`) : Có nên trả về một [AutoencoderKLOutput](/docs/diffusers/main/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 đã được mã hóa. Lưu ý rằng các giá trị ẩn sẽ được chuẩn hóa bằng `latents_mean` / `latents_std` sau đó.

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

#### decode[[diffusers.AutoencoderKLPH3Image.decode]]

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

[Nguồn](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/autoencoder_kl_p_h3_image.py#L757)

**Tham số:**

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

return_dict (`bool`, *tùy chọn*, mặc định là `True`) : Có nên trả về một [DecoderOutput](/docs/diffusers/main/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/main/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, 1, height, width)`.

Giải mã một lô ảnh tiềm ẩn.

#### enable_tiling[[diffusers.AutoencoderKLPH3Image.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/main/src/diffusers/models/autoencoders/autoencoder_kl_p_h3_image.py#L575)

**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.AutoencoderKLPH3Image.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/main/src/diffusers/models/autoencoders/autoencoder_kl_p_h3_image.py#L784)

**Tham số:**

sample (`torch.Tensor`) : Lô đầu vào các hình ảnh dưới dạng video một khung hình, có hình dạng `(batch_size, in_channels, 1, 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/main/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/main/vi/api/models/autoencoderkl_qwenimage#diffusers.models.autoencoders.vae.DecoderOutput) hoặc `tuple`

Các hình ảnh sau khi đi qua vòng lặp, có hình dạng `(batch_size, out_channels, 1, height, width)`.

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

