Diffusers documentation

ControlNetUnionModel

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

ControlNetUnionModel

ControlNetUnionModel هو تطبيق لـ ControlNet مخصص لنموذج Stable Diffusion XL.

تم تقديم نموذج ControlNet في ControlNetPlus بواسطة xinsir6. يدعم مدخلات شرطية متعددة دون زيادة في الحسابات.

صممنا معمارية جديدة قادرة على دعم أكثر من 10 أنواع من التحكم في توليد الصور من النص إلى الصورة، وقادرة على توليد صور عالية الدقة قابلة للمقارنة بصريًا مع midjourney. يعتمد الشبكة على معمارية ControlNet الأصلية، ونقترح وحدتين جديدتين من أجل: 1 توسيع ControlNet الأصلية لدعم ظروف صور مختلفة باستخدام نفس معاملات الشبكة. 2 دعم إدخال ظروف متعددة دون زيادة إزاحة الحساب، وهو أمر مهم بشكل خاص للمصممين الذين يرغبون في تحرير الصورة بالتفصيل، حيث تستخدم الظروف المختلفة نفس مشفر الظروف، دون إضافة حسابات أو معاملات إضافية.

جارٍ التحميل

بشكل افتراضي، يجب تحميل ControlNetUnionModel باستخدام from_pretrained().

from diffusers import StableDiffusionXLControlNetUnionPipeline, ControlNetUnionModel

controlnet = ControlNetUnionModel.from_pretrained("xinsir/controlnet-union-sdxl-1.0")
pipe = StableDiffusionXLControlNetUnionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", controlnet=controlnet)

ControlNetUnionModel

فئة diffusers.ControlNetUnionModel

< >

( in_channels: int = 4conditioning_channels: int = 3flip_sin_to_cos: bool = Truefreq_shift: int = 0down_block_types: tuple = ('CrossAttnDownBlock2D', 'CrossAttnDownBlock2D', 'CrossAttnDownBlock2D', 'DownBlock2D')only_cross_attention: bool | tuple[bool] = Falseblock_out_channels: tuple = (320, 640, 1280, 1280)layers_per_block: int = 2downsample_padding: int = 1mid_block_scale_factor: float = 1act_fn: str = 'silu'norm_num_groups: int | None = 32norm_eps: float = 1e-05cross_attention_dim: int = 1280transformer_layers_per_block: int | tuple[int, ...] = 1encoder_hid_dim: int | None = Noneencoder_hid_dim_type: str | None = Noneattention_head_dim: int | tuple[int, ...] = 8num_attention_heads: int | tuple[int, ...] | None = Noneuse_linear_projection: bool = Falseclass_embed_type: str | None = Noneaddition_embed_type: str | None = Noneaddition_time_embed_dim: int | None = Nonenum_class_embeds: int | None = Noneupcast_attention: bool = Falseresnet_time_scale_shift: str = 'default'projection_class_embeddings_input_dim: int | None = Nonecontrolnet_conditioning_channel_order: str = 'rgb'conditioning_embedding_out_channels: tuple[int, ...] | None = (48, 96, 192, 384)global_pool_conditions: bool = Falseaddition_embed_type_num_heads: int = 64num_control_type: int = 6num_trans_channel: int = 320num_trans_head: int = 8num_trans_layer: int = 1num_proj_channel: int = 320 )

المعاملات

  • in_channels (int، القيمة الافتراضية 4) — عدد القنوات في العينة المدخلة.
  • flip_sin_to_cos (bool، القيمة الافتراضية True) — ما إذا كان يجب عكس sin إلى cos في تضمين الوقت.
  • freq_shift (int، القيمة الافتراضية 0) — إزاحة التردد التي تُطبَّق على تضمين الزمن.
  • down_block_types (tuple[str]، الافتراضي ("CrossAttnDownBlock2D", "CrossAttnDownBlock2D", "CrossAttnDownBlock2D", "DownBlock2D")) — المجموعة المرتبة (tuple) من كتل التقليل (downsample) المستخدمة.
  • only_cross_attention (bool | tuple[bool]، القيمة الافتراضية False) —
  • block_out_channels (tuple[int]، القيمة الافتراضية (320, 640, 1280, 1280)) — مجموعة قنوات الإخراج لكل كتلة.
  • layers_per_block (int، القيمة الافتراضية 2) — عدد الطبقات في كل كتلة.
  • downsample_padding (int، القيمة الافتراضية 1) — الحشو المستخدم لتحويل الاستيفاء النازل.
  • mid_block_scale_factor (float، القيمة الافتراضية 1) — معامل المقياس المستخدم للكتلة الوسطى.
  • act_fn (str، القيمة الافتراضية “silu”) — دالة التنشيط المستخدمة.
  • norm_num_groups (int, اختياري، القيمة الافتراضية 32) — عدد المجموعات المستخدمة للتطبيع. إذا كانت القيمة None، يتم تجاوز طبقات التطبيع والتفعيل في المعالجة اللاحقة.
  • norm_eps (float، القيمة الافتراضية 1e-5) — قيمة الإيبسلون المستخدمة في عملية التطبيع.
  • cross_attention_dim (int، القيمة الافتراضية 1280) — بعد ميزات الانتباه المتقاطع.
  • transformer_layers_per_block (int أو tuple[int]، اختياري، القيمة الافتراضية 1) — عدد كتل الترانسفورمر من النوع BasicTransformerBlock. ذو صلة فقط بـ ~models.unet_2d_blocks.CrossAttnDownBlock2D، ~models.unet_2d_blocks.CrossAttnUpBlock2D، ~models.unet_2d_blocks.UNetMidBlock2DCrossAttn.
  • encoder_hid_dim (int، اختياري، القيمة الافتراضية None) — إذا تم تعريف encoder_hid_dim_type، فسيتم إسقاط encoder_hidden_states من بُعد encoder_hid_dim إلى cross_attention_dim.
  • encoder_hid_dim_type (str، اختياري، القيمة الافتراضية None) — إذا تم تقديمه، تُخفَّض أبعاد encoder_hidden_states والتضمينات الأخرى المحتملة إلى تضمينات نصية بأبعاد cross_attention وفقاً لـ encoder_hid_dim_type.
  • attention_head_dim (int | tuple[int]، القيمة الافتراضية 8) — بعد رؤوس الانتباه.
  • use_linear_projection (bool، القيمة الافتراضية False) —
  • class_embed_type (str، اختياري، القيمة الافتراضية None) — نوع تضمين الفئة المستخدم، والذي يُجمع في النهاية مع تضمينات الوقت. اختر من بين None، "timestep"، "identity"، "projection"، أو "simple_projection".
  • addition_embed_type (str، اختياري، القيمة الافتراضية None) — يُهيّئ تضمينًا اختياريًا سيُجمع مع تضمينات الوقت. اختر من بين None أو “text”. سيستخدم “text” طبقة TextTimeEmbedding.
  • num_class_embeds (int, اختياري، القيمة الافتراضية 0) — بُعد المدخلات لمصفوفة التضمين القابلة للتعلم التي سيتم إسقاطها إلى time_embed_dim، عند تنفيذ التكييف حسب الفئة باستخدام class_embed_type يساوي None.
  • upcast_attention (bool، القيمة الافتراضية False) —
  • resnet_time_scale_shift (str) — إعدادات إزاحة مقياس الوقت لكتل ResNet (انظر ResnetBlock2D). القيمة الافتراضية "default". اختر من بين default أو scale_shift.
  • projection_class_embeddings_input_dim (int، اختياري، القيمة الافتراضية None) — البُعد الخاص بمدخل class_labels عندما يكون class_embed_type="projection". مطلوب عندما يكون class_embed_type="projection".
  • controlnet_conditioning_channel_order (str، القيمة الافتراضية "rgb") — ترتيب القنوات للصورة الشرطية. سيتم التحويل إلى rgb إذا كانت bgr.
  • conditioning_embedding_out_channels (tuple[int]، اختياري، القيمة الافتراضية (48, 96, 192, 384)) — مجموعة قنوات الإخراج لكل كتلة في طبقة conditioning_embedding.
  • global_pool_conditions (bool، القيمة الافتراضية False) —

نموذج ControlNetUnion.

forward

< >

( sample: Tensortimestep: typing.Union[torch.Tensor, float, int]encoder_hidden_states: Tensorcontrolnet_cond: listcontrol_type: Tensorcontrol_type_idx: listconditioning_scale: float | list[float] = 1.0class_labels: typing.Optional[torch.Tensor] = Nonetimestep_cond: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneadded_cond_kwargs: dict[str, torch.Tensor] | None = Nonecross_attention_kwargs: dict[str, typing.Any] | None = Nonefrom_multi: bool = Falseguess_mode: bool = Falsereturn_dict: bool = True ) → ~models.controlnet.ControlNetOutput or tuple

المعاملات

  • sample (torch.Tensor) — مصفوفة الإدخال الضجيج.
  • timestep (torch.Tensor | float | int) — عدد خطوات الزمن (timesteps) لإزالة الضوضاء من مدخل.
  • encoder_hidden_states (torch.Tensor) — حالات المُشفِّر المخفية.
  • controlnet_cond (list[torch.Tensor]) — مصفوفات الإدخال الشرطية.
  • control_type (torch.Tensor) — مصفوفة (Tensor) بأبعاد (batch, num_control_type) تحتوي على قيم 0 أو 1 اعتماداً على ما إذا كان نوع التحكم مستخدماً أم لا.
  • control_type_idx (list[int]) — فهارس control_type.
  • conditioning_scale (float، القيمة الافتراضية 1.0) — معامل المقياس لمخرجات ControlNet.
  • class_labels (torch.Tensor، اختياري، القيمة الافتراضية None) — تسميات فئات اختيارية للشروط. سيتم جمع تمثيلاتها مع تمثيلات خطوة الزمن.
  • timestep_cond (torch.Tensor، اختياري، القيمة الافتراضية None) — تضمينات شرطية إضافية لخطوة الزمن. إذا تم توفيرها، سيتم جمع التضمينات مع timestep_embedding المُمررة عبر طبقة self.time_embedding للحصول على تضمينات خطوة الزمن النهائية.
  • attention_mask (torch.Tensor، اختياري، القيمة الافتراضية None) — يُطبَّق قناع انتباه (attention mask) بأبعاد (batch, key_tokens) على encoder_hidden_states. إذا كانت القيمة 1 يُحفظ القناع، وإلا إذا كانت 0 يُستبعد. يُحوَّل القناع إلى انحياز (bias) يضيف قيمًا سالبة كبيرة إلى درجات الانتباه المقابلة لرموز “الاستبعاد”.
  • added_cond_kwargs (dict) — شروط إضافية لشبكة UNet في Stable Diffusion XL.
  • cross_attention_kwargs (dict[str]، اختياري، القيمة الافتراضية None) — قاموس kwargs يُمرَّر إلى AttnProcessor إذا تم تحديده.
  • from_multi (bool، القيمة الافتراضية False) — استخدم التقييس القياسي عند الاستدعاء من MultiControlNetUnionModel.
  • guess_mode (bool، القيمة الافتراضية False) — في هذا الوضع، يحاول مُشفِّر ControlNet بأقصى قدراته التعرف على محتوى الإدخال حتى إذا قمت بإزالة جميع الأوامر النصية. يُوصى باستخدام قيمة guidance_scale بين 3.0 و5.0.
  • return_dict (bool، القيمة الافتراضية True) — ما إذا كان يجب إرجاع ~models.controlnet.ControlNetOutput بدلاً من tuple عادي.

يعيد

~models.controlnet.ControlNetOutput أو tuple

إذا كان return_dict هو True، يُعاد ~models.controlnet.ControlNetOutput، وإلا يُعاد tuple حيث يكون العنصر الأول هو tensor العينة.

طريقة ControlNetUnionModel الأمامية.

from_unet

< >

( unet: UNet2DConditionModelcontrolnet_conditioning_channel_order: str = 'rgb'conditioning_embedding_out_channels: tuple[int, ...] | None = (16, 32, 96, 256)load_weights_from_unet: bool = True )

المعاملات

  • unet (UNet2DConditionModel) — أوزان نموذج UNet التي سيتم نسخها إلى ControlNetUnionModel. كما يتم نسخ جميع خيارات الإعداد حيثما كان ذلك ممكنًا.

أنشئ كائنًا من ControlNetUnionModel انطلاقًا من UNet2DConditionModel.

set_attention_slice

< >

( slice_size: str | int | list[int] )

المعاملات

  • slice_size (str أو int أو list(int)، اختياري، القيمة الافتراضية "auto") — عندما تكون القيمة "auto"، يتم تقسيم مدخلات رؤوس الانتباه إلى نصفين، بحيث يُحسب الانتباه في خطوتين. أما إذا كانت "max"، فيتم توفير أقصى قدر من الذاكرة من خلال تشغيل شريحة واحدة في كل مرة. وإذا تم تقديم رقم، يتم استخدام عدد من الشرائح يساوي attention_head_dim // slice_size. في هذه الحالة، يجب أن يكون attention_head_dim مضاعفًا لـ slice_size.

تفعيل حساب الانتباه المقطّع.

عند تمكين هذا الخيار، يقسم وحدة الانتباه (attention module) المصفوفة المدخلة إلى شرائح لحساب الانتباه على عدة خطوات. وهذا مفيد لتوفير بعض الذاكرة مقابل انخفاض طفيف في السرعة.

set_default_attn_processor

< >

( )

يعطّل معالجات الانتباه المخصصة ويضبط تطبيق الانتباه الافتراضي.

Update on GitHub