Diffusers documentation
SD3ControlNetModel
SD3ControlNetModel
SD3ControlNetModel هو تطبيق لـ ControlNet مخصص لنموذج Stable Diffusion 3.
تم تقديم نموذج ControlNet في Adding Conditional Control to Text-to-Image Diffusion Models بواسطة Lvmin Zhang وAnyi Rao وManeesh Agrawala. يوفر هذا النموذج درجة أكبر من التحكم في توليد الصور من النص من خلال اشتراط النموذج على مدخلات إضافية مثل خرائط الحواف، وخرائط العمق، وخرائط التقسيم، ونقاط المفاتيح لكشف الوضعية.
ملخص الورقة البحثية هو:
نقدّم ControlNet، وهو معمارية شبكة عصبية لإضافة ضوابط شرطيّة مكانية إلى نماذج الانتشار النصّية-إلى-صورة الكبيرة المُدرَّبة مسبقًا. تقوم ControlNet بقفل نماذج الانتشار الكبيرة الجاهزة للإنتاج، وتعيد استخدام طبقات الترميز العميقة والقوية المُدرَّبة مسبقًا على مليارات الصور كهيكل أساسي قوي لتعلّم مجموعة متنوعة من الضوابط الشرطيّة. يتم ربط المعمارية العصبية بـ«التحويلات الصفرية» (طبقات تحويل مُهيّأة إلى الصفر) التي تُنمّي المعاملات تدريجيًا من الصفر وتضمن عدم تأثير أي ضوضاء ضارة على الضبط الدقيق. اختبرنا ضوابط شرطيّة متنوعة، مثل الحواف، والعمق، والتجزئة، ووضع الجسم البشري، وغيرها، باستخدام Stable Diffusion، باستخدام شرط واحد أو عدة شروط، مع وجود موجهات نصية أو بدونها. نُظهر أنّ تدريب نماذج ControlNet متين مع مجموعات البيانات الصغيرة (<50k) والكبيرة (>1m). تُظهر النتائج الواسعة أنّ ControlNet قد يسهّل تطبيقات أوسع للتحكم في نماذج انتشار الصور.
التحميل من التنسيق الأصلي
بشكل افتراضي، يجب تحميل SD3ControlNetModel باستخدام from_pretrained().
from diffusers import StableDiffusion3ControlNetPipeline
from diffusers.models import SD3ControlNetModel, SD3MultiControlNetModel
controlnet = SD3ControlNetModel.from_pretrained("InstantX/SD3-Controlnet-Canny")
pipe = StableDiffusion3ControlNetPipeline.from_pretrained("stabilityai/stable-diffusion-3-medium-diffusers", controlnet=controlnet)SD3ControlNetModel
فئة diffusers.SD3ControlNetModel
< source >( sample_size: int = 128patch_size: int = 2in_channels: int = 16num_layers: int = 18attention_head_dim: int = 64num_attention_heads: int = 18joint_attention_dim: int = 4096caption_projection_dim: int = 1152pooled_projection_dim: int = 2048out_channels: int = 16pos_embed_max_size: int = 96extra_conditioning_channels: int = 0dual_attention_layers: tuple[int, ...] = ()qk_norm: str | None = Nonepos_embed_type: str | None = 'sincos'use_pos_embed: bool = Trueforce_zeros_for_pooled_projection: bool = True )
المعاملات
- sample_size (
int، القيمة الافتراضية128) — العرض/الارتفاع للكائنات الكامنة. يتم تثبيت هذا أثناء التدريب لأنه يُستخدم لتعلم عدد من تضمينات المواقع. - patch_size (
int، القيمة الافتراضية2) — حجم الباتش لتحويل البيانات المدخلة إلى باتشات صغيرة. - in_channels (
int)، القيمة الافتراضية16) — عدد قنوات الكمون في المدخلات. - num_layers (
int، القيمة الافتراضية18) — عدد طبقات كتل التحويل (transformer blocks) المستخدمة. - attention_head_dim (
int، القيمة الافتراضية64) — عدد القنوات في كل رأس. - num_attention_heads (
int، القيمة الافتراضية18) — عدد الرؤوس المستخدمة في الانتباه متعدد الرؤوس. - joint_attention_dim (
int، القيمة الافتراضية4096) — بعد التضمين (embedding dimension) المستخدم للانتباه المشترك بين النص والصورة. - caption_projection_dim (
int، القيمة الافتراضية1152) — بعد التضمين لتضمينات التسميات. - pooled_projection_dim (
int، القيمة الافتراضية2048) — بعد التضمين (embedding dimension) لإسقاطات النص المجمعة. - out_channels (
int، القيمة الافتراضية16) — عدد القنوات الكامنة في المخرجات. - pos_embed_max_size (
int، القيمة الافتراضية96) — الارتفاع/العرض الأقصى للاضمحلال الموضعي. - extra_conditioning_channels (
int، القيمة الافتراضية0) — عدد القنوات الإضافية المستخدمة للتكييف في تضمين البقع. - dual_attention_layers (
tuple[int, ...])، القيمة الافتراضية()) — عدد كتل التحويل ذات التدفق المزدوج المستخدمة. - qk_norm (
str، اختياري، القيمة الافتراضيةNone) — طريقة التطبيع المستخدمة للاستعلام والمفتاح في طبقة الانتباه. إذا كانتNone، فلا يُستخدم أي تطبيع. - pos_embed_type (
str، القيمة الافتراضية"sincos") — نوع التضمين الموضعي (positional embedding) الذي سيتم استخدامه. اختر بين"sincos"وNone. - use_pos_embed (
bool، القيمة الافتراضيةTrue) — ما إذا كان سيتم استخدام التضمينات الموضعية. - force_zeros_for_pooled_projection (
bool، القيمة الافتراضيةTrue) — ما إذا كان يجب إجبار قيم التضمين (embeddings) الخاصة بالمشروع المجمّع (pooled projection) على أن تكون أصفاراً. يتم التعامل مع ذلك في خطوط الأنابيب (pipelines) من خلال قراءة قيمة الإعداد (config) لنموذج ControlNet.
نموذج ControlNet لـ Stable Diffusion 3.
enable_forward_chunking
< source >( chunk_size: int | None = Nonedim: int = 0 )
المعاملات
- chunk_size (
int، اختياري) — حجم الدفعة (chunk size) لطبقات التقدّم الأمامي. إذا لم يُحدَّد، فسيتم تشغيل طبقة التقدّم الأمامي بشكل فردي على كل متجه (tensor) ذي بُعدdim. - dim (
int، اختياري، القيمة الافتراضية0) — البُعد الذي يجب تقسيم عملية الحساب الأمامي (feed-forward) عليه. اختر بين dim=0 (الحزمة) أو dim=1 (طول التسلسل).
يحدد معالج الانتباه لاستخدام تقطيع الأمامي.
forward
< source >( hidden_states: Tensorcontrolnet_cond: Tensorconditioning_scale: float = 1.0encoder_hidden_states: Tensor = Nonepooled_projections: Tensor = Nonetimestep: LongTensor = Nonejoint_attention_kwargs: dict[str, typing.Any] | None = Nonereturn_dict: bool = True )
المعاملات
- hidden_states (
torch.Tensorمن الشكل(batch size, channel, height, width)) — مدخلاتhidden_states. - controlnet_cond (
torch.Tensor) — مصفوفة الإدخال الشرطية ذات الشكل(batch_size, sequence_length, hidden_size). - conditioning_scale (
float، القيمة الافتراضية1.0) — معامل المقياس لمخرجات ControlNet. - encoder_hidden_states (
torch.Tensorمن الشكل(batch size, sequence_len, embed_dims)) — تضمينات شرطية (تضمينات محسوبة من الشروط المدخلة مثل الأوامر النصية) للاستخدام. - pooled_projections (
torch.Tensorمن الشكل(batch_size, projection_dim)) — تمثيلات مُسقطَة من تمثيلات شروط الإدخال. - timestep (
torch.LongTensor) — يُستخدم للإشارة إلى خطوة إزالة الضوضاء. - joint_attention_kwargs (
dict، اختياري) — قاموس kwargs يُمرَّر إلىAttentionProcessorكما هو معرَّف تحتself.processorفي diffusers.models.attention_processor إذا تمَّ تحديده. - return_dict (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب إرجاع~models.transformer_2d.Transformer2DModelOutputبدلاً من tuple عادي.
طريقة SD3Transformer2DModel الأمامية.
يعطّل إسقاط QKV المدمج إذا كان مفعّلًا.
> هذه الواجهة البرمجية 🧪 تجريبية.
SD3ControlNetOutput
فئة diffusers.models.controlnets.SD3ControlNetOutput
< source >( controlnet_block_samples: tuple[torch.Tensor] )