Buckets:
| # VQDiffusionScheduler | |
| `VQDiffusionScheduler` يحوّل مخرجات نموذج الترانسفورمر إلى عينة لصورة غير مُضجَمة عند خطوة الانتشار السابقة. وقد تم تقديمه في [Vector Quantized Diffusion Model for Text-to-Image Synthesis](https://huggingface.co/papers/2111.14822) بواسطة Shuyang Gu وDong Chen وJianmin Bao وFang Wen وBo Zhang وDongdong Chen وLu Yuan وBaining Guo. | |
| ملخص الورقة البحثية هو: | |
| *نقدّم نموذج الانتشار الكميّ المتجهي (VQ-Diffusion) لتوليد الصور من النص. يعتمد هذا الأسلوب على ترميز ذاتي تبايني كميّ متجهي (VQ-VAE) يُنمذج فضاءه الكامن بواسطة نسخة شرطية من نموذج الاحتمالات الانتشارية لإزالة الضوضاء (DDPM) الذي طُوّر مؤخراً. وجدنا أن أسلوب الفضاء الكامن هذا مناسب بشكل جيد لمهام توليد الصور من النص، لأنه لا يزيل فقط التحيز أحادي الاتجاه الموجود في الأساليب الحالية، بل يتيح لنا أيضاً دمج استراتيجية الانتشار بالإخفاء والاستبدال لتجنب تراكم الأخطاء، وهو مشكلة خطيرة في الأساليب الحالية. تُظهر تجاربنا أن VQ-Diffusion ينتج نتائج أفضل بكثير لتوليد الصور من النص عند مقارنته بنماذج التوليد الذاتي (AR) التقليدية ذات عدد معاملات مماثل. مقارنةً بأساليب توليد الصور من النص القائمة على GAN سابقاً، يمكن لـ VQ-Diffusion لدينا التعامل مع مشاهد أكثر تعقيداً وتحسين جودة الصور المُصنَّعة بفارق كبير. أخيراً، نُظهر أن حساب توليد الصور في أسلوبنا يمكن أن يكون فعالاً للغاية عن طريق إعادة التمثيل. في الأساليب التقليدية AR، يزداد زمن توليد الصور من النص خطياً مع دقة الصورة الناتجة، وبالتالي يكون استهلاكاً كبيراً للوقت حتى للصور ذات الحجم العادي. يتيح لنا VQ-Diffusion تحقيق توازن أفضل بين الجودة والسرعة. تشير تجاربنا إلى أن نموذج VQ-Diffusion مع إعادة التمثيل أسرع بخمسة عشر مرة من الأساليب التقليدية AR مع تحقيق جودة صورة أفضل.* | |
| ## VQDiffusionScheduler[[diffusers.VQDiffusionScheduler]] | |
| #### diffusers.VQDiffusionScheduler[[diffusers.VQDiffusionScheduler]] | |
| ```python | |
| diffusers.VQDiffusionScheduler(num_vec_classes: int, num_train_timesteps: int = 100, alpha_cum_start: float = 0.99999, alpha_cum_end: float = 9e-06, gamma_cum_start: float = 9e-06, gamma_cum_end: float = 0.99999) | |
| ``` | |
| [المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_vq_diffusion.py#L142) | |
| **المعاملات:** | |
| num_vec_classes (`int`) : عدد فئات التضمينات المتجهية للبيكسلات الكامنة. يتضمن فئة البيكسل الكامن المقنّع. | |
| num_train_timesteps (`int`، القيمة الافتراضية `100`) : عدد خطوات الانتشار لتدريب النموذج. | |
| alpha_cum_start (`float`، القيمة الافتراضية `0.99999`) : القيمة التراكمية الأولية لـ alpha. | |
| alpha_cum_end (`float`، القيمة الافتراضية `0.000009`) : القيمة التراكمية النهائية لـ alpha. | |
| gamma_cum_start (`float`، القيمة الافتراضية `0.000009`) : القيمة التراكمية الأولية لـ gamma. | |
| gamma_cum_end (`float`، القيمة الافتراضية `0.99999`) : قيمة غاما التراكمية النهائية. | |
| جدولة لانتشار الكمّ المتجهي. | |
| يرث هذا النموذج من [SchedulerMixin](/docs/diffusers/main/ar/api/schedulers/overview#diffusers.SchedulerMixin) و [ConfigMixin](/docs/diffusers/main/ar/api/configuration#diffusers.ConfigMixin). راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع مجدولات التعلم، مثل التحميل والحفظ. | |
| #### apply_cumulative_transitions[[diffusers.VQDiffusionScheduler.apply_cumulative_transitions]] | |
| ```python | |
| apply_cumulative_transitions(q: Tensor, t: typing.Union[int, torch.Tensor]) | |
| ``` | |
| [المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_vq_diffusion.py#L491) | |
| **المعاملات:** | |
| q (`torch.Tensor` من الشكل `(batch size, num classes - 1, num latent pixels)`) : احتمالات السجل (log probabilities) لفئات البكسلات الكامنة غير المقنّعة. | |
| t (`int` أو `torch.Tensor`) : خطوة الزمن التي تحدد أي مصفوفة انتقال تراكمية ستُستخدم. | |
| **يعيد:** `torch.Tensor` من الشكل `(batch size, num classes, num latent pixels)` | |
| احتمالات السجلات المُحوَّلة مع احتمالات فئة القناع المُلحقة بها. | |
| طبّق مصفوفة الانتقال التراكمية عند خطوة زمنية على الاحتمالات اللوغاريتمية للفئات غير المقنّعة. | |
| #### log_Q_t_transitioning_to_known_class[[diffusers.VQDiffusionScheduler.log_Q_t_transitioning_to_known_class]] | |
| ```python | |
| log_Q_t_transitioning_to_known_class(t: typing.Union[int, torch.Tensor], x_t: LongTensor, log_onehot_x_t: Tensor, cumulative: bool) | |
| ``` | |
| [المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_vq_diffusion.py#L392) | |
| **المعاملات:** | |
| t (`int` أو `torch.Tensor`) : خطوة الزمن التي تحدد مصفوفة الانتقال المستخدمة. | |
| x_t (`torch.LongTensor` من الشكل `(batch size, num latent pixels)`) : فئات كل بكسل كامن في الزمن `t`. | |
| log_onehot_x_t (`torch.Tensor` من الشكل `(batch size, num classes, num latent pixels)`) : متجهات log one-hot الخاصة بـ `x_t`. | |
| cumulative (`bool`) : إذا كانت `False`، تُستخدم مصفوفة الانتقال للخطوة الواحدة `t-1`->`t`. إذا كانت `True`، تُستخدم مصفوفة الانتقال التراكمية `0`->`t`. | |
| **يعيد:** `torch.Tensor` | |
| كل _عمود_ في المصفوفة المُعادَة هو _صف_ من احتمالات اللوغاريتمية لمصفوفة الانتقال الاحتمالية الكاملة. يكون شكل الموتر `(batch size, num classes - 1, num latent pixels)` عندما يكون `cumulative` هو `True`، وشكله `(batch size, num classes, num latent pixels)` في الحالات الأخرى. | |
| عند التراكم، يكون للمصفوفة صف أقل واحدًا لأن بكسل الحالة الكامنة الأولي لا يمكن إخفاؤه. | |
| حيث: | |
| - `q_n` هي توزيع الاحتمالات للعملية الأمامية للبيكسل الكامن رقم `n`. | |
| - C_0 هو فئة لتضمين بكسل كامن | |
| - C_k هي فئة البكسل الكامن المقنّع | |
| النتيجة غير التراكمية (مع استبعاد اللوغاريتمات): | |
| ``` | |
| q_0(x_t | x_{t-1} = C_0) ... q_n(x_t | x_{t-1} = C_0) | |
| . . . | |
| . . . | |
| . . . | |
| q_0(x_t | x_{t-1} = C_k) ... q_n(x_t | x_{t-1} = C_k) | |
| ``` | |
| النتيجة التراكمية (مع استبعاد اللوغاريتمات): | |
| ``` | |
| q_0_cumulative(x_t | x_0 = C_0) ... q_n_cumulative(x_t | x_0 = C_0) | |
| . . . | |
| . . . | |
| . . . | |
| q_0_cumulative(x_t | x_0 = C_{k-1}) ... q_n_cumulative(x_t | x_0 = C_{k-1}) | |
| ``` | |
| يحسب احتمالات اللوغاريتمية للصفوف من مصفوفة الانتقال (تراكمية أو غير تراكمية) لكل بكسل كامن في `x_t`. | |
| #### q_posterior[[diffusers.VQDiffusionScheduler.q_posterior]] | |
| ```python | |
| q_posterior(log_p_x_0: Tensor, x_t: LongTensor, t: typing.Union[int, torch.Tensor]) | |
| ``` | |
| [المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_vq_diffusion.py#L281) | |
| **المعاملات:** | |
| log_p_x_0 (`torch.Tensor` من الشكل `(batch size, num classes - 1, num latent pixels)`) : احتمالات السجل (log probabilities) للفئات المتوقعة للبيكسلات الكامنة الأولية. لا تتضمن تنبؤًا للفئة المقنّعة (masked class) لأن الصورة الأولية غير المضافة إليها الضوضاء لا يمكن إخفاؤها (masking). | |
| x_t (`torch.LongTensor` من الشكل `(batch size, num latent pixels)`) : فئات كل بكسل كامن في الزمن `t`. | |
| t (`int` أو `torch.Tensor`) : خطوة الزمن التي تحدد مصفوفة الانتقال المستخدمة. | |
| **يعيد:** `torch.Tensor` من الشكل `(batch size, num classes, num latent pixels)` | |
| احتمالات السجل (log probabilities) للفئات المتوقعة للصورة عند خطوة الزمن `t-1`. | |
| يُحسب احتمالات اللوغاريتمية للفئات المتوقعة للصورة عند خطوة الزمن `t-1`: | |
| ``` | |
| p(x_{t-1} | x_t) = sum( q(x_t | x_{t-1}) * q(x_{t-1} | x_0) * p(x_0) / q(x_t | x_0) ) | |
| ``` | |
| #### set_timesteps[[diffusers.VQDiffusionScheduler.set_timesteps]] | |
| ```python | |
| set_timesteps(num_inference_steps: int, device: typing.Union[str, torch.device, NoneType] = None) | |
| ``` | |
| [المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_vq_diffusion.py#L214) | |
| **المعاملات:** | |
| num_inference_steps (`int`) : عدد خطوات الانتشار المستخدمة عند توليد العينات باستخدام نموذج مُدرَّب مسبقًا. | |
| device (`str` أو `torch.device`، *اختياري*) : الجهاز الذي يجب نقل خطوات الزمن (timesteps) ومعلمات عملية الانتشار (alpha، beta، gamma) إليه. | |
| يحدد الخطوات الزمنية المنفصلة المستخدمة لسلسلة الانتشار (لتُنفَّذ قبل الاستدلال). | |
| #### خطوة[[diffusers.VQDiffusionScheduler.step]] | |
| ```python | |
| step(model_output: Tensor, timestep: typing.Union[int, torch.Tensor], sample: LongTensor, generator: typing.Optional[torch.Generator] = None, return_dict: bool = True) | |
| ``` | |
| [المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_vq_diffusion.py#L236) | |
| **المعاملات:** | |
| model_output (`torch.Tensor` من الشكل `(batch size, num classes - 1, num latent pixels)`) : احتمالات السجل (log probabilities) للفئات المتوقعة للبيكسلات الكامنة الأولية. لا تتضمن تنبؤًا للفئة المقنّعة (masked class) لأن الصورة الأولية غير المضافة إليها الضوضاء لا يمكن إخفاؤها (masking). | |
| timestep (`int` أو `torch.Tensor`) : خطوة الزمن التي تحدد مصفوفات الانتقال المستخدمة. | |
| sample (`torch.LongTensor` من الشكل `(batch size, num latent pixels)`) : فئات كل بكسل كامن في خطوة الزمن الحالية. | |
| generator (`torch.Generator`، *اختياري*) : مولّد أرقام عشوائية للضوضاء المطبّقة على `p(x_{t-1} | x_t)` قبل أخذ العينة منها. | |
| return_dict (`bool`، القيمة الافتراضية `True`) : ما إذا كان يجب إرجاع [VQDiffusionSchedulerOutput](/docs/diffusers/main/ar/api/schedulers/vq_diffusion#diffusers.schedulers.scheduling_vq_diffusion.VQDiffusionSchedulerOutput) أو `tuple` أم لا. | |
| **يعيد:** [VQDiffusionSchedulerOutput](/docs/diffusers/main/ar/api/schedulers/vq_diffusion#diffusers.schedulers.scheduling_vq_diffusion.VQDiffusionSchedulerOutput) أو `tuple[torch.LongTensor]` | |
| إذا كانت قيمة return_dict هي `True`، يتم إرجاع [VQDiffusionSchedulerOutput](/docs/diffusers/main/ar/api/schedulers/vq_diffusion#diffusers.schedulers.scheduling_vq_diffusion.VQDiffusionSchedulerOutput)، وإلا يتم إرجاع tuple حيث يكون العنصر الأول هو tensor العينة. | |
| تنبّأ بالعينة من الخطوة الزمنية السابقة باستخدام توزيع الانتقال العكسي. راجع [q_posterior()](/docs/diffusers/main/ar/api/schedulers/vq_diffusion#diffusers.VQDiffusionScheduler.q_posterior) لمزيد من التفاصيل حول كيفية حساب التوزيع. | |
| ## VQDiffusionSchedulerOutput[[diffusers.schedulers.scheduling_vq_diffusion.VQDiffusionSchedulerOutput]] | |
| #### diffusers.schedulers.scheduling_vq_diffusion.VQDiffusionSchedulerOutput[[diffusers.schedulers.scheduling_vq_diffusion.VQDiffusionSchedulerOutput]] | |
| ```python | |
| diffusers.schedulers.scheduling_vq_diffusion.VQDiffusionSchedulerOutput(prev_sample: LongTensor) | |
| ``` | |
| [المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_vq_diffusion.py#L27) | |
| **المعاملات:** | |
| prev_sample (`torch.LongTensor` من الشكل `(batch size, num latent pixels)`) : العينة المحسوبة عند خطوة الزمن السابقة. يجب استخدام `prev_sample` كمدخل للنموذج التالي في حلقة إزالة الضوضاء. | |
| فئة الإخراج لدالة خطوة المجدول. | |
Xet Storage Details
- Size:
- 13.9 kB
- Xet hash:
- a0ee5d3b29c6f3f24b781e123d4f5f0e77ba5a709c1866efff8bbbf93624b265
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.