Buckets:
| # ControlNet مع Stable Diffusion 3 | |
| StableDiffusion3ControlNetPipeline هو تطبيق لـ ControlNet في Stable Diffusion 3. | |
| تم تقديم ControlNet في [Adding Conditional Control to Text-to-Image Diffusion Models](https://huggingface.co/papers/2302.05543) بواسطة Lvmin Zhang وAnyi Rao وManeesh Agrawala. | |
| باستخدام نموذج ControlNet، يمكنك تقديم صورة تحكم إضافية لتكييف عملية توليد Stable Diffusion والتحكم فيها. على سبيل المثال، إذا قدمت خريطة عمق، فإن نموذج ControlNet يولّد صورة تحافظ على المعلومات المكانية المستمدة من خريطة العمق. وهي طريقة أكثر مرونة ودقة للتحكم في عملية توليد الصور. | |
| ملخص الورقة البحثية هو: | |
| *نقدّم ControlNet، وهو معمارية شبكة عصبية لإضافة ضوابط شرطيّة مكانية إلى نماذج الانتشار النصّية-إلى-صورة الكبيرة المُدرَّبة مسبقًا. تقوم ControlNet بقفل نماذج الانتشار الكبيرة الجاهزة للإنتاج، وتعيد استخدام طبقات الترميز العميقة والقوية المُدرَّبة مسبقًا على مليارات الصور كهيكل أساسي قوي لتعلّم مجموعة متنوعة من الضوابط الشرطيّة. يتم ربط المعمارية العصبية بـ "التحويلات الصفرية" (طبقات تحويل مُهيّأة إلى الصفر) التي تُنمّي المعاملات تدريجيًا من الصفر وتضمن عدم تأثير أي ضوضاء ضارة على الضبط الدقيق. اختبرنا ضوابط شرطيّة متنوعة، مثل الحواف، والعمق، والتجزئة، ووضع الجسم البشري، وغيرها، باستخدام Stable Diffusion، باستخدام شرط واحد أو عدة شروط، مع وجود موجهات نصية أو بدونها. نُظهر أنّ تدريب نماذج ControlNet متين مع مجموعات البيانات الصغيرة (<50k) والكبيرة (>1m). تُظهر النتائج الواسعة أنّ ControlNet قد يسهّل تطبيقات أوسع للتحكم في نماذج انتشار الصور.* | |
| تم تنفيذ كود controlnet هذا بشكل رئيسي بواسطة [فريق InstantX](https://huggingface.co/InstantX). أما الكود المتعلق بـ inpainting فقد طوّره [فريق Alimama الإبداعي](https://huggingface.co/alimama-creative). يمكنك العثور على نقاط التفتيش المُدرَّبة مسبقًا لـ SD3-ControlNet في الجدول أدناه: | |
| | نوع ControlNet | المطوّر | رابط | | |
| | -------- | ---------- | ---- | | |
| | Canny | [فريق InstantX](https://huggingface.co/InstantX) | [رابط](https://huggingface.co/InstantX/SD3-Controlnet-Canny) | | |
| | العمق | [فريق InstantX](https://huggingface.co/InstantX) | [رابط](https://huggingface.co/InstantX/SD3-Controlnet-Depth) | | |
| | وضعية | [فريق InstantX](https://huggingface.co/InstantX) | [رابط](https://huggingface.co/InstantX/SD3-Controlnet-Pose) | | |
| | بلاطة | [فريق InstantX](https://huggingface.co/InstantX) | [رابط](https://huggingface.co/InstantX/SD3-Controlnet-Tile) | | |
| | الترميم | [فريق AlimamaCreative](https://huggingface.co/alimama-creative) | [رابط](https://huggingface.co/alimama-creative/SD3-Controlnet-Inpainting) | | |
| > [!TIP] | |
| > تأكد من الاطلاع على [دليل المجدولين](../../using-diffusers/schedulers) لمعرفة كيفية استكشاف التوازن بين سرعة المجدول وجودة النتائج، واطّلع على قسم [إعادة استخدام المكونات عبر خطوط الأنابيب](../../using-diffusers/loading#reusing-models-in-multiple-pipelines) لمعرفة كيفية تحميل نفس المكونات بكفاءة في خطوط أنابيب متعددة. | |
| ## StableDiffusion3ControlNetPipeline[[diffusers.StableDiffusion3ControlNetPipeline]] | |
| #### diffusers.StableDiffusion3ControlNetPipeline[[diffusers.StableDiffusion3ControlNetPipeline]] | |
| ```python | |
| diffusers.StableDiffusion3ControlNetPipeline(transformer: SD3Transformer2DModel, scheduler: FlowMatchEulerDiscreteScheduler, vae: AutoencoderKL, text_encoder: CLIPTextModelWithProjection, tokenizer: CLIPTokenizer, text_encoder_2: CLIPTextModelWithProjection, tokenizer_2: CLIPTokenizer, text_encoder_3: T5EncoderModel, tokenizer_3: T5Tokenizer, controlnet: diffusers.models.controlnets.controlnet_sd3.SD3ControlNetModel | list[diffusers.models.controlnets.controlnet_sd3.SD3ControlNetModel] | tuple[diffusers.models.controlnets.controlnet_sd3.SD3ControlNetModel] | diffusers.models.controlnets.controlnet_sd3.SD3MultiControlNetModel, image_encoder: transformers.models.siglip.modeling_siglip.SiglipVisionModel | None = None, feature_extractor: transformers.models.siglip.image_processing_pil_siglip.SiglipImageProcessorPil | None = None) | |
| ``` | |
| [المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/controlnet_sd3/pipeline_stable_diffusion_3_controlnet.py#L143) | |
| **المعاملات:** | |
| transformer ([SD3Transformer2DModel](/docs/diffusers/main/ar/api/models/sd3_transformer2d#diffusers.SD3Transformer2DModel)) : معمارية Transformer الشرطية (MMDiT) لإزالة الضوضاء من الكامنات المُرمّزة للصورة. | |
| scheduler ([FlowMatchEulerDiscreteScheduler](/docs/diffusers/main/ar/api/schedulers/flow_match_euler_discrete#diffusers.FlowMatchEulerDiscreteScheduler)) : مُجدوِل يُستخدم بالاقتران مع `transformer` لإزالة الضوضاء من كامنات الصورة المُرمَّزة. | |
| vae ([AutoencoderKL](/docs/diffusers/main/ar/api/models/autoencoderkl#diffusers.AutoencoderKL)) : نموذج الترميز التحويلي التبايني (VAE) لتشفير وفك تشفير الصور إلى تمثيلات كامنة ومنها. | |
| text_encoder (`CLIPTextModelWithProjection`) : [CLIP](https://huggingface.co/docs/transformers/model_doc/clip#transformers.CLIPTextModelWithProjection)، وتحديداً النسخة [clip-vit-large-patch14](https://huggingface.co/openai/clip-vit-large-patch14)، مع إضافة طبقة إسقاط إضافية يتم تهيئتها بمصفوفة قطرية بعدد أبعاد `hidden_size`. | |
| text_encoder_2 (`CLIPTextModelWithProjection`) : [CLIP](https://huggingface.co/docs/transformers/model_doc/clip#transformers.CLIPTextModelWithProjection)، وتحديداً النسخة [laion/CLIP-ViT-bigG-14-laion2B-39B-b160k](https://huggingface.co/laion/CLIP-ViT-bigG-14-laion2B-39B-b160k). | |
| text_encoder_3 (`T5EncoderModel`) : مُشفِّر نص ثابت. يستخدم Stable Diffusion 3 [T5](https://huggingface.co/docs/transformers/model_doc/t5#transformers.T5EncoderModel)، وتحديداً النسخة [t5-v1_1-xxl](https://huggingface.co/google/t5-v1_1-xxl). | |
| tokenizer (`CLIPTokenizer`) : مُقسِّم من الفئة [CLIPTokenizer](https://huggingface.co/docs/transformers/v4.21.0/en/model_doc/clip#transformers.CLIPTokenizer). | |
| tokenizer_2 (`CLIPTokenizer`) : مُقسِّم ثانٍ من الفئة [CLIPTokenizer](https://huggingface.co/docs/transformers/v4.21.0/en/model_doc/clip#transformers.CLIPTokenizer). | |
| tokenizer_3 (`T5TokenizerFast`) : مُجزِّئ من الفئة [T5Tokenizer](https://huggingface.co/docs/transformers/model_doc/t5#transformers.T5Tokenizer). | |
| controlnet ([SD3ControlNetModel](/docs/diffusers/main/ar/api/models/controlnet_sd3#diffusers.SD3ControlNetModel) أو `list[SD3ControlNetModel]` أو `SD3MultiControlNetModel`) : يوفر شروطًا إضافية لـ `unet` أثناء عملية إزالة الضوضاء. إذا قمت بتعيين عدة ControlNets كقائمة، فإن المخرجات من كل ControlNet تُجمع معًا لإنشاء شرط إضافي واحد موحّد. | |
| image_encoder (`SiglipVisionModel`، *اختياري*) : نموذج رؤية مُدرَّب مسبقًا لـ IP Adapter. | |
| feature_extractor (`SiglipImageProcessor`، *اختياري*) : معالج الصور الخاص بـ IP Adapter. | |
| #### __call__[[diffusers.StableDiffusion3ControlNetPipeline.__call__]] | |
| ```python | |
| __call__(prompt: str | list[str] = None, prompt_2: str | list[str] | None = None, prompt_3: str | list[str] | None = None, height: int | None = None, width: int | None = None, num_inference_steps: int = 28, sigmas: list[float] | None = None, guidance_scale: float = 7.0, control_guidance_start: float | list[float] = 0.0, control_guidance_end: float | list[float] = 1.0, control_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, controlnet_conditioning_scale: float | list[float] = 1.0, controlnet_pooled_projections: typing.Optional[torch.FloatTensor] = None, negative_prompt: str | list[str] | None = None, negative_prompt_2: str | list[str] | None = None, negative_prompt_3: str | list[str] | None = None, num_images_per_prompt: int | None = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.FloatTensor] = None, prompt_embeds: typing.Optional[torch.FloatTensor] = None, negative_prompt_embeds: typing.Optional[torch.FloatTensor] = None, pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, ip_adapter_image_embeds: typing.Optional[torch.Tensor] = None, output_type: str | None = 'pil', return_dict: bool = True, joint_attention_kwargs: dict[str, typing.Any] | None = None, clip_skip: int | None = None, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], max_sequence_length: int = 256) | |
| ``` | |
| [المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/controlnet_sd3/pipeline_stable_diffusion_3_controlnet.py#L819) | |
| **المعاملات:** | |
| prompt (`str` أو `list[str]`، *اختياري*) : الأمر أو الأوامر التي تُوجّه توليد الصورة. إذا لم يُعرَّف، يجب تمرير `prompt_embeds` بدلاً من ذلك. | |
| prompt_2 (`str` أو `list[str]`، *اختياري*) : الموجه أو الموجهات المرسل إلى `tokenizer_2` و`text_encoder_2`. إذا لم يُعرَّف، فسيتم استخدام `prompt` بدلاً منه | |
| prompt_3 (`str` أو `list[str]`، *اختياري*) : الموجه أو الموجهات المرسل إلى `tokenizer_3` و`text_encoder_3`. إذا لم يُعرَّف، فسيتم استخدام `prompt` بدلاً منه | |
| height (`int`، *اختياري*، الافتراضي هو self.unet.config.sample_size * self.vae_scale_factor) : ارتفاع الصورة المولّدة بالبكسلات. يتم ضبطه على 1024 افتراضيًا للحصول على أفضل النتائج. | |
| width (`int`، *اختياري*، القيمة الافتراضية هي self.unet.config.sample_size * self.vae_scale_factor) : عرض الصورة المولدة بالبكسلات. يتم ضبطه على 1024 افتراضيًا للحصول على أفضل النتائج. | |
| num_inference_steps (`int`، *اختياري*، القيمة الافتراضية 50) : عدد خطوات إزالة الضوضاء. تؤدي زيادة عدد خطوات إزالة الضوضاء عادةً إلى صورة ذات جودة أعلى على حساب بطء الاستدلال. | |
| sigmas (`list[float]`، *اختياري*) : قيم `sigmas` مخصصة لاستخدامها في عملية إزالة الضوضاء مع المجدولين الذين يدعمون معامل `sigmas` في طريقة `set_timesteps` الخاصة بهم. إذا لم تُعرَّف، فسيتم استخدام السلوك الافتراضي عند تمرير `num_inference_steps`. | |
| guidance_scale (`float`، *اختياري*، القيمة الافتراضية 5.0) : مقياس التوجيه كما هو مُعرَّف في [Classifier-Free Diffusion Guidance](https://huggingface.co/papers/2207.12598). يُعرَّف `guidance_scale` على أنه `w` من المعادلة 2. في [Imagen Paper](https://huggingface.co/papers/2205.11487). يتم تفعيل مقياس التوجيه عن طريق تعيين `guidance_scale > 1`. يشجع مقياس التوجيه الأعلى على توليد صور مرتبطة ارتباطًا وثيقًا بنص `prompt`، وعادةً على حساب انخفاض جودة الصورة. | |
| control_guidance_start (`float` أو `list[float]`، *اختياري*، القيمة الافتراضية 0.0) : النسبة المئوية من إجمالي الخطوات التي يبدأ عندها ControlNet في التطبيق. | |
| control_guidance_end (`float` أو `list[float]`، *اختياري*، القيمة الافتراضية 1.0) : النسبة المئوية من إجمالي الخطوات التي يتوقف عندها ControlNet عن التطبيق. | |
| control_image (`torch.Tensor`، `PIL.Image.Image`، `np.ndarray`، `list[torch.Tensor]`، `list[PIL.Image.Image]`، `list[np.ndarray]`، : `list[list[torch.Tensor]]`، `list[list[np.ndarray]]` أو `list[list[PIL.Image.Image]]`): شرط الإدخال الخاص بـ ControlNet لتقديم التوجيه إلى `unet` للتوليد. إذا تم تحديد النوع على أنه `torch.Tensor`، فإنه يُمرَّر إلى ControlNet كما هو. يمكن أيضًا قبول `PIL.Image.Image` كصورة. الأبعاد الافتراضية للصورة الناتجة هي أبعاد `image`. إذا تم تمرير الارتفاع و/أو العرض، يتم تغيير حجم `image` وفقًا لذلك. إذا تم تحديد عدة وحدات ControlNet في `init`، يجب تمرير الصور كقائمة بحيث يمكن تجميع كل عنصر من عناصر القائمة بشكل صحيح للإدخال إلى وحدة ControlNet واحدة. | |
| controlnet_conditioning_scale (`float` أو `list[float]`، *اختياري*، القيمة الافتراضية 1.0) : تُضرب مخرجات ControlNet في `controlnet_conditioning_scale` قبل إضافتها إلى الباقي في `unet` الأصلية. إذا تم تحديد عدة ControlNets في `init`، يمكنك تعيين المقياس المقابل كقائمة. | |
| controlnet_pooled_projections (`torch.FloatTensor` من الشكل `(batch_size, projection_dim)`) : تمثيلات مُسقطَة من تمثيلات شروط الإدخال الخاصة بـ controlnet. | |
| negative_prompt (`str` أو `list[str]`، *اختياري*) : الموجه أو الموجهات التي لا ينبغي توجيه توليد الصورة بها. إذا لم يُعرَّف، يجب تمرير `negative_prompt_embeds` بدلاً من ذلك. يتم تجاهله عند عدم استخدام التوجيه (أي يتم تجاهله إذا كان `guidance_scale` أقل من `1`). | |
| negative_prompt_2 (`str` أو `list[str]`، *اختياري*) : الموجه أو الموجهات التي لا ينبغي توجيه توليد الصورة إليها، والتي سيتم إرسالها إلى `tokenizer_2` و`text_encoder_2`. إذا لم يُعرَّف، يُستخدم `negative_prompt` بدلاً منه | |
| negative_prompt_3 (`str` أو `list[str]`، *اختياري*) : الموجه أو الموجهات التي لا ينبغي توجيه توليد الصورة إليها، والتي سيتم إرسالها إلى `tokenizer_3` و`text_encoder_3`. إذا لم يُعرَّف، يُستخدم `negative_prompt` بدلاً منه | |
| num_images_per_prompt (`int`، *اختياري*، القيمة الافتراضية 1) : عدد الصور التي سيتم توليدها لكل موجه. | |
| generator (`torch.Generator` أو `list[torch.Generator]`، *اختياري*) : مولّد واحد أو قائمة من [مولّدات torch](https://pytorch.org/docs/stable/generated/torch.Generator.html) لجعل التوليد حتميًا. | |
| latents (`torch.FloatTensor`، *اختياري*) : كامنات ضجيج مُولّدة مسبقًا، مُستخرجة من توزيع غاوسي، تُستخدم كمدخلات لتوليد الصور. يمكن استخدامها لتعديل نفس التوليد باستخدام أوامر مختلفة. إذا لم تُقدَّم، فسيتم إنشاء كامنات من خلال الاستخراج باستخدام `generator` العشوائي المُقدَّم. | |
| prompt_embeds (`torch.FloatTensor`، *اختياري*) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، *مثلًا* وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد تمثيلات النص من معامل الإدخال `prompt`. | |
| negative_prompt_embeds (`torch.FloatTensor`، *اختياري*) : تمثيلات نصية سالبة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، *مثلًا* وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد negative_prompt_embeds من معامل الإدخال `negative_prompt`. | |
| pooled_prompt_embeds (`torch.FloatTensor`، *اختياري*) : تمثيلات نصية مجمّعة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، *مثلًا* وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد التمثيلات النصية المجمّعة من معامل الإدخال `prompt`. | |
| negative_pooled_prompt_embeds (`torch.FloatTensor`، *اختياري*) : تمثيلات نصية مجمعة سالبة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، *مثلًا* وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد pooled negative_prompt_embeds من معامل الإدخال `negative_prompt`. | |
| ip_adapter_image (`PipelineImageInput`، *اختياري*) : إدخال صورة اختياري للعمل مع IP Adapters. | |
| ip_adapter_image_embeds (`torch.Tensor`، *اختياري*) : تمثيلات صور مُولّدة مسبقًا لـ IP-Adapter. يجب أن يكون متجهًا (tensor) بشكل `(batch_size, num_images, emb_dim)`. يجب أن يحتوي على تمثيل الصورة السلبي إذا تم ضبط `do_classifier_free_guidance` على `True`. إذا لم يُقدَّم، تُحسب التمثيلات من معامل الإدخال `ip_adapter_image`. | |
| output_type (`str`، *اختياري*، القيمة الافتراضية `"pil"`) : صيغة الصورة الناتجة عن عملية التوليد. اختر بين [PIL](https://pillow.readthedocs.io/en/stable/): `PIL.Image.Image` أو `np.array`. | |
| return_dict (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب إرجاع `~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput` بدلاً من tuple عادي. | |
| joint_attention_kwargs (`dict`، *اختياري*) : قاموس kwargs يُمرَّر إلى `AttentionProcessor` إذا تم تحديده، كما هو معرَّف تحت `self.processor` في [diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py). | |
| clip_skip (`int`, *اختياري*) : عدد الطبقات التي سيتم تجاوزها من CLIP أثناء حساب تمثيلات الموجه. القيمة 1 تعني أنه سيتم استخدام مخرجات الطبقة قبل الأخيرة لحساب تمثيلات الموجه. | |
| callback_on_step_end (`Callable`، *اختياري*) : دالة تُستدعى في نهاية كل خطوة إزالة ضوضاء أثناء الاستدلال. تُستدعى الدالة بالحجج التالية: `callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)`. سيتضمن `callback_kwargs` قائمة بجميع المصفوفات كما حددتها `callback_on_step_end_tensor_inputs`. | |
| callback_on_step_end_tensor_inputs (`list`، *اختياري*) : قائمة مدخلات المصفوفات (tensors) لدالة `callback_on_step_end`. سيتم تمرير المصفوفات المحددة في القائمة كحجة `callback_kwargs`. لن تتمكن من تضمين سوى المتغيرات المدرجة في خاصية `._callback_tensor_inputs` لفئة خط الأنابيب (pipeline) الخاص بك. | |
| max_sequence_length (`int` الافتراضي 256) : أقصى طول تسلسل يُستخدم مع `prompt`. | |
| **يعيد:** `~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput` أو `tuple` | |
| `~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput` إذا كان `return_dict` هو True، وإلا `tuple`. عند إرجاع tuple، يكون العنصر الأول قائمة تحتوي على الصور المولّدة. | |
| الدالة التي تُستدعى عند استدعاء خط الأنابيب للتوليد. | |
| أمثلة: | |
| ```py | |
| >>> import torch | |
| >>> from diffusers import StableDiffusion3ControlNetPipeline | |
| >>> from diffusers.models import SD3ControlNetModel, SD3MultiControlNetModel | |
| >>> from diffusers.utils import load_image | |
| >>> controlnet = SD3ControlNetModel.from_pretrained("InstantX/SD3-Controlnet-Canny", torch_dtype=torch.float16) | |
| >>> pipe = StableDiffusion3ControlNetPipeline.from_pretrained( | |
| ... "stabilityai/stable-diffusion-3-medium-diffusers", controlnet=controlnet, torch_dtype=torch.float16 | |
| ... ) | |
| >>> pipe.to("cuda") | |
| >>> control_image = load_image( | |
| ... "https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/sd_controlnet/bird_canny.png" | |
| ... ) | |
| >>> prompt = "A bird in space" | |
| >>> image = pipe( | |
| ... prompt, control_image=control_image, height=1024, width=768, controlnet_conditioning_scale=0.7 | |
| ... ).images[0] | |
| >>> image.save("sd3.png") | |
| ``` | |
| #### encode_image[[diffusers.StableDiffusion3ControlNetPipeline.encode_image]] | |
| ```python | |
| encode_image(image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]], device: device) | |
| ``` | |
| [المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/controlnet_sd3/pipeline_stable_diffusion_3_controlnet.py#L742) | |
| **المعاملات:** | |
| image (`PipelineImageInput`) : صورة الإدخال المراد ترميزها. | |
| device : (`torch.device`): جهاز Torch. | |
| **يعيد:** `torch.Tensor` | |
| تمثيل ميزات الصورة المُرمّزة. | |
| يقوم بتشفير الصورة المعطاة إلى تمثيل ميزات باستخدام مشفر صور مُدرَّب مسبقًا. | |
| #### encode_prompt[[diffusers.StableDiffusion3ControlNetPipeline.encode_prompt]] | |
| ```python | |
| encode_prompt(prompt: str | list[str], prompt_2: str | list[str], prompt_3: str | list[str], device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, do_classifier_free_guidance: bool = True, negative_prompt: str | list[str] | None = None, negative_prompt_2: str | list[str] | None = None, negative_prompt_3: str | list[str] | None = None, prompt_embeds: typing.Optional[torch.FloatTensor] = None, negative_prompt_embeds: typing.Optional[torch.FloatTensor] = None, pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, clip_skip: int | None = None, max_sequence_length: int = 256, lora_scale: float | None = None) | |
| ``` | |
| [المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/controlnet_sd3/pipeline_stable_diffusion_3_controlnet.py#L365) | |
| **المعاملات:** | |
| prompt (`str` أو `list[str]`، *اختياري*) : النص الذي سيتم ترميزه | |
| prompt_2 (`str` أو `list[str]`، *اختياري*) : الموجه أو الموجهات المرسل إلى `tokenizer_2` و`text_encoder_2`. إذا لم يُعرَّف، يُستخدم `prompt` في جميع مُشفِّرات النص | |
| prompt_3 (`str` أو `list[str]`، *اختياري*) : الموجه أو الموجهات المرسل إلى `tokenizer_3` و`text_encoder_3`. إذا لم يُعرَّف، يُستخدم `prompt` في جميع مُشفِّرات النص | |
| device : (`torch.device`): جهاز torch | |
| num_images_per_prompt (`int`) : عدد الصور التي يجب توليدها لكل موجه | |
| do_classifier_free_guidance (`bool`) : ما إذا كان سيتم استخدام التوجيه الحر للتصنيف أم لا | |
| negative_prompt (`str` أو `list[str]`، *اختياري*) : الموجه أو الموجهات التي لا ينبغي توجيه توليد الصورة بها. إذا لم يُعرَّف، يجب تمرير `negative_prompt_embeds` بدلاً من ذلك. يتم تجاهله عند عدم استخدام التوجيه (أي يتم تجاهله إذا كان `guidance_scale` أقل من `1`). | |
| negative_prompt_2 (`str` أو `list[str]`، *اختياري*) : الموجه أو الموجهات التي لا ينبغي توجيه توليد الصورة إليها، والتي سيتم إرسالها إلى `tokenizer_2` و`text_encoder_2`. إذا لم يُعرَّف، يُستخدم `negative_prompt` في جميع مشفّرات النص. | |
| negative_prompt_3 (`str` أو `list[str]`، *اختياري*) : الموجه أو الموجهات التي لا ينبغي توجيه توليد الصورة إليها، والتي سيتم إرسالها إلى `tokenizer_3` و`text_encoder_3`. إذا لم يُعرَّف، يُستخدم `negative_prompt` في جميع مُشفِّرات النص. | |
| prompt_embeds (`torch.FloatTensor`، *اختياري*) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، *مثلًا* وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد تمثيلات النص من معامل الإدخال `prompt`. | |
| negative_prompt_embeds (`torch.FloatTensor`، *اختياري*) : تمثيلات نصية سالبة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، *مثلًا* وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد negative_prompt_embeds من معامل الإدخال `negative_prompt`. | |
| pooled_prompt_embeds (`torch.FloatTensor`، *اختياري*) : تمثيلات نصية مجمّعة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، *مثلًا* وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد التمثيلات النصية المجمّعة من معامل الإدخال `prompt`. | |
| negative_pooled_prompt_embeds (`torch.FloatTensor`، *اختياري*) : تمثيلات نصية مجمعة سالبة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، *مثلًا* وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد pooled negative_prompt_embeds من معامل الإدخال `negative_prompt`. | |
| clip_skip (`int`, *اختياري*) : عدد الطبقات التي سيتم تجاوزها من CLIP أثناء حساب تمثيلات الموجه. القيمة 1 تعني أنه سيتم استخدام مخرجات الطبقة قبل الأخيرة لحساب تمثيلات الموجه. | |
| lora_scale (`float`، *اختياري*) : مقياس lora سيُطبَّق على جميع طبقات LoRA في مُشفِّر النص إذا كانت طبقات LoRA محمَّلة. | |
| #### prepare_ip_adapter_image_embeds[[diffusers.StableDiffusion3ControlNetPipeline.prepare_ip_adapter_image_embeds]] | |
| ```python | |
| prepare_ip_adapter_image_embeds(ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, ip_adapter_image_embeds: typing.Optional[torch.Tensor] = None, device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, do_classifier_free_guidance: bool = True) | |
| ``` | |
| [المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/controlnet_sd3/pipeline_stable_diffusion_3_controlnet.py#L762) | |
| **المعاملات:** | |
| ip_adapter_image (`PipelineImageInput`، *اختياري*) : الصورة المدخلة لاستخراج الميزات من أجل IP-Adapter. | |
| ip_adapter_image_embeds (`torch.Tensor`، *اختياري*) : تمثيلات الصور المحسوبة مسبقًا. | |
| device : (`torch.device`, *اختياري*): جهاز Torch. | |
| num_images_per_prompt (`int`، القيمة الافتراضية 1) : عدد الصور التي يجب توليدها لكل موجه. | |
| do_classifier_free_guidance (`bool`، القيمة الافتراضية True) : ما إذا كان سيتم استخدام classifier free guidance أم لا. | |
| يُعدّ تمثيلات الصور للاستخدام في IP-Adapter. | |
| يجب تمرير `ip_adapter_image` أو `ip_adapter_image_embeds`. | |
| ## StableDiffusion3ControlNetInpaintingPipeline[[diffusers.StableDiffusion3ControlNetInpaintingPipeline]] | |
| #### diffusers.StableDiffusion3ControlNetInpaintingPipeline[[diffusers.StableDiffusion3ControlNetInpaintingPipeline]] | |
| ```python | |
| diffusers.StableDiffusion3ControlNetInpaintingPipeline(transformer: SD3Transformer2DModel, scheduler: FlowMatchEulerDiscreteScheduler, vae: AutoencoderKL, text_encoder: CLIPTextModelWithProjection, tokenizer: CLIPTokenizer, text_encoder_2: CLIPTextModelWithProjection, tokenizer_2: CLIPTokenizer, text_encoder_3: T5EncoderModel, tokenizer_3: T5Tokenizer, controlnet: diffusers.models.controlnets.controlnet_sd3.SD3ControlNetModel | list[diffusers.models.controlnets.controlnet_sd3.SD3ControlNetModel] | tuple[diffusers.models.controlnets.controlnet_sd3.SD3ControlNetModel] | diffusers.models.controlnets.controlnet_sd3.SD3MultiControlNetModel, image_encoder: SiglipModel = None, feature_extractor: transformers.models.siglip.image_processing_pil_siglip.SiglipImageProcessorPil | None = None) | |
| ``` | |
| [المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/controlnet_sd3/pipeline_stable_diffusion_3_controlnet_inpainting.py#L166) | |
| **المعاملات:** | |
| transformer ([SD3Transformer2DModel](/docs/diffusers/main/ar/api/models/sd3_transformer2d#diffusers.SD3Transformer2DModel)) : معمارية Transformer الشرطية (MMDiT) لإزالة الضوضاء من الكامنات المُرمّزة للصورة. | |
| scheduler ([FlowMatchEulerDiscreteScheduler](/docs/diffusers/main/ar/api/schedulers/flow_match_euler_discrete#diffusers.FlowMatchEulerDiscreteScheduler)) : مُجدوِل يُستخدم بالاقتران مع `transformer` لإزالة الضوضاء من كامنات الصورة المُرمَّزة. | |
| vae ([AutoencoderKL](/docs/diffusers/main/ar/api/models/autoencoderkl#diffusers.AutoencoderKL)) : نموذج الترميز التحويلي التبايني (VAE) لتشفير وفك تشفير الصور إلى تمثيلات كامنة ومنها. | |
| text_encoder (`CLIPTextModelWithProjection`) : [CLIP](https://huggingface.co/docs/transformers/model_doc/clip#transformers.CLIPTextModelWithProjection)، وتحديداً النسخة [clip-vit-large-patch14](https://huggingface.co/openai/clip-vit-large-patch14)، مع إضافة طبقة إسقاط إضافية يتم تهيئتها بمصفوفة قطرية بعدد أبعاد `hidden_size`. | |
| text_encoder_2 (`CLIPTextModelWithProjection`) : [CLIP](https://huggingface.co/docs/transformers/model_doc/clip#transformers.CLIPTextModelWithProjection)، وتحديداً النسخة [laion/CLIP-ViT-bigG-14-laion2B-39B-b160k](https://huggingface.co/laion/CLIP-ViT-bigG-14-laion2B-39B-b160k). | |
| text_encoder_3 (`T5EncoderModel`) : مُشفِّر نص ثابت. يستخدم Stable Diffusion 3 [T5](https://huggingface.co/docs/transformers/model_doc/t5#transformers.T5EncoderModel)، وتحديداً النسخة [t5-v1_1-xxl](https://huggingface.co/google/t5-v1_1-xxl). | |
| tokenizer (`CLIPTokenizer`) : مُقسِّم من الفئة [CLIPTokenizer](https://huggingface.co/docs/transformers/v4.21.0/en/model_doc/clip#transformers.CLIPTokenizer). | |
| tokenizer_2 (`CLIPTokenizer`) : مُقسِّم ثانٍ من الفئة [CLIPTokenizer](https://huggingface.co/docs/transformers/v4.21.0/en/model_doc/clip#transformers.CLIPTokenizer). | |
| tokenizer_3 (`T5TokenizerFast`) : مُجزِّئ من الفئة [T5Tokenizer](https://huggingface.co/docs/transformers/model_doc/t5#transformers.T5Tokenizer). | |
| controlnet ([SD3ControlNetModel](/docs/diffusers/main/ar/api/models/controlnet_sd3#diffusers.SD3ControlNetModel) أو `list[SD3ControlNetModel]` أو `SD3MultiControlNetModel`) : يوفر شروطًا إضافية لـ `transformer` أثناء عملية إزالة الضوضاء. إذا قمت بتعيين عدة ControlNets كقائمة، فإن المخرجات من كل ControlNet تُجمع معًا لإنشاء شرط إضافي واحد موحّد. | |
| image_encoder (`PreTrainedModel`، *اختياري*) : نموذج رؤية مُدرَّب مسبقًا لـ IP Adapter. | |
| feature_extractor (`BaseImageProcessor`، *اختياري*) : معالج الصور الخاص بـ IP Adapter. | |
| #### __call__[[diffusers.StableDiffusion3ControlNetInpaintingPipeline.__call__]] | |
| ```python | |
| __call__(prompt: str | list[str] = None, prompt_2: str | list[str] | None = None, prompt_3: str | list[str] | None = None, height: int | None = None, width: int | None = None, num_inference_steps: int = 28, sigmas: list[float] | None = None, guidance_scale: float = 7.0, control_guidance_start: float | list[float] = 0.0, control_guidance_end: float | list[float] = 1.0, control_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, control_mask: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, controlnet_conditioning_scale: float | list[float] = 1.0, controlnet_pooled_projections: typing.Optional[torch.FloatTensor] = None, negative_prompt: str | list[str] | None = None, negative_prompt_2: str | list[str] | None = None, negative_prompt_3: str | list[str] | None = None, num_images_per_prompt: int | None = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.FloatTensor] = None, prompt_embeds: typing.Optional[torch.FloatTensor] = None, negative_prompt_embeds: typing.Optional[torch.FloatTensor] = None, pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, ip_adapter_image_embeds: typing.Optional[torch.Tensor] = None, output_type: str | None = 'pil', return_dict: bool = True, joint_attention_kwargs: dict[str, typing.Any] | None = None, clip_skip: int | None = None, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], max_sequence_length: int = 256) | |
| ``` | |
| [المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/controlnet_sd3/pipeline_stable_diffusion_3_controlnet_inpainting.py#L986) | |
| **المعاملات:** | |
| prompt (`str` أو `list[str]`، *اختياري*) : الأمر أو الأوامر التي تُوجّه توليد الصورة. إذا لم يُعرَّف، يجب تمرير `prompt_embeds` بدلاً من ذلك. | |
| prompt_2 (`str` أو `list[str]`، *اختياري*) : الموجه أو الموجهات المرسل إلى `tokenizer_2` و`text_encoder_2`. إذا لم يُعرَّف، فسيتم استخدام `prompt` بدلاً منه | |
| prompt_3 (`str` أو `list[str]`، *اختياري*) : الموجه أو الموجهات المرسل إلى `tokenizer_3` و`text_encoder_3`. إذا لم يُعرَّف، فسيتم استخدام `prompt` بدلاً منه | |
| height (`int`، *اختياري*، الافتراضي هو self.unet.config.sample_size * self.vae_scale_factor) : ارتفاع الصورة المولّدة بالبكسلات. يتم ضبطه على 1024 افتراضيًا للحصول على أفضل النتائج. | |
| width (`int`، *اختياري*، القيمة الافتراضية هي self.unet.config.sample_size * self.vae_scale_factor) : عرض الصورة المولدة بالبكسلات. يتم ضبطه على 1024 افتراضيًا للحصول على أفضل النتائج. | |
| num_inference_steps (`int`، *اختياري*، القيمة الافتراضية 50) : عدد خطوات إزالة الضوضاء. تؤدي زيادة عدد خطوات إزالة الضوضاء عادةً إلى صورة ذات جودة أعلى على حساب بطء الاستدلال. | |
| sigmas (`list[float]`، *اختياري*) : قيم `sigmas` مخصصة لاستخدامها في عملية إزالة الضوضاء مع المجدولين الذين يدعمون معامل `sigmas` في طريقة `set_timesteps` الخاصة بهم. إذا لم تُعرَّف، فسيتم استخدام السلوك الافتراضي عند تمرير `num_inference_steps`. | |
| guidance_scale (`float`، *اختياري*، القيمة الافتراضية 5.0) : مقياس التوجيه كما هو مُعرَّف في [Classifier-Free Diffusion Guidance](https://huggingface.co/papers/2207.12598). يُعرَّف `guidance_scale` على أنه `w` من المعادلة 2. في [Imagen Paper](https://huggingface.co/papers/2205.11487). يتم تفعيل مقياس التوجيه عن طريق تعيين `guidance_scale > 1`. يشجع مقياس التوجيه الأعلى على توليد صور مرتبطة ارتباطًا وثيقًا بنص `prompt`، وعادةً على حساب انخفاض جودة الصورة. | |
| control_guidance_start (`float` أو `list[float]`، *اختياري*، القيمة الافتراضية 0.0) : النسبة المئوية من إجمالي الخطوات التي يبدأ عندها ControlNet في التطبيق. | |
| control_guidance_end (`float` أو `list[float]`، *اختياري*، القيمة الافتراضية 1.0) : النسبة المئوية من إجمالي الخطوات التي يتوقف عندها ControlNet عن التطبيق. | |
| control_image (`torch.Tensor`، `PIL.Image.Image`، `np.ndarray`، `list[torch.Tensor]`، `list[PIL.Image.Image]`، `list[np.ndarray]`) : `Image` أو مصفوفة numpy أو tensor يمثل دفعة من الصور التي سيتم إجراء inpaint عليها (أي الأجزاء التي سيتم إخفاؤها باستخدام `control_mask` وإعادة رسمها وفقًا لـ `prompt`). بالنسبة لمصفوفة numpy وtensor الخاص بـ pytorch، فإن نطاق القيم المتوقع يتراوح بين `[0, 1]`. إذا كان tensor أو قائمة من tensors، فيجب أن يكون الشكل المتوقع `(B, C, H, W)`. أما إذا كانت مصفوفة numpy أو قائمة من المصفوفات، فيجب أن يكون الشكل المتوقع `(B, H, W, C)` أو `(H, W, C)`. | |
| control_mask (`torch.Tensor`، `PIL.Image.Image`، `np.ndarray`، `list[torch.Tensor]`، `list[PIL.Image.Image]`، `list[np.ndarray]`) : `Image`، مصفوفة numpy أو tensor تمثل دفعة من الصور لتطبيق قناع على `image`. يتم إعادة رسم البكسلات البيضاء في القناع بينما تُحفظ البكسلات السوداء. إذا كان `mask_image` صورة PIL، يتم تحويلها إلى قناة واحدة (السطوع) قبل الاستخدام. وإذا كانت مصفوفة numpy أو tensor من pytorch، يجب أن تحتوي على قناة لون واحدة (L) بدلاً من ثلاث، لذا فإن الشكل المتوقع لـ tensor من pytorch هو `(B, 1, H, W)`. أما لمصفوفة numpy فيكون `(B, H, W, 1)`، أو `(B, H, W)`، أو `(H, W, 1)`، أو `(H, W)`. | |
| controlnet_conditioning_scale (`float` أو `list[float]`، *اختياري*، القيمة الافتراضية 1.0) : تُضرب مخرجات ControlNet في `controlnet_conditioning_scale` قبل إضافتها إلى الباقي في `unet` الأصلية. إذا تم تحديد عدة ControlNets في `init`، يمكنك تعيين المقياس المقابل كقائمة. | |
| controlnet_pooled_projections (`torch.FloatTensor` من الشكل `(batch_size, projection_dim)`) : تمثيلات مُسقطَة من تمثيلات شروط الإدخال الخاصة بـ controlnet. | |
| negative_prompt (`str` أو `list[str]`، *اختياري*) : الموجه أو الموجهات التي لا ينبغي توجيه توليد الصورة بها. إذا لم يُعرَّف، يجب تمرير `negative_prompt_embeds` بدلاً من ذلك. يتم تجاهله عند عدم استخدام التوجيه (أي يتم تجاهله إذا كان `guidance_scale` أقل من `1`). | |
| negative_prompt_2 (`str` أو `list[str]`، *اختياري*) : الموجه أو الموجهات التي لا ينبغي توجيه توليد الصورة إليها، والتي سيتم إرسالها إلى `tokenizer_2` و`text_encoder_2`. إذا لم يُعرَّف، يُستخدم `negative_prompt` بدلاً منه | |
| negative_prompt_3 (`str` أو `list[str]`، *اختياري*) : الموجه أو الموجهات التي لا ينبغي توجيه توليد الصورة إليها، والتي سيتم إرسالها إلى `tokenizer_3` و`text_encoder_3`. إذا لم يُعرَّف، يُستخدم `negative_prompt` بدلاً منه | |
| num_images_per_prompt (`int`، *اختياري*، القيمة الافتراضية 1) : عدد الصور التي سيتم توليدها لكل موجه. | |
| generator (`torch.Generator` أو `list[torch.Generator]`، *اختياري*) : مولّد واحد أو قائمة من [مولّدات torch](https://pytorch.org/docs/stable/generated/torch.Generator.html) لجعل التوليد حتميًا. | |
| latents (`torch.FloatTensor`، *اختياري*) : كامنات ضجيج مُولّدة مسبقًا، مُستخرجة من توزيع غاوسي، تُستخدم كمدخلات لتوليد الصور. يمكن استخدامها لتعديل نفس التوليد باستخدام أوامر مختلفة. إذا لم تُقدَّم، فسيتم إنشاء كامنات من خلال الاستخراج باستخدام `generator` العشوائي المُقدَّم. | |
| prompt_embeds (`torch.FloatTensor`، *اختياري*) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، *مثلًا* وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد تمثيلات النص من معامل الإدخال `prompt`. | |
| negative_prompt_embeds (`torch.FloatTensor`، *اختياري*) : تمثيلات نصية سالبة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، *مثلًا* وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد negative_prompt_embeds من معامل الإدخال `negative_prompt`. | |
| pooled_prompt_embeds (`torch.FloatTensor`، *اختياري*) : تمثيلات نصية مجمّعة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، *مثلًا* وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد التمثيلات النصية المجمّعة من معامل الإدخال `prompt`. | |
| negative_pooled_prompt_embeds (`torch.FloatTensor`، *اختياري*) : تمثيلات نصية مجمعة سالبة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، *مثلًا* وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد pooled negative_prompt_embeds من معامل الإدخال `negative_prompt`. | |
| ip_adapter_image (`PipelineImageInput`، *اختياري*) : إدخال صورة اختياري للعمل مع IP Adapters. | |
| ip_adapter_image_embeds (`torch.Tensor`، *اختياري*) : تمثيلات صور مُولّدة مسبقًا لـ IP-Adapter. يجب أن يكون متجهًا (tensor) بشكل `(batch_size, num_images, emb_dim)`. يجب أن يحتوي على تمثيل الصورة السلبي إذا تم ضبط `do_classifier_free_guidance` على `True`. إذا لم يُقدَّم، تُحسب التمثيلات من معامل الإدخال `ip_adapter_image`. | |
| output_type (`str`، *اختياري*، القيمة الافتراضية `"pil"`) : صيغة الصورة الناتجة عن عملية التوليد. اختر بين [PIL](https://pillow.readthedocs.io/en/stable/): `PIL.Image.Image` أو `np.array`. | |
| return_dict (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب إرجاع `~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput` بدلاً من tuple عادي. | |
| joint_attention_kwargs (`dict`، *اختياري*) : قاموس kwargs يُمرَّر إلى `AttentionProcessor` إذا تم تحديده، كما هو معرَّف تحت `self.processor` في [diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py). | |
| clip_skip (`int`, *اختياري*) : عدد الطبقات التي سيتم تجاوزها من CLIP أثناء حساب تمثيلات الموجه. القيمة 1 تعني أنه سيتم استخدام مخرجات الطبقة قبل الأخيرة لحساب تمثيلات الموجه. | |
| callback_on_step_end (`Callable`، *اختياري*) : دالة تُستدعى في نهاية كل خطوة إزالة ضوضاء أثناء الاستدلال. تُستدعى الدالة بالحجج التالية: `callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)`. سيتضمن `callback_kwargs` قائمة بجميع المصفوفات كما حددتها `callback_on_step_end_tensor_inputs`. | |
| callback_on_step_end_tensor_inputs (`list`، *اختياري*) : قائمة مدخلات المصفوفات (tensors) لدالة `callback_on_step_end`. سيتم تمرير المصفوفات المحددة في القائمة كحجة `callback_kwargs`. لن تتمكن من تضمين سوى المتغيرات المدرجة في خاصية `._callback_tensor_inputs` لفئة خط الأنابيب (pipeline) الخاص بك. | |
| max_sequence_length (`int` الافتراضي 256) : أقصى طول تسلسل يُستخدم مع `prompt`. | |
| **يعيد:** `~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput` أو `tuple` | |
| `~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput` إذا كان `return_dict` هو True، وإلا `tuple`. عند إرجاع tuple، يكون العنصر الأول قائمة تحتوي على الصور المولّدة. | |
| الدالة التي تُستدعى عند استدعاء خط الأنابيب للتوليد. | |
| أمثلة: | |
| ```py | |
| >>> import torch | |
| >>> from diffusers.utils import load_image, check_min_version | |
| >>> from diffusers.pipelines import StableDiffusion3ControlNetInpaintingPipeline | |
| >>> from diffusers.models.controlnet_sd3 import SD3ControlNetModel | |
| >>> controlnet = SD3ControlNetModel.from_pretrained( | |
| ... "alimama-creative/SD3-Controlnet-Inpainting", use_safetensors=True, extra_conditioning_channels=1 | |
| ... ) | |
| >>> pipe = StableDiffusion3ControlNetInpaintingPipeline.from_pretrained( | |
| ... "stabilityai/stable-diffusion-3-medium-diffusers", | |
| ... controlnet=controlnet, | |
| ... torch_dtype=torch.float16, | |
| ... ) | |
| >>> pipe.text_encoder.to(torch.float16) | |
| >>> pipe.controlnet.to(torch.float16) | |
| >>> pipe.to("cuda") | |
| >>> image = load_image( | |
| ... "https://huggingface.co/alimama-creative/SD3-Controlnet-Inpainting/resolve/main/images/dog.png" | |
| ... ) | |
| >>> mask = load_image( | |
| ... "https://huggingface.co/alimama-creative/SD3-Controlnet-Inpainting/resolve/main/images/dog_mask.png" | |
| ... ) | |
| >>> width = 1024 | |
| >>> height = 1024 | |
| >>> prompt = "A cat is sitting next to a puppy." | |
| >>> generator = torch.Generator(device="cuda").manual_seed(24) | |
| >>> res_image = pipe( | |
| ... negative_prompt="deformed, distorted, disfigured, poorly drawn, bad anatomy, wrong anatomy, extra limb, missing limb, floating limbs, mutated hands and fingers, disconnected limbs, mutation, mutated, ugly, disgusting, blurry, amputation, NSFW", | |
| ... prompt=prompt, | |
| ... height=height, | |
| ... width=width, | |
| ... control_image=image, | |
| ... control_mask=mask, | |
| ... num_inference_steps=28, | |
| ... generator=generator, | |
| ... controlnet_conditioning_scale=0.95, | |
| ... guidance_scale=7, | |
| ... ).images[0] | |
| >>> res_image.save(f"sd3.png") | |
| ``` | |
| #### encode_image[[diffusers.StableDiffusion3ControlNetInpaintingPipeline.encode_image]] | |
| ```python | |
| encode_image(image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]], device: device) | |
| ``` | |
| [المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/controlnet_sd3/pipeline_stable_diffusion_3_controlnet_inpainting.py#L909) | |
| **المعاملات:** | |
| image (`PipelineImageInput`) : صورة الإدخال المراد ترميزها. | |
| device : (`torch.device`): جهاز Torch. | |
| **يعيد:** `torch.Tensor` | |
| تمثيل ميزات الصورة المُرمّزة. | |
| يقوم بتشفير الصورة المعطاة إلى تمثيل ميزات باستخدام مشفر صور مُدرَّب مسبقًا. | |
| #### encode_prompt[[diffusers.StableDiffusion3ControlNetInpaintingPipeline.encode_prompt]] | |
| ```python | |
| encode_prompt(prompt: str | list[str], prompt_2: str | list[str], prompt_3: str | list[str], device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, do_classifier_free_guidance: bool = True, negative_prompt: str | list[str] | None = None, negative_prompt_2: str | list[str] | None = None, negative_prompt_3: str | list[str] | None = None, prompt_embeds: typing.Optional[torch.FloatTensor] = None, negative_prompt_embeds: typing.Optional[torch.FloatTensor] = None, pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, clip_skip: int | None = None, max_sequence_length: int = 256, lora_scale: float | None = None) | |
| ``` | |
| [المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/controlnet_sd3/pipeline_stable_diffusion_3_controlnet_inpainting.py#L387) | |
| **المعاملات:** | |
| prompt (`str` أو `list[str]`، *اختياري*) : النص الذي سيتم ترميزه | |
| prompt_2 (`str` أو `list[str]`، *اختياري*) : الموجه أو الموجهات المرسل إلى `tokenizer_2` و`text_encoder_2`. إذا لم يُعرَّف، يُستخدم `prompt` في جميع مُشفِّرات النص | |
| prompt_3 (`str` أو `list[str]`، *اختياري*) : الموجه أو الموجهات المرسل إلى `tokenizer_3` و`text_encoder_3`. إذا لم يُعرَّف، يُستخدم `prompt` في جميع مُشفِّرات النص | |
| device : (`torch.device`): جهاز torch | |
| num_images_per_prompt (`int`) : عدد الصور التي يجب توليدها لكل موجه | |
| do_classifier_free_guidance (`bool`) : ما إذا كان سيتم استخدام التوجيه الحر للتصنيف أم لا | |
| negative_prompt (`str` أو `list[str]`، *اختياري*) : الموجه أو الموجهات التي لا ينبغي توجيه توليد الصورة بها. إذا لم يُعرَّف، يجب تمرير `negative_prompt_embeds` بدلاً من ذلك. يتم تجاهله عند عدم استخدام التوجيه (أي يتم تجاهله إذا كان `guidance_scale` أقل من `1`). | |
| negative_prompt_2 (`str` أو `list[str]`، *اختياري*) : الموجه أو الموجهات التي لا ينبغي توجيه توليد الصورة إليها، والتي سيتم إرسالها إلى `tokenizer_2` و`text_encoder_2`. إذا لم يُعرَّف، يُستخدم `negative_prompt` في جميع مشفّرات النص. | |
| negative_prompt_3 (`str` أو `list[str]`، *اختياري*) : الموجه أو الموجهات التي لا ينبغي توجيه توليد الصورة إليها، والتي سيتم إرسالها إلى `tokenizer_3` و`text_encoder_3`. إذا لم يُعرَّف، يُستخدم `negative_prompt` في جميع مُشفِّرات النص. | |
| prompt_embeds (`torch.FloatTensor`، *اختياري*) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، *مثلًا* وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد تمثيلات النص من معامل الإدخال `prompt`. | |
| negative_prompt_embeds (`torch.FloatTensor`، *اختياري*) : تمثيلات نصية سالبة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، *مثلًا* وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد negative_prompt_embeds من معامل الإدخال `negative_prompt`. | |
| pooled_prompt_embeds (`torch.FloatTensor`، *اختياري*) : تمثيلات نصية مجمّعة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، *مثلًا* وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد التمثيلات النصية المجمّعة من معامل الإدخال `prompt`. | |
| negative_pooled_prompt_embeds (`torch.FloatTensor`، *اختياري*) : تمثيلات نصية مجمعة سالبة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، *مثلًا* وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد pooled negative_prompt_embeds من معامل الإدخال `negative_prompt`. | |
| clip_skip (`int`, *اختياري*) : عدد الطبقات التي سيتم تجاوزها من CLIP أثناء حساب تمثيلات الموجه. القيمة 1 تعني أنه سيتم استخدام مخرجات الطبقة قبل الأخيرة لحساب تمثيلات الموجه. | |
| lora_scale (`float`، *اختياري*) : مقياس lora سيُطبَّق على جميع طبقات LoRA في مُشفِّر النص إذا كانت طبقات LoRA محمَّلة. | |
| #### prepare_ip_adapter_image_embeds[[diffusers.StableDiffusion3ControlNetInpaintingPipeline.prepare_ip_adapter_image_embeds]] | |
| ```python | |
| prepare_ip_adapter_image_embeds(ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, ip_adapter_image_embeds: typing.Optional[torch.Tensor] = None, device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, do_classifier_free_guidance: bool = True) | |
| ``` | |
| [المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/controlnet_sd3/pipeline_stable_diffusion_3_controlnet_inpainting.py#L929) | |
| **المعاملات:** | |
| ip_adapter_image (`PipelineImageInput`، *اختياري*) : الصورة المدخلة لاستخراج الميزات من أجل IP-Adapter. | |
| ip_adapter_image_embeds (`torch.Tensor`، *اختياري*) : تمثيلات الصور المحسوبة مسبقًا. | |
| device : (`torch.device`, *اختياري*): جهاز Torch. | |
| num_images_per_prompt (`int`، القيمة الافتراضية 1) : عدد الصور التي يجب توليدها لكل موجه. | |
| do_classifier_free_guidance (`bool`، القيمة الافتراضية True) : ما إذا كان سيتم استخدام classifier free guidance أم لا. | |
| يُعدّ تمثيلات الصور للاستخدام في IP-Adapter. | |
| يجب تمرير `ip_adapter_image` أو `ip_adapter_image_embeds`. | |
| ## StableDiffusion3PipelineOutput[[diffusers.pipelines.stable_diffusion_3.pipeline_output.StableDiffusion3PipelineOutput]] | |
| #### diffusers.pipelines.stable_diffusion_3.pipeline_output.StableDiffusion3PipelineOutput[[diffusers.pipelines.stable_diffusion_3.pipeline_output.StableDiffusion3PipelineOutput]] | |
| ```python | |
| diffusers.pipelines.stable_diffusion_3.pipeline_output.StableDiffusion3PipelineOutput(images: list[PIL.Image.Image] | numpy.ndarray) | |
| ``` | |
| [المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/stable_diffusion_3/pipeline_output.py#L10) | |
| **المعاملات:** | |
| images (`list[PIL.Image.Image]` أو `np.ndarray`) : قائمة من صور PIL منزوعة الضوضاء بطول `batch_size` أو مصفوفة numpy بأبعاد `(batch_size, height, width, num_channels)`. تمثل صور PIL أو مصفوفة numpy صورًا منزوعة الضوضاء من خط أنابيب الانتشار. | |
| فئة الإخراج لخطوط أنابيب Stable Diffusion. | |
Xet Storage Details
- Size:
- 57.8 kB
- Xet hash:
- 72c921577508720cd1ddfc729898ce959432b6e90a904b8da569f68ff2601416
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.