Diffusers documentation
AutoencoderKLMiniMaxH3Image
AutoencoderKLMiniMaxH3Image
نموذج الترميز التلقائي التبايني (VAE) للصور مع خسارة KL المستخدم في MiniMax-H3-Image من MiniMax. يجمع بين مُرمِّز CNN ثلاثي الأبعاد السببي الخاص بـ AutoencoderKLMiniMaxH3، المُنفَّذ على إطار واحد، ومُفكِّك ViT ثنائي الأبعاد، ويضغط بمقدار 16x مكانيًا. تستقبل encode وdecode وتُرجع متجهات صور رباعية الأبعاد.
تشارك ثلاثة اتفاقيات مع AutoencoderKLMiniMaxH3:
- تُطبَّع القيم الكامنة (Latents) لكل قناة على حدة. لا يوجد
scaling_factor: يقوم خط الأنابيب (pipeline) بالتشفير باستخدام(latent - latents_mean) / latents_stdوفك التشفير باستخدامlatent * latents_std + latents_mean. - اتفاقية البكسل هي RGB مُعايَرة وفق معايير ImageNet فوق نطاق أساسي
[0, 1]، وليس النطاق المعتاد[-1, 1]. يتوقعencodeقيمة(pixel - imagenet_mean) / imagenet_stdويعيدdecodeقيمًا في ذلك الفضاء نفسه، لذا يطبّق خط الأنابيبsample * imagenet_std + imagenet_meanويقصّ القيم إلى[0, 1]قبل المعالجة اللاحقة. - تفعيل التقطيع المكاني هو الإعداد الافتراضي. تم إصدار MiniMax-H3-Image مع تفعيل التقطيع لكلٍّ من الترميز وفك الترميز، والصور المُصدَّرة هي صور البلاطات المُدمجة، لذا فإن تعطيله يُغيّر المخرجات. استخدم
enable_tilingلتغيير هندسة البلاطات وdisable_tilingلتعطيله.
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
< source >( 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) )
نموذج VAE بمُشفِّر CNN ثلاثي الأبعاد سببي ومُفكِّك ViT ثنائي الأبعاد غير سببي، يُستخدم في MiniMax-H3-Image. المُشفِّر هو مُشفِّر الفيديو MiniMax-H3 المُنفَّذ على إطار واحد؛ أما المُفكِّك فهو ViT مخصص للصور فقط.
يرث هذا النموذج من ModelMixin. راجع توثيق الفئة الأصلية لمعرفة طرقه العامة المُنفَّذة لجميع النماذج (مثل التنزيل أو الحفظ).
تُطبَّع الكمونيات (Latents) باستخدام latents_mean / latents_std لكل قناة بدلاً من scaling_factor؛ حيث يقوم خط الأنابيب (pipeline) بالتشفير باستخدام (latent - latents_mean) / latents_std وفك التشفير باستخدام latent * latents_std + latents_mean.
اتفاقية البكسل هي RGB مُطبَّعة وفق معايير ImageNet على نطاق أساسي [0, 1]، وليس [-1, 1] المعتاد: يتوقع encode قيمة (pixel - imagenet_mean) / imagenet_std ويعيد decode قيمًا في ذلك الفضاء نفسه، لذا يجب على خط المعالجة تطبيق sample * imagenet_std + imagenet_mean (المتوسط (0.485, 0.456, 0.406)، الانحراف المعياري (0.229, 0.224, 0.225)) ثم تقييد القيم ضمن [0, 1] قبل المعالجة اللاحقة.
على عكس معظم مُشفّرات الترميز التلقائي في المكتبة، يكون التقطيع المكاني مفعّلًا افتراضيًا: فقد تم إصدار MiniMax-H3-Image مع تفعيل التقطيع لكلٍّ من الترميز وفك الترميز، والصور المُصدَرة هي صور البلاطات المُدمجة، لذا فإن تعطيل التقطيع يُغيّر المخرجات. استخدم enable_tiling لتغيير هندسة البلاطات، وdisable_tiling لتعطيله.
encode
< source >( x: Tensorreturn_dict: bool = True )
المعاملات
- x (
torch.Tensor) — دفعة إدخال من الصور، شكلها(batch_size, in_channels, height, width). - return_dict (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب إرجاع AutoencoderKLOutput بدلاً من tuple عادي.
ترميز دفعة من الصور إلى كامنات.
decode
< source >( z: Tensorreturn_dict: bool = True ) → DecoderOutput or tuple
المعاملات
- z (
torch.Tensor) — دفعة الإدخال من الكمونيات، الشكل(batch_size, latent_channels, height, width). - return_dict (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب إرجاع DecoderOutput بدلاً من tuple عادي.
يعيد
DecoderOutput أو tuple
الصور المُفكَّكة، الشكل (batch_size, out_channels, height * spatial_compression_ratio, width * spatial_compression_ratio).
فكّ تشفير دفعة من الكمونيات.
enable_tiling
< source >( 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 )
المعاملات
- 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
< source >( sample: Tensorsample_posterior: bool = Falsegenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → DecoderOutput or tuple
المعاملات
- sample (
torch.Tensor) — دفعة إدخال من الصور، شكلها(batch_size, in_channels, height, width). - sample_posterior (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان سيتم أخذ عينة من التوزيع اللاحق بدلاً من أخذ وضعه. - generator (
torch.Generator، اختياري) — المولّد المستخدم عندsample_posterior=True. - return_dict (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب إرجاع DecoderOutput بدلاً من tuple عادي.
يعيد
DecoderOutput أو tuple
الصور المُعاد إرسالها، الشكل (batch_size, out_channels, height, width).
encode ثم decode دفعة من الصور.