Diffusers documentation
ConsisIDTransformer3DModel
ConsisIDTransformer3DModel
A Diffusion Transformer model for 3D data from ConsisID was introduced in Identity-Preserving Text-to-Video Generation by Frequency Decomposition by Peking University & University of Rochester & etc.
يمكن تحميل النموذج باستخدام مقتطف الشيفرة التالي.
from diffusers import ConsisIDTransformer3DModel
transformer = ConsisIDTransformer3DModel.from_pretrained("BestWishYsh/ConsisID-preview", subfolder="transformer", dtype=torch.bfloat16).to("cuda") # or "mps", "xpu", "cpu"ConsisIDTransformer3DModel
فئة diffusers.ConsisIDTransformer3DModel
< source >( num_attention_heads: int = 30attention_head_dim: int = 64in_channels: int = 16out_channels: int | None = 16flip_sin_to_cos: bool = Truefreq_shift: int = 0time_embed_dim: int = 512text_embed_dim: int = 4096num_layers: int = 30dropout: float = 0.0attention_bias: bool = Truesample_width: int = 90sample_height: int = 60sample_frames: int = 49patch_size: int = 2temporal_compression_ratio: int = 4max_text_seq_length: int = 226activation_fn: str = 'gelu-approximate'timestep_activation_fn: str = 'silu'norm_elementwise_affine: bool = Truenorm_eps: float = 1e-05spatial_interpolation_scale: float = 1.875temporal_interpolation_scale: float = 1.0use_rotary_positional_embeddings: bool = Falseuse_learned_positional_embeddings: bool = Falseis_train_face: bool = Falseis_kps: bool = Falsecross_attn_interval: int = 2cross_attn_dim_head: int = 128cross_attn_num_heads: int = 16LFE_id_dim: int = 1280LFE_vit_dim: int = 1024LFE_depth: int = 10LFE_dim_head: int = 64LFE_num_heads: int = 16LFE_num_id_token: int = 5LFE_num_querie: int = 32LFE_output_dim: int = 2048LFE_ff_mult: int = 4LFE_num_scale: int = 5local_face_scale: float = 1.0 )
المعاملات
- num_attention_heads (
int، القيمة الافتراضية30) — عدد الرؤوس المستخدمة في الانتباه متعدد الرؤوس. - attention_head_dim (
int، القيمة الافتراضية64) — عدد القنوات في كل رأس. - in_channels (
int)، القيمة الافتراضية16— عدد القنوات في المدخلات. - out_channels (
int، اختياري، القيمة الافتراضية16) — عدد القنوات في المخرجات. - flip_sin_to_cos (
bool، القيمة الافتراضيةTrue) — ما إذا كان يجب عكس sin إلى cos في تضمين الوقت. - time_embed_dim (
int، القيمة الافتراضية512) — البُعد الناتج لتضمينات خطوات الزمن. - text_embed_dim (
int، القيمة الافتراضية4096) — البُعد المدخل لتضمينات النص من مُشفِّر النص. - num_layers (
int، القيمة الافتراضية30) — عدد طبقات كتل Transformer المستخدمة. - dropout (
float، القيمة الافتراضية0.0) — احتمالية dropout المستخدمة. - attention_bias (
bool، القيمة الافتراضيةTrue) — ما إذا كان سيتم استخدام الانحياز في طبقات الإسقاط الانتباه. - sample_width (
int، القيمة الافتراضية90) — عرض الكامنات المدخلة. - sample_height (
int، القيمة الافتراضية60) — ارتفاع الكامنات المدخلة. - sample_frames (
int، القيمة الافتراضية49) — عدد الإطارات في الكامنات المدخلة. لاحظ أن هذا المعامل تم تهيئته بشكل غير صحيح إلى 49 بدلاً من 13، لأن ConsisID كان يعالج 13 إطارًا كامنًا دفعة واحدة في إعداداته الافتراضية والموصى بها، لكن لا يمكن تغييره إلى القيمة الصحيحة لضمان التوافق مع الإصدارات السابقة. لإنشاء محوّل يحتوي على K إطارًا كامنًا، ستكون القيمة الصحيحة التي يجب تمريرها هنا هي: ((K - 1) * temporal_compression_ratio + 1). - patch_size (
int، القيمة الافتراضية2) — حجم البقع المستخدمة في طبقة تضمين البقع. - temporal_compression_ratio (
int، القيمة الافتراضية4) — نسبة الضغط عبر البُعد الزمني. راجع التوثيق الخاص بـsample_frames. - max_text_seq_length (
int، القيمة الافتراضية226) — الحد الأقصى لطول تسلسل تمثيلات النص المدخلة. - activation_fn (
str، القيمة الافتراضية"gelu-approximate") — دالة التنشيط المستخدمة في الشبكة العصبية الأمامية. - timestep_activation_fn (
str، القيمة الافتراضية"silu") — دالة التنشيط المستخدمة عند توليد تضمينات خطوة الزمن. - norm_elementwise_affine (
bool، القيمة الافتراضيةTrue) — ما إذا كان سيتم استخدام التحويل الأفيني العنصري في طبقات التطبيع. - norm_eps (
float، القيمة الافتراضية1e-5) — قيمة الإيبسلون المستخدمة في طبقات التطبيع. - spatial_interpolation_scale (
float، القيمة الافتراضية1.875) — معامل التوسيع الذي يُطبَّق في التضمينات الموضعية ثلاثية الأبعاد عبر الأبعاد المكانية. - temporal_interpolation_scale (
float، القيمة الافتراضية1.0) — معامل التوسيع الذي يُطبَّق في التضمينات الموضعية ثلاثية الأبعاد عبر الأبعاد الزمنية. - is_train_face (
bool، القيمة الافتراضيةFalse) — ما إذا كان سيتم تفعيل وحدة الحفاظ على الهوية أثناء عملية التدريب. عند ضبطها علىTrue، سيركز النموذج على مهام الحفاظ على الهوية. - is_kps (
bool، القيمة الافتراضيةFalse) — ما إذا كان سيتم تفعيل نقاط الملامح (keypoints) لاستخراج الوجه العام. إذا كانت القيمةTrue، فستتضمن النقاط الملامح في النموذج. - cross_attn_interval (
int، القيمة الافتراضية2) — الفاصل بين طبقات الانتباه المتقاطع في بنية Transformer. قد يؤدي استخدام قيمة أكبر إلى تقليل تكرار عمليات حساب الانتباه المتقاطع، مما يساعد في تقليل العبء الحسابي. - cross_attn_dim_head (
int, اختياري، القيمة الافتراضية128) — أبعاد كل رأس انتباه في طبقات الانتباه المتقاطع من بنية Transformer. تزيد القيمة الأكبر من القدرة على الانتباه إلى أنماط أكثر تعقيدًا، لكنها تزيد أيضًا من تكاليف الذاكرة والحساب. - cross_attn_num_heads (
int, اختياري، القيمة الافتراضية16) — عدد رؤوس الانتباه في طبقات الانتباه المتقاطع. تتيح الرؤوس الإضافية آليات انتباه أكثر توازياً، مما يساعد على التقاط علاقات متنوعة بين المكونات المختلفة للمدخل، لكنها قد تزيد أيضاً من المتطلبات الحسابية. - LFE_id_dim (
int, اختياري، القيمة الافتراضية1280) — البُعد المتجهي المتجه التعريفي المستخدم في المستخرج الوجهي المحلي (LFE). يمثل هذا المتجه سمات الهوية للوجه، وهي مهمة لمهام مثل التعرف على الوجه والحفاظ على الهوية عبر إطارات مختلفة. - LFE_vit_dim (
int, اختياري، القيمة الافتراضية1024) — بعد مخرج محول الرؤية (ViT) المستخدم في المستخرج الوجهي المحلي (LFE). تحدد هذه القيمة حجم متجهات الميزات التي يولدها المحول والتي سيتم معالجتها لاستخراج ميزات الوجه. - LFE_depth (
int, اختياري، القيمة الافتراضية10) — عدد الطبقات في مستخرج الوجه المحلي (LFE). يسمح زيادة العمق للنموذج بالتقاط تمثيلات أكثر تعقيدًا لميزات الوجه، لكنه يزيد أيضًا من العبء الحسابي. - LFE_dim_head (
int, اختياري، القيمة الافتراضية64) — أبعاد كل رأس انتباه في المستخرج الوجهي المحلي (LFE). يؤثر هذا المعامل على مدى دقة معالجة النموذج والتركيز على أجزاء مختلفة من ملامح الوجه أثناء عملية الاستخراج. - LFE_num_heads (
int, اختياري، القيمة الافتراضية16) — عدد رؤوس الانتباه في المستخرج الوجهي المحلي (LFE). يمكن أن يؤدي زيادة عدد الرؤوس إلى تحسين قدرة النموذج على التقاط ميزات وجهية متنوعة، ولكن على حساب زيادة التعقيد الحسابي. - LFE_num_id_token (
int, اختياري، القيمة الافتراضية5) — عدد رموز الهوية المستخدمة في مستخرج الوجه المحلي (LFE). يحدد هذا العدد كم من الرموز المتعلقة بالهوية سيعالجها النموذج لضمان الحفاظ على هوية الوجه أثناء استخراج الميزات. - LFE_num_querie (
int, اختياري، القيمة الافتراضية32) — عدد رموز الاستعلام المستخدمة في المستخرج الوجهي المحلي (LFE). تُستخدم هذه الرموز لالتقاط المعلومات عالية التردد المتعلقة بالوجه، مما يساعد في استخراج ملامح الوجه بدقة. - LFE_output_dim (
int, اختياري، القيمة الافتراضية2048) — البُعد الإخراجي لاستخراج الوجه المحلي (LFE). يحدد هذا البُعد حجم متجهات الميزات التي ينتجها وحدة LFE، والتي ستُستخدم للمهام اللاحقة مثل التعرف على الوجه أو التتبع. - LFE_ff_mult (
int, اختياري، القيمة الافتراضية4) — عامل الضرب المطبّق على حجم الطبقة المخفية في الشبكة العصبية الأمامية (feed-forward) داخل مستخرج الملامح الوجهية المحلي (LFE). تزيد القيمة الأعلى من قدرة النموذج على تعلّم تحويلات أكثر تعقيدًا للملامح الوجهية، لكنها تزيد أيضًا من متطلبات الحساب والذاكرة. - LFE_num_scale (
int, اختياري، القيمة الافتراضية5) — عدد المقاييس المختلفة للميزة البصرية. تزيد القيمة الأعلى من قدرة النموذج على تعلّم تحويلات أكثر تعقيدًا لميزات الوجه، لكنها تزيد أيضًا من متطلبات الحساب والذاكرة. - local_face_scale (
float، القيمة الافتراضية1.0) — عامل تحجيم يُستخدم لضبط أهمية الميزات الوجهية المحلية في النموذج. يمكن أن يؤثر هذا العامل على مدى تركيز النموذج على المحتوى المرتبط بالوجه ذي التردد العالي.
نموذج Transformer لبيانات تشبه الفيديو في ConsisID.
forward
< source >( hidden_states: Tensorencoder_hidden_states: Tensortimestep: typing.Union[int, float, torch.LongTensor]timestep_cond: typing.Optional[torch.Tensor] = Noneimage_rotary_emb: tuple[torch.Tensor, torch.Tensor] | None = Noneattention_kwargs: dict[str, typing.Any] | None = Noneid_cond: typing.Optional[torch.Tensor] = Noneid_vit_hidden: typing.Optional[torch.Tensor] = Nonereturn_dict: bool = True )
المعاملات
- hidden_states (
torch.Tensorمن الشكل(batch_size, num_frames, channels, height, width)) — مدخلاتhidden_states. - encoder_hidden_states (
torch.Tensorمن الشكل(batch_size, sequence_len, embed_dims)) — تضمينات شرطية (تضمينات محسوبة من الشروط المدخلة مثل الأوامر النصية) للاستخدام. - timestep (
torch.LongTensor) — يُستخدم للإشارة إلى خطوة إزالة الضوضاء. - timestep_cond (
torch.Tensor، اختياري) — تضمينات شرطية لخطوة الزمن. إذا تم توفيرها، سيتم جمع التضمينات مع العينات المارة عبر طبقةself.time_embeddingللحصول على تضمينات خطوة الزمن النهائية. - image_rotary_emb (
tupleمنtorch.Tensor، اختياري) — تضمينات موضعية دوّارة محسوبة مسبقًا. - attention_kwargs (
dict، اختياري) — قاموس kwargs يُمرَّر إلىAttentionProcessorإذا تم تحديده، كما هو معرَّف تحتself.processorفي diffusers.models.attention_processor. - id_cond (
torch.Tensor، اختياري) — تضمين الوجه المستخرج بواسطة مستخرج الوجوه المحلي المستخدم لتكييف الهوية. - id_vit_hidden (
torch.Tensor، اختياري) — حالات ViT المخفية المستخرجة من صور الوجوه المستخدمة لتكييف الهوية. - return_dict (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب إرجاع~models.transformer_2d.Transformer2DModelOutputبدلاً من tuple عادي.
طريقة ConsisIDTransformer3DModel الأمامية.
Transformer2DModelOutput
فئة diffusers.models.modeling_outputs.Transformer2DModelOutput
< source >( sample: torch.Tensor )
المعاملات
- sample (
torch.Tensorمن الشكل(batch_size, num_channels, height, width)أو(batch size, num_vector_embeds - 1, num_latent_pixels)إذا كان Transformer2DModel منفصلاً) — مخرجات الحالات المخفية المشروطة على مدخلencoder_hidden_states. إذا كان منفصلاً، يعيد توزيعات الاحتمال للبكسلات الكامنة غير الملوثة.
مخرجات Transformer2DModel.