Diffusers documentation
PriorTransformer
PriorTransformer
تم تقديم Prior Transformer في الأصل في Hierarchical Text-Conditional Image Generation with CLIP Latents بواسطة Ramesh وآخرون. يُستخدم للتنبؤ بتضمينات صور CLIP من تضمينات نصوص CLIP؛ حيث يتم التنبؤ بتضمينات الصور عبر عملية انتشار إزالة الضوضاء.
ملخص الورقة البحثية هو:
تبيّن أن النماذج التباينية مثل CLIP تتعلم تمثيلات قوية للصور تلتقط كلًا من الدلالات والأسلوب. وللاستفادة من هذه التمثيلات في توليد الصور، نقترح نموذجًا من مرحلتين: نموذج مسبق (prior) يولّد تمثيل صورة CLIP بناءً على وصف نصي، ومفكّك (decoder) يولّد صورة مشروطة على تمثيل الصورة. نُظهر أن توليد تمثيلات الصور بشكل صريح يحسّن تنوّع الصور مع خسارة ضئيلة في الواقعية الضوئية ومماثلة الوصف. كما يمكن لمفكّكاتنا المشروطة على تمثيلات الصور أن تنتج متغيرات لصورة تحافظ على دلالاتها وأسلوبها معًا، مع تغيير التفاصيل غير الجوهرية الغائبة عن تمثيل الصورة. علاوة على ذلك، يتيح الفضاء المضمّن المشترك لـ CLIP عمليات تعديل للصور موجّهة باللغة بطريقة صفرية التمثيل (zero-shot). نستخدم نماذج الانتشار (diffusion models) للمفكّك، ونجرّب كلًا من النماذج الذاتية التوليد (autoregressive) ونماذج الانتشار للنموذج المسبق، لنجد أن الأخيرة أكثر كفاءة من حيث الحسابات وتنتج عينات بجودة أعلى.
PriorTransformer
فئة diffusers.PriorTransformer
< source >( num_attention_heads: int = 32attention_head_dim: int = 64num_layers: int = 20embedding_dim: int = 768num_embeddings = 77additional_embeddings = 4dropout: float = 0.0time_embed_act_fn: str = 'silu'norm_in_type: str | None = Noneembedding_proj_norm_type: str | None = Noneencoder_hid_proj_type: str | None = 'linear'added_emb_type: str | None = 'prd'time_embed_dim: int | None = Noneembedding_proj_dim: int | None = Noneclip_embed_dim: int | None = None )
المعاملات
- num_attention_heads (
int، اختياري، القيمة الافتراضية 32) — عدد الرؤوس المستخدمة في الانتباه متعدد الرؤوس. - attention_head_dim (
int، اختياري، القيمة الافتراضية 64) — عدد القنوات في كل رأس. - num_layers (
int، اختياري، القيمة الافتراضية 20) — عدد طبقات كتل Transformer المستخدمة. - embedding_dim (
int، اختياري، القيمة الافتراضية 768) — بُعد مدخلات النموذجhidden_states - num_embeddings (
int، اختياري، القيمة الافتراضية 77) — عدد التضمينات (embeddings) لإمدادات النموذجhidden_states - additional_embeddings (
int، اختياري، القيمة الافتراضية 4) — عدد الرموز الإضافية المضافة إلىhidden_statesالمُسقطة. الطول الفعلي لـhidden_statesالمستخدمة هوnum_embeddings + additional_embeddings. - dropout (
float, اختياري، القيمة الافتراضية 0.0) — احتمال dropout المستخدم. - time_embed_act_fn (
str، اختياري، القيمة الافتراضية ‘silu’) — دالة التنشيط المستخدمة لإنشاء تمثيلات خطوات الزمن. - norm_in_type (
str، اختياري، القيمة الافتراضية None) — طبقة التطبيع التي تُطبَّق على الحالات المخفية قبل تمريرها إلى كتل Transformer. اضبطها علىNoneإذا لم يكن التطبيع مطلوبًا. - embedding_proj_norm_type (
str، اختياري، القيمة الافتراضية None) — طبقة التطبيع التي تُطبَّق على مدخلproj_embedding. اضبطها علىNoneإذا لم يكن التطبيع مطلوبًا. - encoder_hid_proj_type (
str، اختياري، القيمة الافتراضيةlinear) — طبقة الإسقاط التي تُطبَّق على مدخلاتencoder_hidden_states. اضبطها علىNoneإذا كانتencoder_hidden_statesتساويNone. - added_emb_type (
str، اختياري، القيمة الافتراضيةprd) — تضمينات إضافية لتكييف النموذج. اختر من بينprdأوNone. إذا اخترتprd، فسيتم إضافة رمز في البداية يشير إلى (الكمي) ناتج الضرب النقطي بين تضمين النص وتضمين الصورة كما اقترح في ورقة unclip https://huggingface.co/papers/2204.06125 إذا كانت القيمةNone، فلن يتم إضافة أي تضمينات إضافية. - time_embed_dim (
int, *optional*, defaults to None) -- The dimension of timestep embeddings. If None, will be set tonum_attention_heads * attention_head_dim` - embedding_proj_dim (
int، اختياري، الافتراضي None) — بعدproj_embedding. إذا كان None، فسيتم تعيينه إلىembedding_dim. - clip_embed_dim (
int، اختياري، الافتراضي None) — بعد المخرجات. إذا كان None، فسيتم تعيينه إلىembedding_dim.
نموذج Transformer مسبق.
forward
< source >( hidden_statestimestep: typing.Union[torch.Tensor, float, int]proj_embedding: Tensorencoder_hidden_states: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.BoolTensor] = Nonereturn_dict: bool = True ) → PriorTransformerOutput or tuple
المعاملات
- hidden_states (
torch.Tensorمن الشكل(batch_size, embedding_dim)) — تضمينات الصور المتوقعة حاليًا. - timestep (
torch.LongTensor) — خطوة إزالة الضوضاء الحالية. - proj_embedding (
torch.Tensorمن الشكل(batch_size, embedding_dim)) — متجه التضمين المُسقط الذي يُشترط عليه عملية إزالة الضوضاء. - encoder_hidden_states (
torch.Tensorمن الشكل(batch_size, num_embeddings, embedding_dim)) — حالات المخفية لحالات التضمين النصية التي يُشترط عليها عملية إزالة الضوضاء. - attention_mask (
torch.BoolTensorof shape(batch_size, num_embeddings)) — قناع النص الخاص بتضمينات النص. - return_dict (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب إرجاع PriorTransformerOutput بدلاً من مجموعة (tuple) عادية.
يعيد
PriorTransformerOutput أو tuple
If return_dict is True, a PriorTransformerOutput is returned, otherwise a tuple is returned where the first element is the sample tensor.
طريقة PriorTransformer الأمامية.
يعطّل معالجات الانتباه المخصصة ويضبط تطبيق الانتباه الافتراضي.
PriorTransformerOutput
فئة diffusers.models.transformers.prior_transformer.PriorTransformerOutput
< source >( predicted_image_embedding: Tensor )
مخرجات PriorTransformer.