Buckets:

hf-doc-build/doc / diffusers /v0.43.0 /ar /api /models /autoencoderkl.md
mishig's picture
|
download
raw
14.6 kB
# AutoencoderKL
طُرِح نموذج الترميز التلقائي التبايني (VAE) مع خسارة كولباك-ليبلر في [Auto-Encoding Variational Bayes](https://huggingface.co/papers/1312.6114v11) من قِبل Diederik P. Kingma وMax Welling. يُستخدم هذا النموذج في 🤗 Diffusers لتشفير الصور إلى تمثيلات كامنة (latents) وفك تشفير التمثيلات الكامنة إلى صور.
ملخص الورقة البحثية هو:
*كيف يمكننا إجراء الاستدلال والتعلم بكفاءة في النماذج الاحتمالية الموجّهة، في وجود متغيرات كامنة مستمرة ذات توزيعات خلفية غير قابلة للحل، ومجموعات بيانات كبيرة؟ نُقدّم خوارزمية استنتاج وتعلم تباينية عشوائية تتوسع لتناسب مجموعات البيانات الكبيرة، وتعمل حتى في الحالة غير القابلة للحل، تحت بعض شروط التفاضلية المعتدلة. مساهماتنا ثنائية. أولاً، نُظهر أن إعادة تمثيل الحد الأدنى التبايني ينتج عن مُقدِّر لحد أدنى يمكن تحسينه بسهولة باستخدام طرق التدرج العشوائي القياسية. ثانياً، نُظهر أنه في مجموعات البيانات المستقلة والمتطابقة التوزيع (i.i.d.) التي تحتوي على متغيرات كامنة مستمرة لكل نقطة بيانات، يمكن جعل الاستدلال الخلفي أكثر كفاءة بشكل خاص من خلال ملاءمة نموذج استدلال تقريبي (يُسمى أيضاً نموذج التعرف) للتوزيع الخلفي غير القابل للحل باستخدام مُقدِّر الحد الأدنى المقترح. تنعكس المزايا النظرية في النتائج التجريبية.*
## التحميل من التنسيق الأصلي
بشكل افتراضي، يجب تحميل [AutoencoderKL](/docs/diffusers/v0.43.0/ar/api/models/autoencoderkl#diffusers.AutoencoderKL) باستخدام [from_pretrained()](/docs/diffusers/v0.43.0/ar/api/models/overview#diffusers.ModelMixin.from_pretrained)، لكن يمكن أيضًا تحميله من التنسيق الأصلي باستخدام `FromOriginalModelMixin.from_single_file` على النحو التالي:
```py
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]]
```python
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)
```
[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/autoencoder_kl.py#L36)
**المعاملات:**
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](https://huggingface.co/papers/2112.10752).
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](/docs/diffusers/v0.43.0/ar/api/models/overview#diffusers.ModelMixin). راجع توثيق الفئة الأصلية لمعرفة طرقه العامة المُنفَّذة لجميع النماذج (مثل التنزيل أو الحفظ).
#### فك الترميز[[diffusers.AutoencoderKL.decode]]
```python
decode(z: FloatTensor, return_dict: bool = True, generator = None)
```
[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/autoencoder_kl.py#L213)
**المعاملات:**
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]]
```python
encode(x: Tensor, return_dict: bool = True)
```
[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/autoencoder_kl.py#L170)
**المعاملات:**
x (`torch.Tensor`) : دفعة من الصور المدخلة.
return_dict (`bool`، *اختياري*، الافتراضي `True`) : ما إذا كان يجب إرجاع `~models.autoencoder_kl.AutoencoderKLOutput` بدلاً من tuple عادي.
**يعيد:**
تمثيلات الكامنة للصور المُرمّزة. إذا كان `return_dict` صحيحًا (True)، يُعاد `~models.autoencoder_kl.AutoencoderKLOutput`، وإلا يُعاد `tuple` عادي.
ترميز دفعة من الصور إلى كامنات.
#### forward[[diffusers.AutoencoderKL.forward]]
```python
forward(sample: Tensor, sample_posterior: bool = False, return_dict: bool = True, generator: typing.Optional[torch.Generator] = None)
```
[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/autoencoder_kl.py#L413)
**المعاملات:**
sample (`torch.Tensor`) : عينة الإدخال.
sample_posterior (`bool`، *اختياري*، الافتراضي `False`) : ما إذا كان سيتم أخذ عينة من التوزيع اللاحق.
return_dict (`bool`، *اختياري*، الافتراضي `True`) : ما إذا كان يجب إرجاع `DecoderOutput` بدلاً من tuple عادي.
generator (`torch.Generator`، *اختياري*) : [`torch.Generator`](https://pytorch.org/docs/stable/generated/torch.Generator.html) لجعل عملية أخذ العينات حتمية.
**يعيد:** `~models.vae.DecoderOutput` أو `tuple`
إذا كان `return_dict` صحيحًا، يُعاد `~models.vae.DecoderOutput`، وإلا يُعاد `tuple` عادي.
#### fuse_qkv_projections[[diffusers.AutoencoderKL.fuse_qkv_projections]]
```python
fuse_qkv_projections()
```
[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/autoencoder_kl.py#L450)
…
> [!WARNING] > هذه الواجهة البرمجية 🧪 تجريبية.
#### set_default_attn_processor[[diffusers.AutoencoderKL.set_default_attn_processor]]
```python
set_default_attn_processor()
```
[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/autoencoder_kl.py#L143)
يعطّل معالجات الانتباه المخصصة ويضبط تطبيق الانتباه الافتراضي.
#### tiled_decode[[diffusers.AutoencoderKL.tiled_decode]]
```python
tiled_decode(z: Tensor, return_dict: bool = True)
```
[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/autoencoder_kl.py#L364)
**المعاملات:**
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]]
```python
tiled_encode(x: Tensor, return_dict: bool = True)
```
[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/autoencoder_kl.py#L302)
**المعاملات:**
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]]
```python
unfuse_qkv_projections()
```
[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/autoencoder_kl.py#L472)
يعطّل إسقاط QKV المدمج إذا كان مفعّلًا.
> [!WARNING] > هذه الواجهة البرمجية 🧪 تجريبية.
## AutoencoderKLOutput[[diffusers.models.modeling_outputs.AutoencoderKLOutput]]
#### diffusers.models.modeling_outputs.AutoencoderKLOutput[[diffusers.models.modeling_outputs.AutoencoderKLOutput]]
```python
diffusers.models.modeling_outputs.AutoencoderKLOutput(latent_dist: DiagonalGaussianDistribution)
```
[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/modeling_outputs.py#L7)
**المعاملات:**
latent_dist (`DiagonalGaussianDistribution`) : المخرجات المُرمّزة لـ`Encoder` ممثّلةً بمتوسط `DiagonalGaussianDistribution` ومتغيره اللوغاريتمي. تتيح `DiagonalGaussianDistribution` أخذ عينات من المتغيّرات الكامنة انطلاقًا من هذا التوزيع.
مخرجات طريقة الترميز encoding في AutoencoderKL.
## DecoderOutput[[diffusers.models.autoencoders.vae.DecoderOutput]]
#### diffusers.models.autoencoders.vae.DecoderOutput[[diffusers.models.autoencoders.vae.DecoderOutput]]
```python
diffusers.models.autoencoders.vae.DecoderOutput(sample: Tensor, commit_loss: typing.Optional[torch.FloatTensor] = None)
```
[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/autoencoders/vae.py#L49)
**المعاملات:**
sample (`torch.Tensor` من الشكل `(batch_size, num_channels, height, width)`) : عينة الإخراج المُفكّكة من الطبقة الأخيرة للنموذج.
مخرجات طريقة فك الترميز.

Xet Storage Details

Size:
14.6 kB
·
Xet hash:
a32e3d8d76248e0ba56a908348bb27357d8661aaa4148f27d798cbf9a4a994f1

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.