# AutoencoderKLPH3Image

نموذج VAE للصور الخاص بـ [P-H3-Image](https://huggingface.co/PrunaAI/P-H3-Image) من Pruna AI. يستخدم هذا النموذج المُشفِّر (encoder) والمساحة الكامنة (latent space) الخاصة بـ [VAE الفيديو](./autoencoderkl_minimax_h3) في MiniMax-H3، مع مُفكِّك (decoder) من نوع ViT يقوم بفك ترميز إطار كامن واحد إلى صورة.

يتبع اتفاقيات [AutoencoderKLMiniMaxH3](/docs/diffusers/v0.43.0/ar/api/models/autoencoderkl_minimax_h3#diffusers.AutoencoderKLMiniMaxH3):

- تُمرَّر الصور كفيديوهات بإطار واحد، `(batch_size, channels, 1, height, width)`، مع ضغط مكاني بمقدار 16x.
- تُطبَّع القيم الكامنة (Latents) لكل قناة باستخدام `latents_mean` / `latents_std` بدلاً من `scaling_factor`.
- تكون البكسلات قيم RGB مُطبَّعة وفق معايير ImageNet ضمن المجال `[0, 1]`: يتوقع `encode` إدخال `(pixel - imagenet_mean) / imagenet_std` بينما يعيد `decode` النتيجة في ذلك المجال.
- تكون التiling المكاني مفعّلاً افتراضياً، مع بلاطات بحجم 256 بكسل وتداخل لا يقل عن 64 بكسل.

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

تبقى إخراجات الإسقاط الخاصة بالمُشفِّر والمُفكِّك في float32 بغضّ النظر عن `dtype` الذي يحمّل به النموذج.

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

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/autoencoder_kl_p_h3_image.py#L493)

نموذج VAE للصور الخاص بـ [P-H3-Image](https://huggingface.co/PrunaAI/P-H3-Image): مُشفِّر VAE ومساحة الكمون الخاصة بـ MiniMax-H3، مع `PH3ImageViTDecoder` يقوم بفك ترميز إطار كمون واحد.

تُمرَّر الصور كفيديوهات بإطار واحد، `(batch_size, channels, 1, height, width)`. وكما في [AutoencoderKLMiniMaxH3](/docs/diffusers/v0.43.0/ar/api/models/autoencoderkl_minimax_h3#diffusers.AutoencoderKLMiniMaxH3)، تكون البكسلات بألوان RGB مُعايرة وفق ImageNet ضمن المدى `[0, 1]` (متوسط `(0.485, 0.456, 0.406)`، وانحراف معياري `(0.229, 0.224, 0.225)`)، ويكون التقطيع المكاني مفعّلًا افتراضيًا.

#### ترميز[[diffusers.AutoencoderKLPH3Image.encode]]

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

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/autoencoder_kl_p_h3_image.py#L728)

**المعاملات:**

x (`torch.Tensor`) : دفعة من الصور المدخلة كمقاطع فيديو بإطار واحد، الشكل `(batch_size, in_channels, 1, height, width)`.

return_dict (`bool`، *اختياري*، الافتراضي `True`) : ما إذا كان يجب إرجاع [AutoencoderKLOutput](/docs/diffusers/v0.43.0/ar/api/models/autoencoderkl_qwenimage#diffusers.models.modeling_outputs.AutoencoderKLOutput) بدلاً من tuple عادي.

**يعيد:**

توزيع الكمون للصور المُرمّزة. لاحظ أن قيم الكمون تُطبَّع باستخدام `latents_mean` / `latents_std` بعد ذلك.

ترميز دفعة من الصور إلى كامنات.

#### فك الترميز[[diffusers.AutoencoderKLPH3Image.decode]]

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

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/autoencoder_kl_p_h3_image.py#L757)

**المعاملات:**

z (`torch.Tensor`) : دفعة المدخلات من الكمونيات، الشكل `(batch_size, latent_channels, 1, height, width)`.

return_dict (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب إرجاع [DecoderOutput](/docs/diffusers/v0.43.0/ar/api/models/autoencoderkl_qwenimage#diffusers.models.autoencoders.vae.DecoderOutput) بدلاً من tuple عادي.

**يعيد:** [DecoderOutput](/docs/diffusers/v0.43.0/ar/api/models/autoencoderkl_qwenimage#diffusers.models.autoencoders.vae.DecoderOutput) أو `tuple`

الصور المُفكَّكة، الشكل `(batch_size, out_channels, 1, height, width)`.

فكّ تشفير دفعة من الصور الكامنة.

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

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/autoencoder_kl_p_h3_image.py#L575)

**المعاملات:**

tile_sample_min_height (`int`, *اختياري*) : ارتفاع البلاطة في فضاء البكسلات. تُقسَّم الإطارات الأطول من هذا الارتفاع على طول بُعد الارتفاع.

tile_sample_min_width (`int`, *اختياري*) : عرض البلاطة في فضاء البكسلات. تُقسَّم الإطارات الأوسع من هذا العرض على طول بُعد العرض.

tile_sample_min_overlap_height (`int`، *اختياري*) : الحد الأدنى للتداخل، بالبكسل، بين بلاطتين عموديتين متتاليتين.

tile_sample_min_overlap_width (`int`، *اختياري*) : الحد الأدنى للتداخل، بالبكسل، بين بلاطتين أفقيتين متتاليتين.

تفعيل ترميز/فك ترميز VAE المُقسّم إلى بلاطات. عند تفعيل هذا الخيار، يقوم VAE بتقسيم الإطارات إلى بلاطات، ثم يرمّز أو يفكّ ترميز كل بلاطة على حدة، وبعدها يمزج التداخلات خطياً لإعادة تجميعها. يقلّل هذا من متطلبات الذاكرة ويتيح معالجة إطارات أكبر.

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

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

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/autoencoder_kl_p_h3_image.py#L784)

**المعاملات:**

sample (`torch.Tensor`) : دفعة من الصور المدخلة كمقاطع فيديو بإطار واحد، الشكل `(batch_size, in_channels, 1, height, width)`.

sample_posterior (`bool`، *اختياري*، الافتراضي `False`) : ما إذا كان سيتم أخذ عينة من التوزيع اللاحق بدلاً من أخذ وضعه.

generator (`torch.Generator`، *اختياري*) : المولّد المستخدم عند `sample_posterior=True`.

return_dict (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب إرجاع [DecoderOutput](/docs/diffusers/v0.43.0/ar/api/models/autoencoderkl_qwenimage#diffusers.models.autoencoders.vae.DecoderOutput) بدلاً من tuple عادي.

**يعيد:** [DecoderOutput](/docs/diffusers/v0.43.0/ar/api/models/autoencoderkl_qwenimage#diffusers.models.autoencoders.vae.DecoderOutput) أو `tuple`

الصور المُعاد إرسالها، الشكل `(batch_size, out_channels, 1, height, width)`.

encode ثم decode دفعة من الصور.

