Diffusers documentation

SD3ControlNetModel

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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

< >

( 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

< >

( chunk_size: int | None = Nonedim: int = 0 )

المعاملات

  • chunk_size (int، اختياري) — حجم الدفعة (chunk size) لطبقات التقدّم الأمامي. إذا لم يُحدَّد، فسيتم تشغيل طبقة التقدّم الأمامي بشكل فردي على كل متجه (tensor) ذي بُعد dim.
  • dim (int، اختياري، القيمة الافتراضية 0) — البُعد الذي يجب تقسيم عملية الحساب الأمامي (feed-forward) عليه. اختر بين dim=0 (الحزمة) أو dim=1 (طول التسلسل).

يحدد معالج الانتباه لاستخدام تقطيع الأمامي.

forward

< >

( 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 الأمامية.

fuse_qkv_projections

< >

( )

…

> هذه الواجهة البرمجية 🧪 تجريبية.

unfuse_qkv_projections

< >

( )

يعطّل إسقاط QKV المدمج إذا كان مفعّلًا.

> هذه الواجهة البرمجية 🧪 تجريبية.

SD3ControlNetOutput

فئة diffusers.models.controlnets.SD3ControlNetOutput

< >

( controlnet_block_samples: tuple[torch.Tensor] )

Update on GitHub