Buckets:
AutoencoderKL
طُرِح نموذج الترميز التلقائي التبايني (VAE) مع خسارة كولباك-ليبلر في Auto-Encoding Variational Bayes من قِبل Diederik P. Kingma وMax Welling. يُستخدم هذا النموذج في 🤗 Diffusers لتشفير الصور إلى تمثيلات كامنة (latents) وفك تشفير التمثيلات الكامنة إلى صور.
ملخص الورقة البحثية هو:
كيف يمكننا إجراء الاستدلال والتعلم بكفاءة في النماذج الاحتمالية الموجّهة، في وجود متغيرات كامنة مستمرة ذات توزيعات خلفية غير قابلة للحل، ومجموعات بيانات كبيرة؟ نُقدّم خوارزمية استنتاج وتعلم تباينية عشوائية تتوسع لتناسب مجموعات البيانات الكبيرة، وتعمل حتى في الحالة غير القابلة للحل، تحت بعض شروط التفاضلية المعتدلة. مساهماتنا ثنائية. أولاً، نُظهر أن إعادة تمثيل الحد الأدنى التبايني ينتج عن مُقدِّر لحد أدنى يمكن تحسينه بسهولة باستخدام طرق التدرج العشوائي القياسية. ثانياً، نُظهر أنه في مجموعات البيانات المستقلة والمتطابقة التوزيع (i.i.d.) التي تحتوي على متغيرات كامنة مستمرة لكل نقطة بيانات، يمكن جعل الاستدلال الخلفي أكثر كفاءة بشكل خاص من خلال ملاءمة نموذج استدلال تقريبي (يُسمى أيضاً نموذج التعرف) للتوزيع الخلفي غير القابل للحل باستخدام مُقدِّر الحد الأدنى المقترح. تنعكس المزايا النظرية في النتائج التجريبية.
التحميل من التنسيق الأصلي
بشكل افتراضي، يجب تحميل AutoencoderKL باستخدام from_pretrained()، لكن يمكن أيضًا تحميله من التنسيق الأصلي باستخدام FromOriginalModelMixin.from_single_file على النحو التالي:
from diffusers import AutoencoderKL
url = "https://huggingface.co/stabilityai/sd-vae-ft-mse-original/blob/main/vae-ft-mse-840000-ema-pruned.safetensors" # can also be a local file
model = AutoencoderKL.from_single_file(url)
AutoencoderKL[[diffusers.AutoencoderKL]]
diffusers.AutoencoderKL[[diffusers.AutoencoderKL]]
diffusers.AutoencoderKL(in_channels: int = 3, out_channels: int = 3, down_block_types: tuple[str] = ('DownEncoderBlock2D',), up_block_types: tuple[str] = ('UpDecoderBlock2D',), block_out_channels: tuple[int] = (64,), layers_per_block: int = 1, act_fn: str = 'silu', latent_channels: int = 4, norm_num_groups: int = 32, sample_size: int = 32, scaling_factor: float = 0.18215, shift_factor: float | None = None, latents_mean: tuple[float] | None = None, latents_std: tuple[float] | None = None, force_upcast: bool = True, use_quant_conv: bool = True, use_post_quant_conv: bool = True, mid_block_add_attention: bool = True)
المعاملات:
in_channels (int, اختياري، القيمة الافتراضية 3) : عدد القنوات في الصورة المدخلة.
out_channels (int، اختياري، القيمة الافتراضية 3) : عدد القنوات في المخرجات.
down_block_types (tuple[str]، اختياري، القيمة الافتراضية ("DownEncoderBlock2D",)) : مجموعة من أنواع كتل التقليل (downsample).
up_block_types (tuple[str]، اختياري، القيمة الافتراضية ("UpDecoderBlock2D",)) : مجموعة من أنواع كتل التوسيع (upsample).
block_out_channels (tuple[int]، اختياري، القيمة الافتراضية (64,)) : مجموعة من قنوات مخرجات الكتلة.
act_fn (str، اختياري، القيمة الافتراضية "silu") : دالة التنشيط المستخدمة.
latent_channels (int، اختياري، القيمة الافتراضية 4) : عدد القنوات في الفضاء الكامن.
sample_size (int، اختياري، القيمة الافتراضية 32) : حجم الإدخال العينة.
scaling_factor (float، اختياري، القيمة الافتراضية 0.18215) : الانحراف المعياري لكل مكوّن في الفضاء الكامن المُدرَّب، المُحسوب باستخدام الدفعة الأولى من مجموعة التدريب. يُستخدم هذا الانحراف لتقريب الفضاء الكامن بحيث يكون له تباين وحدة عند تدريب نموذج الانتشار. يتم تقريب الكمونات باستخدام الصيغة z = z * scaling_factor قبل تمريرها إلى نموذج الانتشار. عند فك الترميز، تُعاد الكمونات إلى المقياس الأصلي باستخدام الصيغة: z = 1 / scaling_factor * z. لمزيد من التفاصيل، راجع الأقسام 4.3.2 و D.1 من ورقة High-Resolution Image Synthesis with Latent Diffusion Models.
force_upcast (bool، اختياري، الافتراضي True) : إذا تم تفعيله، سيُجبر VAE على العمل بدقة float32 في خطوط الأنابيب ذات دقة الصور العالية، مثل SD-XL. يمكن ضبط VAE تدريبيًا / تدريبه على نطاق أدنى دون فقدان كبير في الدقة، وفي هذه الحالة يمكن تعيين force_upcast إلى False - انظر: https://huggingface.co/madebyollin/sdxl-vae-fp16-fix
mid_block_add_attention (bool، اختياري، الافتراضي True) : إذا تم التفعيل، فإن mid_block في Encoder و Decoder سيحتوي على كتل انتباه (attention blocks). إذا تم ضبطه على false، فإن mid_block سيحتوي فقط على كتل resnet
نموذج VAE مع خسارة KL لتشفير الصور إلى كامنات وفك تمثيل الكامنات إلى صور.
يرث هذا النموذج من ModelMixin. راجع توثيق الفئة الأصلية لمعرفة طرقه العامة المُنفَّذة لجميع النماذج (مثل التنزيل أو الحفظ).
فك الترميز[[diffusers.AutoencoderKL.decode]]
decode(z: FloatTensor, return_dict: bool = True, generator = None)
المعاملات:
z (torch.Tensor) : دفعة إدخال من المتجهات الكامنة.
return_dict (bool، اختياري، القيمة الافتراضية True) : ما إذا كان يجب إرجاع ~models.vae.DecoderOutput بدلاً من tuple عادي.
يعيد: ~models.vae.DecoderOutput أو tuple
إذا كانت return_dict تساوي True، يُعاد ~models.vae.DecoderOutput، وإلا يُعاد tuple عادي.
فكّ تشفير دفعة من الصور.
ترميز[[diffusers.AutoencoderKL.encode]]
encode(x: Tensor, return_dict: bool = True)
المعاملات:
x (torch.Tensor) : دفعة من الصور المدخلة.
return_dict (bool، اختياري، الافتراضي True) : ما إذا كان يجب إرجاع ~models.autoencoder_kl.AutoencoderKLOutput بدلاً من tuple عادي.
يعيد:
تمثيلات الكامنة للصور المُرمّزة. إذا كان return_dict صحيحًا (True)، يُعاد ~models.autoencoder_kl.AutoencoderKLOutput، وإلا يُعاد tuple عادي.
ترميز دفعة من الصور إلى كامنات.
forward[[diffusers.AutoencoderKL.forward]]
forward(sample: Tensor, sample_posterior: bool = False, return_dict: bool = True, generator: typing.Optional[torch.Generator] = None)
المعاملات:
sample (torch.Tensor) : عينة الإدخال.
sample_posterior (bool، اختياري، الافتراضي False) : ما إذا كان سيتم أخذ عينة من التوزيع اللاحق.
return_dict (bool، اختياري، الافتراضي True) : ما إذا كان يجب إرجاع DecoderOutput بدلاً من tuple عادي.
generator (torch.Generator، اختياري) : torch.Generator لجعل عملية أخذ العينات حتمية.
يعيد: ~models.vae.DecoderOutput أو tuple
إذا كان return_dict صحيحًا، يُعاد ~models.vae.DecoderOutput، وإلا يُعاد tuple عادي.
fuse_qkv_projections[[diffusers.AutoencoderKL.fuse_qkv_projections]]
fuse_qkv_projections()
…
> هذه الواجهة البرمجية 🧪 تجريبية.
set_default_attn_processor[[diffusers.AutoencoderKL.set_default_attn_processor]]
set_default_attn_processor()
يعطّل معالجات الانتباه المخصصة ويضبط تطبيق الانتباه الافتراضي.
tiled_decode[[diffusers.AutoencoderKL.tiled_decode]]
tiled_decode(z: Tensor, return_dict: bool = True)
المعاملات:
z (torch.Tensor) : دفعة إدخال من المتجهات الكامنة.
return_dict (bool، اختياري، القيمة الافتراضية True) : ما إذا كان يجب إرجاع ~models.vae.DecoderOutput بدلاً من tuple عادي.
يعيد: ~models.vae.DecoderOutput أو tuple
إذا كانت return_dict تساوي True، يُعاد ~models.vae.DecoderOutput، وإلا يُعاد tuple عادي.
فكّ تشفير دفعة من الصور باستخدام مُفكّك مُجزّأ.
tiled_encode[[diffusers.AutoencoderKL.tiled_encode]]
tiled_encode(x: Tensor, return_dict: bool = True)
المعاملات:
x (torch.Tensor) : دفعة من الصور المدخلة.
return_dict (bool، اختياري، القيمة الافتراضية True) : ما إذا كان يجب إرجاع ~models.autoencoder_kl.AutoencoderKLOutput بدلاً من tuple عادي.
يعيد: ~models.autoencoder_kl.AutoencoderKLOutput أو tuple
If return_dict is True, a ~models.autoencoder_kl.AutoencoderKLOutput is returned, otherwise a plain tuple is returned.
ترميز دفعة من الصور باستخدام مُرمِّز مُقسَّم إلى بلاطات.
عند تمكين هذا الخيار، سيقوم VAE بتقسيم المصفوفة المدخلة إلى بلاطات لحساب الترميز في عدة خطوات. وهذا مفيد للحفاظ على ثبات استخدام الذاكرة بغض النظر عن حجم الصورة. النتيجة النهائية للترميز المبطن تختلف عن الترميز غير المبطن لأن كل بلاطة تستخدم مُرمِّزًا مختلفًا. ولتجنب آثار التبطين، تتداخل البلاطات وتُدمج معًا لتكوين مخرجات سلسة. قد لا تزال ترى تغييرات بحجم البلاطة في المخرجات، لكنها يجب أن تكون أقل وضوحًا بكثير.
unfuse_qkv_projections[[diffusers.AutoencoderKL.unfuse_qkv_projections]]
unfuse_qkv_projections()
يعطّل إسقاط QKV المدمج إذا كان مفعّلًا.
> هذه الواجهة البرمجية 🧪 تجريبية.
AutoencoderKLOutput[[diffusers.models.modeling_outputs.AutoencoderKLOutput]]
diffusers.models.modeling_outputs.AutoencoderKLOutput[[diffusers.models.modeling_outputs.AutoencoderKLOutput]]
diffusers.models.modeling_outputs.AutoencoderKLOutput(latent_dist: DiagonalGaussianDistribution)
المعاملات:
latent_dist (DiagonalGaussianDistribution) : المخرجات المُرمّزة لـEncoder ممثّلةً بمتوسط DiagonalGaussianDistribution ومتغيره اللوغاريتمي. تتيح DiagonalGaussianDistribution أخذ عينات من المتغيّرات الكامنة انطلاقًا من هذا التوزيع.
مخرجات طريقة الترميز encoding في AutoencoderKL.
DecoderOutput[[diffusers.models.autoencoders.vae.DecoderOutput]]
diffusers.models.autoencoders.vae.DecoderOutput[[diffusers.models.autoencoders.vae.DecoderOutput]]
diffusers.models.autoencoders.vae.DecoderOutput(sample: Tensor, commit_loss: typing.Optional[torch.FloatTensor] = None)
المعاملات:
sample (torch.Tensor من الشكل (batch_size, num_channels, height, width)) : عينة الإخراج المُفكّكة من الطبقة الأخيرة للنموذج.
مخرجات طريقة فك الترميز.
Xet Storage Details
- Size:
- 14.6 kB
- Xet hash:
- fc17d62a2810484fe404689a02fe325942af9647fc1c266d634ba68acc7e96a6
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.