Diffusers documentation

VQModel

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

VQModel

تم تقديم نموذج VQ-VAE في Neural Discrete Representation Learning بواسطة Aaron van den Oord و Oriol Vinyals و Koray Kavukcuoglu. يُستخدم النموذج في 🤗 Diffusers لفك ترميز التمثيلات الكامنة إلى صور. على عكس AutoencoderKL، يعمل VQModel في فضاء كامن مُكمَّم.

ملخص الورقة البحثية هو:

تعلّم تمثيلات مفيدة دون إشراف يظل تحديًا رئيسيًا في تعلّم الآلة. في هذه الورقة، نقترح نموذجًا توليديًا بسيطًا وقويًا يتعلم مثل هذه التمثيلات المنفصلة. يختلف نموذجنا، وهو الترميز التلقائي التبايني الكمي المتجهي (VQ-VAE)، عن نماذج VAE بطريقتين رئيسيتين: شبكة المُرمِّز تُخرج رموزًا منفصلة، وليس مستمرة؛ والسابق (prior) يتعلم بدلاً من أن يكون ثابتًا. من أجل تعلّم تمثيل كامن منفصل، ندمج أفكارًا من التكميم المتجهي (VQ). يسمح استخدام طريقة VQ للنموذج بتجاوز مشكلات «انهيار الخلفي» (posterior collapse) — حيث يتم تجاهل الكمونيات عندما تُقرن بمُفكِّك ذاتي التراجع قوي — والتي تُلاحظ عادةً في إطار VAE. عند إقران هذه التمثيلات بسابق ذاتي التراجع، يمكن للنموذج توليد صور وفيديوهات وكلام عالية الجودة، كما يمكنه تنفيذ تحويل متحدث عالي الجودة وتعلّم غير مُشرَف على الفونيمات، مما يوفر مزيدًا من الأدلة على فائدة التمثيلات المتعلمة.

VQModel

فئة diffusers.VQModel

< >

( in_channels: int = 3out_channels: int = 3down_block_types: tuple[str, ...] = ('DownEncoderBlock2D',)up_block_types: tuple[str, ...] = ('UpDecoderBlock2D',)block_out_channels: tuple[int, ...] = (64,)layers_per_block: int = 1act_fn: str = 'silu'latent_channels: int = 3sample_size: int = 32num_vq_embeddings: int = 256norm_num_groups: int = 32vq_embed_dim: int | None = Nonescaling_factor: float = 0.18215norm_type: str = 'group'mid_block_add_attention = Truelookup_from_codebook = Falseforce_upcast = False )

المعاملات

  • 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,)) — مجموعة من قنوات مخرجات الكتل.
  • layers_per_block (int، اختياري، القيمة الافتراضية 1) — عدد الطبقات في كل كتلة.
  • act_fn (str، اختياري، الافتراضي "silu") — دالة التنشيط المستخدمة.
  • latent_channels (int، اختياري، القيمة الافتراضية 3) — عدد القنوات في الفضاء الكامن.
  • sample_size (int، اختياري، القيمة الافتراضية 32) — حجم المدخلات العينة.
  • num_vq_embeddings (int، اختياري، القيمة الافتراضية 256) — عدد متجهات كتاب الرموز في VQ-VAE.
  • norm_num_groups (int، اختياري، القيمة الافتراضية 32) — عدد المجموعات لطبقات التطبيع.
  • vq_embed_dim (int، اختياري) — بُعد المخفيّ لمتجهات كتاب الرموز في VQ-VAE.
  • 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.
  • norm_type (str، اختياري، القيمة الافتراضية "group") — نوع طبقة التطبيع المستخدمة. يمكن أن تكون "group" أو "spatial".

نموذج VQ-VAE لفك ترميز التمثيلات الكامنة.

يرث هذا النموذج من ModelMixin. راجع توثيق الفئة الأصلية لمعرفة طرقه العامة المُنفَّذة لجميع النماذج (مثل التنزيل أو الحفظ).

forward

< >

( sample: Tensorreturn_dict: bool = True ) → VQEncoderOutput or tuple

المعاملات

  • sample (torch.Tensor) — عينة الإدخال.
  • return_dict (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب إرجاع models.autoencoders.vq_model.VQEncoderOutput بدلاً من tuple عادي.

يعيد

VQEncoderOutput أو tuple

إذا كانت return_dict تساوي True، يُعاد VQEncoderOutput، وإلا يُعاد tuple عادي.

طريقة VQModel الأمامية.

VQEncoderOutput

فئة diffusers.models.autoencoders.vq_model.VQEncoderOutput

< >

( latents: Tensor )

المعاملات

  • latents (torch.Tensor من الشكل (batch_size, num_channels, height, width)) — عينة المخرجات المُرمّزة من الطبقة الأخيرة للنموذج.

مخرجات طريقة الترميز في VQModel.

Update on GitHub