# LEDITS++

  

قُدم LEDITS++ في [LEDITS++: Limitless Image Editing using Text-to-Image Models](https://huggingface.co/papers/2311.16711) بواسطة Manuel Brack وFelix Friedrich وKatharina Kornmeier وLinoy Tsaban وPatrick Schramowski وKristian Kersting وApolinário Passos.

ملخص الورقة البحثية هو:

*لقد حظيت نماذج الانتشار من النص إلى الصورة مؤخراً باهتمام متزايد لقدرتها المذهلة على إنتاج صور عالية الدقة من مدخلات نصية فقط. تهدف الجهود البحثية اللاحقة إلى استغلال قدراتها وتطبيقها على تحرير الصور الحقيقية. ومع ذلك، غالباً ما تكون طرق الصورة إلى الصورة الحالية غير فعّالة، وغير دقيقة، ومحدودة المرونة. فهي إما تتطلب ضبطاً دقيقاً يستغرق وقتاً طويلاً، أو تنحرف بشكل مفرط وغير ضروري عن الصورة المدخلة، و/أو تفتقر إلى دعم التعديلات المتعددة المتزامنة. لمعالجة هذه المشكلات، نطرح LEDITS++، وهي تقنية فعّالة ومرنة ودقيقة في الوقت نفسه للتلاعب النصي بالصور. تتطلب نهج LEDITS++ الجديد للعكس لا ضبطاً ولا تحسيناً، وتنتج نتائج عالية الدقة بعدد قليل من خطوات الانتشار. ثانياً، تدعم منهجيتنا التعديلات المتعددة المتزامنة وهي مستقلة عن البنية المعمارية. ثالثاً، نستخدم تقنية إقناع ضمني جديدة تحدّ التغييرات إلى المناطق ذات الصلة في الصورة. نقترح معيار TEdBench++ الجديد كجزء من تقييمنا الشامل. تُظهر نتائجنا قدرات LEDITS++ وتحسيناتها مقارنةً بالطرق السابقة. صفحة المشروع متاحة على https://leditsplusplus-project.static.hf.space .*

> [!TIP]
> يمكنك العثور على معلومات إضافية حول LEDITS++ في [صفحة المشروع](https://leditsplusplus-project.static.hf.space/index.html) وتجربته في [عرض توضيحي](https://huggingface.co/spaces/editing-images/leditsplusplus).

> [!WARNING]
> بسبب بعض مشاكل التوافق العكسي مع التنفيذ الحالي لـ [DPMSolverMultistepScheduler](/docs/diffusers/main/ar/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler) في مكتبة diffusers، لم يعد بإمكان هذا التنفيذ من LEdits++ ضمان عكس مثالي. من غير المرجح أن يكون لهذا الخطأ أي تأثير ملحوظ في حالات الاستخدام العملية. ومع ذلك، نوفر تنفيذًا بديلاً يضمن عكسً مثاليًا في مستودع [GitHub](https://github.com/ml-research/ledits_pp) مخصص.

نوفّر خطّتيّ أنابيب (pipelines) مختلفتين مبنيتين على نماذج مُدرَّبة مسبقًا مختلفة.

## LEditsPPPipelineStableDiffusion[[diffusers.LEditsPPPipelineStableDiffusion]]

#### diffusers.LEditsPPPipelineStableDiffusion[[diffusers.LEditsPPPipelineStableDiffusion]]

```python
diffusers.LEditsPPPipelineStableDiffusion(vae: AutoencoderKL, text_encoder: CLIPTextModel, tokenizer: CLIPTokenizer, unet: UNet2DConditionModel, scheduler: diffusers.schedulers.scheduling_ddim.DDIMScheduler | diffusers.schedulers.scheduling_dpmsolver_multistep.DPMSolverMultistepScheduler, safety_checker: StableDiffusionSafetyChecker, feature_extractor: CLIPImageProcessorPil, requires_safety_checker: bool = True)
```

[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/ledits_pp/pipeline_leditspp_stable_diffusion.py#L269)

**المعاملات:**

vae ([AutoencoderKL](/docs/diffusers/main/ar/api/models/autoencoderkl#diffusers.AutoencoderKL)) : نموذج الترميز التحويلي التبايني (VAE) لتشفير وفك تشفير الصور إلى تمثيلات كامنة ومنها.

text_encoder ([CLIPTextModel](https://huggingface.co/docs/transformers/main/en/model_doc/clip#transformers.CLIPTextModel)) : مُشفِّر نصي مجمّد. يستخدم Stable Diffusion الجزء النصي من [CLIP](https://huggingface.co/docs/transformers/model_doc/clip#transformers.CLIPTextModel)، وتحديداً النسخة [clip-vit-large-patch14](https://huggingface.co/openai/clip-vit-large-patch14).

tokenizer ([CLIPTokenizer](https://huggingface.co/docs/transformers/main/en/model_doc/clip#transformers.CLIPTokenizer)) : مُقسِّم من الفئة [CLIPTokenizer](https://huggingface.co/docs/transformers/v4.21.0/en/model_doc/clip#transformers.CLIPTokenizer).

unet ([UNet2DConditionModel](/docs/diffusers/main/ar/api/models/unet2d-cond#diffusers.UNet2DConditionModel)) : بنية U-Net الشرطية لفك تشويش كامن الصورة المُرمّزة.

scheduler ([DPMSolverMultistepScheduler](/docs/diffusers/main/ar/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler) أو [DDIMScheduler](/docs/diffusers/main/ar/api/schedulers/ddim#diffusers.DDIMScheduler)) : مُجدوِل يُستخدم بالاقتران مع `unet` لإزالة الضوضاء من كائنات الصورة المُرمَّزة. يمكن أن يكون أحد [DPMSolverMultistepScheduler](/docs/diffusers/main/ar/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler) أو [DDIMScheduler](/docs/diffusers/main/ar/api/schedulers/ddim#diffusers.DDIMScheduler). إذا تم تمرير أي مُجدوِل آخر، فسيتم تعيينه تلقائياً إلى [DPMSolverMultistepScheduler](/docs/diffusers/main/ar/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler).

safety_checker (`StableDiffusionSafetyChecker`) : وحدة تصنيف تُقدّر ما إذا كانت الصور المولّدة يمكن اعتبارها مسيئة أو ضارة. يُرجى الرجوع إلى [بطاقة النموذج](https://huggingface.co/CompVis/stable-diffusion-v1-4) للاطلاع على التفاصيل.

feature_extractor ([CLIPImageProcessor](https://huggingface.co/docs/transformers/main/en/model_doc/clip#transformers.CLIPImageProcessor)) : نموذج يستخرج الميزات من الصور المولّدة لاستخدامها كمدخلات لـ `safety_checker`.

خط أنابيب لتحرير الصور النصية باستخدام LEDits++ مع Stable Diffusion.

يرث هذا النموذج من [DiffusionPipeline](/docs/diffusers/main/ar/api/pipelines/overview#diffusers.DiffusionPipeline) ويُبنى على أساس [StableDiffusionPipeline](/docs/diffusers/main/ar/api/pipelines/stable_diffusion/text2img#diffusers.StableDiffusionPipeline). راجع توثيق الفئة الأصلية لمعرفة الطرق العامة المُنفَّذة لجميع خطوط الأنابيب (التنزيل، الحفظ، التشغيل على جهاز معين، وما إلى ذلك).

#### __call__[[diffusers.LEditsPPPipelineStableDiffusion.__call__]]

```python
__call__(negative_prompt: str | list[str] | None = None, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, output_type: str | None = 'pil', return_dict: bool = True, editing_prompt: str | list[str] | None = None, editing_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, reverse_editing_direction: bool | list[bool] | None = False, edit_guidance_scale: float | list[float] | None = 5, edit_warmup_steps: int | list[int] | None = 0, edit_cooldown_steps: int | list[int] | None = None, edit_threshold: float | list[float] | None = 0.9, user_mask: typing.Optional[torch.Tensor] = None, sem_guidance: list[torch.Tensor] | None = None, use_cross_attn_mask: bool = False, use_intersect_mask: bool = True, attn_store_steps: list[int] | None = [], store_averaged_over_steps: bool = True, cross_attention_kwargs: dict[str, typing.Any] | None = None, guidance_rescale: float = 0.0, 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'], **kwargs)
```

[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/ledits_pp/pipeline_leditspp_stable_diffusion.py#L720)

**المعاملات:**

negative_prompt (`str` أو `list[str]`، *اختياري*) : الموجه أو الموجهات التي لا ينبغي توجيه توليد الصورة بها. يتم تجاهلها عند عدم استخدام التوجيه (أي يتم تجاهلها إذا كان `guidance_scale` أقل من `1`).

generator (`torch.Generator`، *اختياري*) : مولّد واحد أو قائمة من [مولّدات torch](https://pytorch.org/docs/stable/generated/torch.Generator.html) لجعل التوليد حتميًا.

output_type (`str`، *اختياري*، القيمة الافتراضية `"pil"`) : صيغة الصورة الناتجة عن عملية التوليد. اختر بين [PIL](https://pillow.readthedocs.io/en/stable/): `PIL.Image.Image` أو `np.array`.

return_dict (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب إرجاع [LEditsPPDiffusionPipelineOutput](/docs/diffusers/main/ar/api/pipelines/ledits_pp#diffusers.pipelines.LEditsPPDiffusionPipelineOutput) بدلاً من tuple عادي.

editing_prompt (`str` أو `list[str]`، *اختياري*) : الأمر أو الأوامر التي تُوجّه توليد الصورة. يتم إعادة بناء الصورة عن طريق تعيين `editing_prompt = None`. يجب تحديد اتجاه التوجيه الخاص بالأمر عبر `reverse_editing_direction`.

editing_prompt_embeds (`torch.Tensor>`، *اختياري*) : تمثيلات مُسبقة الحساب تُستخدم لتوجيه توليد الصورة. يجب تحديد اتجاه التوجيه للتمثيل عبر `reverse_editing_direction`.

negative_prompt_embeds (`torch.Tensor`، *اختياري*) : تمثيلات نصية سالبة مُولّدة مسبقًا. يمكن استخدامها لضبط مدخلات النص بسهولة (وزن الموجه). إذا لم تُقدَّم، يتم توليد `negative_prompt_embeds` من معامل الإدخال `negative_prompt`.

reverse_editing_direction (`bool` أو `list[bool]`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان يجب زيادة أو تقليل الموجه المقابل في `editing_prompt`.

edit_guidance_scale (`float` أو `list[float]`، *اختياري*، القيمة الافتراضية 5) : مقياس التوجيه لتوجيه توليد الصورة. إذا تم تقديمه كقائمة، يجب أن تتوافق القيم مع `editing_prompt`. يُعرَّف `edit_guidance_scale` على أنه `s_e` في المعادلة 12 من [ورقة LEDITS++](https://huggingface.co/papers/2301.12247).

edit_warmup_steps (`float` أو `list[float]`، *اختياري*، القيمة الافتراضية 10) : عدد خطوات الانتشار (لكل موجه) التي لن يُطبَّق عليها التوجيه.

edit_cooldown_steps (`float` أو `list[float]`، *اختياري*، الافتراضي `None`) : عدد خطوات الانتشار (لكل موجه) بعد التي لن تُطبَّق فيها التوجيهات بعد ذلك.

edit_threshold (`float` أو `list[float]`، *اختياري*، القيمة الافتراضية 0.9) : عتبة الإخفاء للتوجيه. يجب أن تكون العتبة متناسبة مع منطقة الصورة التي يتم تعديلها. يُعرَّف 'edit_threshold' على أنه 'λ' في المعادلة 12 من [ورقة LEDITS++](https://huggingface.co/papers/2301.12247).

user_mask (`torch.Tensor`، *اختياري*) : قناع يوفّره المستخدم للحصول على تحكم أدق في عملية التحرير. يكون هذا مفيدًا عندما لا تلبي الأقنعة الضمنية في LEDITS++ تفضيلات المستخدم.

sem_guidance (`list[torch.Tensor]`، *اختياري*) : قائمة من متجهات التوجيه المُولَّدة مسبقًا لتُطبَّق أثناء التوليد. يجب أن يتطابق طول القائمة مع `num_inference_steps`.

use_cross_attn_mask (`bool`، القيمة الافتراضية `False`) : ما إذا كانت أقنعة الانتباه المتقاطع تُستخدم. تُستخدم أقنعة الانتباه المتقاطع دائمًا عند ضبط use_intersect_mask على true. تُعرَّف أقنعة الانتباه المتقاطع على أنها 'M^1' من المعادلة 12 في [ورقة LEDITS++](https://huggingface.co/papers/2311.16711).

use_intersect_mask (`bool`، القيمة الافتراضية `True`) : ما إذا كان حد القناع يُحسب كتقاطع بين أقنعة الانتباه المتقاطع والأقنعة المشتقة من تقدير الضوضاء. تُعرَّف أقنعة الانتباه المتقاطع على أنها 'M^1' والأقنعة المشتقة من تقدير الضوضاء على أنها 'M^2' في المعادلة 12 من [ورقة LEDITS++](https://huggingface.co/papers/2311.16711).

attn_store_steps (`list[int]`، *اختياري*) : الخطوات التي تُخزَّن فيها خرائط الانتباه في AttentionStore. لأغراض العرض فقط.

store_averaged_over_steps (`bool`، القيمة الافتراضية `True`) : ما إذا كانت خرائط الانتباه الخاصة بـ 'attn_store_steps' تُخزَّن مُتوسِّطةً عبر خطوات الانتشار. إذا كانت القيمة False، تُخزَّن خرائط الانتباه لكل خطوة بشكل منفصل. لأغراض العرض المرئي فقط.

cross_attention_kwargs (`dict`، *اختياري*) : قاموس kwargs يُمرَّر إلى `AttentionProcessor` إذا تم تحديده، كما هو معرّف في [`self.processor`](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py).

guidance_rescale (`float`, *optional*, defaults to 0.0) : Guidance rescale factor from [Common Diffusion Noise Schedules and Sample Steps are Flawed](https://huggingface.co/papers/2305.08891). Guidance rescale factor should fix overexposure when using zero terminal SNR.

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) الخاص بك.

**يعيد:** [LEditsPPDiffusionPipelineOutput](/docs/diffusers/main/ar/api/pipelines/ledits_pp#diffusers.pipelines.LEditsPPDiffusionPipelineOutput) أو `tuple`

[LEditsPPDiffusionPipelineOutput](/docs/diffusers/main/ar/api/pipelines/ledits_pp#diffusers.pipelines.LEditsPPDiffusionPipelineOutput) if `return_dict` is True, otherwise a `tuple. When returning a tuple, the first element is a list with the generated images, and the second element is a list of `bool`s denoting whether the corresponding generated image likely represents "not-safe-for-work" (nsfw) content, according to the `safety_checker`.

دالة الاستدعاء لخط الأنابيب للتعديل. يجب استدعاء الطريقة [invert()](/docs/diffusers/main/ar/api/pipelines/ledits_pp#diffusers.LEditsPPPipelineStableDiffusion.invert) مسبقاً. ستتم التعديلات دائماً على آخر صورة معكوسة أو صور معكوسة.

أمثلة:
```py
>>> import torch

>>> from diffusers import LEditsPPPipelineStableDiffusion
>>> from diffusers.utils import load_image

>>> pipe = LEditsPPPipelineStableDiffusion.from_pretrained(
...     "stable-diffusion-v1-5/stable-diffusion-v1-5", variant="fp16", torch_dtype=torch.float16
... )
>>> pipe.vae.enable_tiling()
>>> pipe = pipe.to("cuda")

>>> img_url = "https://www.aiml.informatik.tu-darmstadt.de/people/mbrack/cherry_blossom.png"
>>> image = load_image(img_url).resize((512, 512))

>>> _ = pipe.invert(image=image, num_inversion_steps=50, skip=0.1)

>>> edited_image = pipe(
...     editing_prompt=["cherry blossom"], edit_guidance_scale=10.0, edit_threshold=0.75
... ).images[0]
```

#### عكس[[diffusers.LEditsPPPipelineStableDiffusion.invert]]

```python
invert(image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]], source_prompt: str = '', source_guidance_scale: float = 3.5, num_inversion_steps: int = 30, skip: float = 0.15, generator: typing.Optional[torch.Generator] = None, cross_attention_kwargs: dict[str, typing.Any] | None = None, clip_skip: int | None = None, height: int | None = None, width: int | None = None, resize_mode: str | None = 'default', crops_coords: tuple[int, int, int, int] | None = None)
```

[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/ledits_pp/pipeline_leditspp_stable_diffusion.py#L1223)

**المعاملات:**

image (`PipelineImageInput`) : المدخلات الخاصة بالصورة أو الصور التي سيتم تحريرها. يجب أن تكون جميع الصور المدخلة متعددة بنفس نسبة الأبعاد.

source_prompt (`str`، الافتراضي `""`) : وصف الصورة المُدخلة الذي سيُستخدم للإرشاد أثناء العكس. يُعطَّل الإرشاد إذا كان `source_prompt` هو `""`.

source_guidance_scale (`float`، القيمة الافتراضية `3.5`) : قوة التوجيه أثناء العكس.

num_inversion_steps (`int`، القيمة الافتراضية `30`) : عدد خطوات الانعكاس الإجمالية المنفذة بعد استبعاد الخطوات الأولية `skip`.

skip (`float`، القيمة الافتراضية `0.15`) : الجزء من الخطوات الأولية الذي سيتم تجاهله في عملية العكس والتوليد اللاحق. تؤدي القيم الأدنى إلى إحداث تغييرات أقوى في الصورة المدخلة. يجب أن يكون `skip` بين `0` و`1`.

generator (`torch.Generator`، *اختياري*) : [`torch.Generator`](https://pytorch.org/docs/stable/generated/torch.Generator.html) لجعل عملية العكس حتمية.

cross_attention_kwargs (`dict`، *اختياري*) : قاموس kwargs يُمرَّر إلى `AttentionProcessor` إذا تم تحديده، كما هو معرّف في [`self.processor`](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py).

clip_skip (`int`, *اختياري*) : عدد الطبقات التي سيتم تجاوزها من CLIP أثناء حساب تمثيلات الموجه. القيمة 1 تعني أنه سيتم استخدام مخرجات الطبقة قبل الأخيرة لحساب تمثيلات الموجه.

height (`int`، *اختياري*، القيمة الافتراضية `None`) : الارتفاع في الصورة بعد المعالجة المسبقة. إذا كانت `None`، فسيتم استخدام `get_default_height_width()` للحصول على الارتفاع الافتراضي.

width (`int`, *optional*`, defaults to `None`) : The width in preprocessed. If `None`, will use get_default_height_width()` to get the default width.

resize_mode (`str`، *اختياري*، القيمة الافتراضية `default`) : وضع تغيير الحجم، يمكن أن يكون أحد `default` أو `fill`. إذا كان `default`، فسيتم تغيير حجم الصورة لتناسب العرض والارتفاع المحددين، وقد لا يحافظ على نسبة الأبعاد الأصلية. إذا كان `fill`، فسيتم تغيير حجم الصورة لتناسب العرض والارتفاع المحددين مع الحفاظ على نسبة الأبعاد، ثم يتم توسيط الصورة ضمن الأبعاد، مع ملء الفراغات ببيانات من الصورة. إذا كان `crop`، فسيتم تغيير حجم الصورة لتناسب العرض والارتفاع المحددين مع الحفاظ على نسبة الأبعاد، ثم يتم توسيط الصورة ضمن الأبعاد، مع قص الفائض. لاحظ أن وضعي تغيير الحجم `fill` و`crop` مدعومان فقط لإدخال صور PIL.

crops_coords (`list[tuple[int, int, int, int]]`، *اختياري*، القيمة الافتراضية `None`) : إحداثيات القص لكل صورة في الدفعة. إذا كانت `None`، فلن يتم قص الصورة.

**يعيد:** [LEditsPPInversionPipelineOutput](/docs/diffusers/main/ar/api/pipelines/ledits_pp#diffusers.pipelines.LEditsPPInversionPipelineOutput)

ستحتوي المخرجات على صورة الإدخال المُعاد تحجيمها (أو الصور) وإعادة بناء VAE المقابلة (أو إعادة البناء).

الدالة الخاصة بخط أنابيب عكس الصور كما ورد في [ورقة LEDITS++](https://huggingface.co/papers/2301.12247). إذا تم ضبط المجدول على [DDIMScheduler](/docs/diffusers/main/ar/api/schedulers/ddim#diffusers.DDIMScheduler) فسيتم تنفيذ العكس المقترح بواسطة [edit-friendly DPDM](https://huggingface.co/papers/2304.06140) بدلاً من ذلك.

#### encode_prompt[[diffusers.LEditsPPPipelineStableDiffusion.encode_prompt]]

```python
encode_prompt(device, num_images_per_prompt, enable_edit_guidance, negative_prompt = None, editing_prompt = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, editing_prompt_embeds: typing.Optional[torch.Tensor] = None, lora_scale: float | None = None, clip_skip: int | None = None)
```

[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/ledits_pp/pipeline_leditspp_stable_diffusion.py#L521)

**المعاملات:**

device : (`torch.device`): جهاز torch

num_images_per_prompt (`int`) : عدد الصور التي يجب توليدها لكل موجه

enable_edit_guidance (`bool`) : ما إذا كان سيتم تنفيذ أي تحرير أو إعادة بناء الصورة المدخلة بدلاً من ذلك

negative_prompt (`str` أو `list[str]`، *اختياري*) : الموجه أو الموجهات التي لا ينبغي توجيه توليد الصورة بها. إذا لم يُعرَّف، يجب تمرير `negative_prompt_embeds` بدلاً من ذلك. يتم تجاهله عند عدم استخدام التوجيه (أي يتم تجاهله إذا كان `guidance_scale` أقل من `1`).

editing_prompt (`str` أو `list[str]`، *اختياري*) : موجهات التحرير التي سيتم ترميزها. إذا لم يتم تعريفها، يجب تمرير `editing_prompt_embeds` بدلاً من ذلك.

editing_prompt_embeds (`torch.Tensor`، *اختياري*) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، *مثلًا* وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد تمثيلات النص من معامل الإدخال `prompt`.

negative_prompt_embeds (`torch.Tensor`, *اختياري*) : تمثيلات نصية سالبة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، *مثلًا* وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد negative_prompt_embeds من معامل الإدخال `negative_prompt`.

lora_scale (`float`، *اختياري*) : مقياس LoRA سيُطبَّق على جميع طبقات LoRA في مُشفِّر النص إذا كانت طبقات LoRA محمَّلة.

clip_skip (`int`, *اختياري*) : عدد الطبقات التي سيتم تجاوزها من CLIP أثناء حساب تمثيلات الموجه. القيمة 1 تعني أنه سيتم استخدام مخرجات الطبقة قبل الأخيرة لحساب تمثيلات الموجه.

يقوم بتشفير الموجه إلى حالات مخفية لمشفّر النص.

## LEditsPPPipelineStableDiffusionXL[[diffusers.LEditsPPPipelineStableDiffusionXL]]

#### diffusers.LEditsPPPipelineStableDiffusionXL[[diffusers.LEditsPPPipelineStableDiffusionXL]]

```python
diffusers.LEditsPPPipelineStableDiffusionXL(vae: AutoencoderKL, text_encoder: CLIPTextModel, text_encoder_2: CLIPTextModelWithProjection, tokenizer: CLIPTokenizer, tokenizer_2: CLIPTokenizer, unet: UNet2DConditionModel, scheduler: diffusers.schedulers.scheduling_dpmsolver_multistep.DPMSolverMultistepScheduler | diffusers.schedulers.scheduling_ddim.DDIMScheduler, image_encoder: CLIPVisionModelWithProjection = None, feature_extractor: CLIPImageProcessorPil = None, force_zeros_for_empty_prompt: bool = True, add_watermarker: bool | None = None)
```

[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/ledits_pp/pipeline_leditspp_stable_diffusion_xl.py#L273)

**المعاملات:**

vae ([AutoencoderKL](/docs/diffusers/main/ar/api/models/autoencoderkl#diffusers.AutoencoderKL)) : نموذج الترميز التحويلي التبايني (VAE) لتشفير وفك تشفير الصور إلى تمثيلات كامنة ومنها.

text_encoder ([CLIPTextModel](https://huggingface.co/docs/transformers/main/en/model_doc/clip#transformers.CLIPTextModel)) : مُشفِّر نصي مجمّد. يستخدم Stable Diffusion XL الجزء النصي من [CLIP](https://huggingface.co/docs/transformers/model_doc/clip#transformers.CLIPTextModel)، وتحديداً النسخة [clip-vit-large-patch14](https://huggingface.co/openai/clip-vit-large-patch14).

text_encoder_2 ([CLIPTextModelWithProjection](https://huggingface.co/docs/transformers/main/en/model_doc/clip#transformers.CLIPTextModelWithProjection)) : مُشفِّر نصي مجمّد ثانٍ. يستخدم Stable Diffusion XL جزء النص والجزء المُجمَّع (pool) من [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).

tokenizer ([CLIPTokenizer](https://huggingface.co/docs/transformers/main/en/model_doc/clip#transformers.CLIPTokenizer)) : مُقسِّم من الفئة [CLIPTokenizer](https://huggingface.co/docs/transformers/v4.21.0/en/model_doc/clip#transformers.CLIPTokenizer).

tokenizer_2 ([CLIPTokenizer](https://huggingface.co/docs/transformers/main/en/model_doc/clip#transformers.CLIPTokenizer)) : مُقسِّم ثانٍ من الفئة [CLIPTokenizer](https://huggingface.co/docs/transformers/v4.21.0/en/model_doc/clip#transformers.CLIPTokenizer).

unet ([UNet2DConditionModel](/docs/diffusers/main/ar/api/models/unet2d-cond#diffusers.UNet2DConditionModel)) : بنية U-Net الشرطية لفك تشويش كامن الصورة المُرمّزة.

scheduler ([DPMSolverMultistepScheduler](/docs/diffusers/main/ar/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler) أو [DDIMScheduler](/docs/diffusers/main/ar/api/schedulers/ddim#diffusers.DDIMScheduler)) : مُجدوِل يُستخدم بالاقتران مع `unet` لإزالة الضوضاء من كائنات الصورة المُرمَّزة. يمكن أن يكون أحد [DPMSolverMultistepScheduler](/docs/diffusers/main/ar/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler) أو [DDIMScheduler](/docs/diffusers/main/ar/api/schedulers/ddim#diffusers.DDIMScheduler). إذا تم تمرير أي مُجدوِل آخر، فسيتم تعيينه تلقائياً إلى [DPMSolverMultistepScheduler](/docs/diffusers/main/ar/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler).

force_zeros_for_empty_prompt (`bool`، *اختياري*، القيمة الافتراضية `"True"`) : ما إذا كان يجب إجبار تضمينات الموجه السلبي على أن تكون دائمًا 0. راجع أيضًا إعدادات `stabilityai/stable-diffusion-xl-base-1-0`.

add_watermarker (`bool`, *اختياري*) : ما إذا كان سيتم استخدام مكتبة [invisible_watermark](https://github.com/ShieldMnt/invisible-watermark/) لإضافة علامة مائية إلى الصور المُخرَجة. إذا لم يُعرَّف، فسيكون الافتراضي True إذا كانت الحزمة مثبّتة، وإلا فلن تُستخدم أي أداة لإضافة علامة مائية.

خط أنابيب لتحرير الصور النصية باستخدام LEDits++ مع Stable Diffusion XL.

يرث هذا النموذج من [DiffusionPipeline](/docs/diffusers/main/ar/api/pipelines/overview#diffusers.DiffusionPipeline) ويُبنى على أساس [StableDiffusionXLPipeline](/docs/diffusers/main/ar/api/pipelines/stable_diffusion/stable_diffusion_xl#diffusers.StableDiffusionXLPipeline). راجع توثيق الفئة الأصلية للاطلاع على الطرق العامة المُنفَّذة لجميع خطوط الأنابيب (التنزيل، الحفظ، التشغيل على جهاز معين، وما إلى ذلك).

بالإضافة إلى ذلك، يرث خط الأنابيب طرق التحميل التالية:
- *LoRA*: [LEditsPPPipelineStableDiffusionXL.load_lora_weights()](/docs/diffusers/main/ar/api/loaders/lora#diffusers.loaders.StableDiffusionXLLoraLoaderMixin.load_lora_weights)
- *نقطة التفتيش*: [loaders.FromSingleFileMixin.from_single_file()](/docs/diffusers/main/ar/api/loaders/single_file#diffusers.loaders.FromSingleFileMixin.from_single_file)

وكذلك طرق الحفظ التالية:
- *LoRA*: `loaders.StableDiffusionXLPipeline.save_lora_weights`

#### __call__[[diffusers.LEditsPPPipelineStableDiffusionXL.__call__]]

```python
__call__(denoising_end: float | None = None, negative_prompt: str | list[str] | None = None, negative_prompt_2: str | list[str] | None = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = 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, output_type: str | None = 'pil', return_dict: bool = True, cross_attention_kwargs: dict[str, typing.Any] | None = None, guidance_rescale: float = 0.0, crops_coords_top_left: tuple[int, int] = (0, 0), target_size: tuple[int, int] | None = None, editing_prompt: str | list[str] | None = None, editing_prompt_embeddings: typing.Optional[torch.Tensor] = None, editing_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, reverse_editing_direction: bool | list[bool] | None = False, edit_guidance_scale: float | list[float] | None = 5, edit_warmup_steps: int | list[int] | None = 0, edit_cooldown_steps: int | list[int] | None = None, edit_threshold: float | list[float] | None = 0.9, sem_guidance: list[torch.Tensor] | None = None, use_cross_attn_mask: bool = False, use_intersect_mask: bool = False, user_mask: typing.Optional[torch.Tensor] = None, attn_store_steps: list[int] | None = [], store_averaged_over_steps: bool = True, 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'], **kwargs)
```

[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/ledits_pp/pipeline_leditspp_stable_diffusion_xl.py#L782)

**المعاملات:**

denoising_end (`float`، *اختياري*) : عند تحديده، يحدد نسبة (بين 0.0 و 1.0) من إجمالي عملية إزالة الضوضاء التي يجب إكمالها قبل إنهائها مبكرًا عمدًا. ونتيجةً لذلك، سيحتفظ العينة المُعاد بها بكمية كبيرة من الضوضاء كما تحددها الخطوات الزمنية المنفصلة التي يختارها المجدول. ينبغي استخدام معامل denoising_end بشكل مثالي عندما يشكل هذا الخط الأنابيب جزءًا من إعداد متعدد الخطوط الأنابيب "خليط من مُزيلات الضوضاء"، كما هو موضح في [**تحسين الصورة

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_embeds (`torch.Tensor`, *اختياري*) : تمثيلات نصية سالبة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، *مثلًا* وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد negative_prompt_embeds من معامل الإدخال `negative_prompt`.

negative_pooled_prompt_embeds (`torch.Tensor`, *اختياري*) : تمثيلات نصية مجمعة سالبة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، *مثلًا* وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد pooled negative_prompt_embeds من معامل الإدخال `negative_prompt`.

ip_adapter_image : (`PipelineImageInput`، *اختياري*): إدخال صورة اختياري للعمل مع IP Adapters.

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 عادي.

cross_attention_kwargs (`dict`، *اختياري*) : قاموس kwargs يُمرَّر إلى `AttentionProcessor` إذا تم تحديده، كما هو معرَّف تحت `self.processor` في [diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py).

guidance_rescale (`float`, *optional*, defaults to 0.7) : Guidance rescale factor proposed by [Common Diffusion Noise Schedules and Sample Steps are Flawed](https://huggingface.co/papers/2305.08891) `guidance_scale` is defined as `φ` in equation 16. of [Common Diffusion Noise Schedules and Sample Steps are Flawed](https://huggingface.co/papers/2305.08891). Guidance rescale factor should fix overexposure when using zero terminal SNR.

crops_coords_top_left (`tuple[int]`، *اختياري*، القيمة الافتراضية (0, 0)) : يمكن استخدام `crops_coords_top_left` لتوليد صورة تبدو وكأنها "مقتطعة" من الموضع `crops_coords_top_left` إلى الأسفل. عادةً ما يتم تحقيق صور مفضلة ومركزة جيدًا عن طريق تعيين `crops_coords_top_left` إلى (0, 0). جزء من micro-conditioning الخاص بـ SDXL كما هو موضح في القسم 2.2 من [https://huggingface.co/papers/2307.01952](https://huggingface.co/papers/2307.01952).

target_size (`tuple[int]`، *اختياري*، القيمة الافتراضية (1024, 1024)) : في معظم الحالات، يجب ضبط `target_size` على الارتفاع والعرض المطلوبين للصورة المولّدة. إذا لم يُحدد، فسيكون الافتراضي `(width, height)`. جزء من التكييف الدقيق (micro-conditioning) في SDXL كما هو موضح في القسم 2.2 من [https://huggingface.co/papers/2307.01952](https://huggingface.co/papers/2307.01952).

editing_prompt (`str` أو `list[str]`، *اختياري*) : الأمر أو الأوامر التي تُوجّه توليد الصورة. يتم إعادة بناء الصورة عن طريق تعيين `editing_prompt = None`. يجب تحديد اتجاه التوجيه الخاص بالأمر عبر `reverse_editing_direction`.

editing_prompt_embeddings (`torch.Tensor`، *اختياري*) : تمثيلات نصوص تحرير مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، *مثلًا* وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد editing_prompt_embeddings من معامل الإدخال `editing_prompt`.

editing_pooled_prompt_embeds (`torch.Tensor`, *اختياري*) : تمثيلات نصية مجمّعة مُعدّة مسبقًا للتحرير. يمكن استخدامها لتعديل مدخلات النص بسهولة، *مثلًا* وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد editing_prompt_embeddings من معامل الإدخال `editing_prompt`.

reverse_editing_direction (`bool` أو `list[bool]`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان يجب زيادة أو تقليل الموجه المقابل في `editing_prompt`.

edit_guidance_scale (`float` أو `list[float]`، *اختياري*، القيمة الافتراضية 5) : مقياس التوجيه لتوجيه توليد الصورة. إذا تم تقديمه كقائمة، يجب أن تتوافق القيم مع `editing_prompt`. يُعرَّف `edit_guidance_scale` على أنه `s_e` في المعادلة 12 من [ورقة LEDITS++](https://huggingface.co/papers/2301.12247).

edit_warmup_steps (`float` أو `list[float]`، *اختياري*، القيمة الافتراضية 10) : عدد خطوات الانتشار (لكل موجه) التي لا يُطبَّق فيها التوجيه.

edit_cooldown_steps (`float` أو `list[float]`، *اختياري*، الافتراضي `None`) : عدد خطوات الانتشار (لكل موجه) بعد التي لم يعد يُطبَّق فيها التوجيه.

edit_threshold (`float` أو `list[float]`، *اختياري*، القيمة الافتراضية 0.9) : عتبة الإخفاء للتوجيه. يجب أن تكون العتبة متناسبة مع منطقة الصورة التي يتم تعديلها. يُعرَّف 'edit_threshold' على أنه 'λ' في المعادلة 12 من [ورقة LEDITS++](https://huggingface.co/papers/2301.12247).

sem_guidance (`list[torch.Tensor]`، *اختياري*) : قائمة من متجهات التوجيه المُولَّدة مسبقًا لتُطبَّق أثناء التوليد. يجب أن يتطابق طول القائمة مع `num_inference_steps`.

use_cross_attn_mask : ما إذا كانت أقنعة الانتباه المتقاطع تُستخدم. تُستخدم أقنعة الانتباه المتقاطع دائمًا عند ضبط use_intersect_mask على true. تُعرَّف أقنعة الانتباه المتقاطع على أنها 'M^1' من المعادلة 12 في [ورقة LEDITS++](https://huggingface.co/papers/2311.16711).

use_intersect_mask : ما إذا كان يُحسب حد القناع (masking) على أنه تقاطع أقنعة الانتباه المتقاطع (cross-attention masks) والأقنعة المشتقة من تقدير الضوضاء. تُعرَّف أقنعة الانتباه المتقاطع على أنها 'M^1' والأقنعة المشتقة من تقدير الضوضاء على أنها 'M^2' في المعادلة 12 من [ورقة LEDITS++](https://huggingface.co/papers/2311.16711).

user_mask : قناع يوفّره المستخدم للحصول على تحكم أفضل في عملية التحرير. يكون هذا مفيدًا عندما لا تلبي الأقنعة الضمنية في LEDITS++ تفضيلات المستخدم.

attn_store_steps : الخطوات التي تُخزَّن فيها خرائط الانتباه في AttentionStore. لأغراض العرض المرئي فقط.

store_averaged_over_steps : ما إذا كانت خرائط الانتباه الخاصة بـ 'attn_store_steps' تُخزَّن مُتوسِّطةً على مدى خطوات الانتشار. إذا كانت القيمة False، تُخزَّن خرائط الانتباه لكل خطوة بشكل منفصل. لأغراض العرض المرئي فقط.

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) الخاص بك.

**يعيد:** [LEditsPPDiffusionPipelineOutput](/docs/diffusers/main/ar/api/pipelines/ledits_pp#diffusers.pipelines.LEditsPPDiffusionPipelineOutput) أو `tuple`

[LEditsPPDiffusionPipelineOutput](/docs/diffusers/main/ar/api/pipelines/ledits_pp#diffusers.pipelines.LEditsPPDiffusionPipelineOutput) إذا كان `return_dict` هو True، وإلا فسيكون `tuple. عند إرجاع tuple، يكون العنصر الأول قائمة تحتوي على الصور المولّدة.

دالة الاستدعاء لخط الأنابيب للتعديل. يجب استدعاء الطريقة [invert()](/docs/diffusers/main/ar/api/pipelines/ledits_pp#diffusers.LEditsPPPipelineStableDiffusionXL.invert) مسبقاً. ستتم التعديلات دائماً على آخر صورة معكوسة أو صور معكوسة.

أمثلة:
```py
>>> import torch

>>> from diffusers import LEditsPPPipelineStableDiffusionXL
>>> from diffusers.utils import load_image

>>> pipe = LEditsPPPipelineStableDiffusionXL.from_pretrained(
...     "stabilityai/stable-diffusion-xl-base-1.0", variant="fp16", torch_dtype=torch.float16
... )
>>> pipe.vae.enable_tiling()
>>> pipe = pipe.to("cuda")

>>> img_url = "https://www.aiml.informatik.tu-darmstadt.de/people/mbrack/tennis.jpg"
>>> image = load_image(img_url).resize((1024, 1024))

>>> _ = pipe.invert(image=image, num_inversion_steps=50, skip=0.2)

>>> edited_image = pipe(
...     editing_prompt=["tennis ball", "tomato"],
...     reverse_editing_direction=[True, False],
...     edit_guidance_scale=[5.0, 10.0],
...     edit_threshold=[0.9, 0.85],
... ).images[0]
```

#### عكس[[diffusers.LEditsPPPipelineStableDiffusionXL.invert]]

```python
invert(image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]], source_prompt: str = '', source_guidance_scale = 3.5, negative_prompt: str = None, negative_prompt_2: str = None, num_inversion_steps: int = 50, skip: float = 0.15, generator: typing.Optional[torch.Generator] = None, crops_coords_top_left: tuple[int, int] = (0, 0), num_zero_noise_steps: int = 3, cross_attention_kwargs: dict[str, typing.Any] | None = None, height: int | None = None, width: int | None = None, resize_mode: str | None = 'default', crops_coords: tuple[int, int, int, int] | None = None)
```

[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/ledits_pp/pipeline_leditspp_stable_diffusion_xl.py#L1414)

**المعاملات:**

image (`PipelineImageInput`) : المدخلات الخاصة بالصورة أو الصور التي سيتم تحريرها. يجب أن تكون جميع الصور المدخلة متعددة بنفس نسبة الأبعاد.

source_prompt (`str`، الافتراضي `""`) : وصف الصورة المُدخلة الذي سيُستخدم للإرشاد أثناء العكس. يُعطَّل الإرشاد إذا كان `source_prompt` هو `""`.

source_guidance_scale (`float`، القيمة الافتراضية `3.5`) : قوة التوجيه أثناء العكس.

negative_prompt (`str` أو `list[str]`، *اختياري*) : الموجه أو الموجهات التي لا ينبغي توجيه توليد الصورة بها. إذا لم يُعرَّف، يجب تمرير `negative_prompt_embeds` بدلاً من ذلك. يتم تجاهله عند عدم استخدام التوجيه (أي يتم تجاهله إذا كان `guidance_scale` أقل من `1`).

negative_prompt_2 (`str` أو `list[str]`، *اختياري*) : الموجه أو الموجهات التي لا ينبغي توجيه توليد الصورة إليها، والتي سيتم إرسالها إلى `tokenizer_2` و`text_encoder_2`. إذا لم يُعرَّف، يُستخدم `negative_prompt` في كلا مشفري النص

num_inversion_steps (`int`، القيمة الافتراضية `50`) : عدد إجمالي خطوات الانعكاس المنفذة بعد استبعاد الخطوات الأولية `skip`.

skip (`float`، القيمة الافتراضية `0.15`) : الجزء من الخطوات الأولية الذي سيتم تجاهله في عملية العكس والتوليد اللاحق. تؤدي القيم الأدنى إلى إحداث تغييرات أقوى في الصورة المدخلة. يجب أن يكون `skip` بين `0` و`1`.

generator (`torch.Generator`، *اختياري*) : [`torch.Generator`](https://pytorch.org/docs/stable/generated/torch.Generator.html) لجعل عملية العكس حتمية.

crops_coords_top_left (`tuple[int]`، *اختياري*، القيمة الافتراضية (0, 0)) : يمكن استخدام `crops_coords_top_left` لتوليد صورة تبدو وكأنها "مقتطعة" من الموضع `crops_coords_top_left` إلى الأسفل. عادةً ما يتم تحقيق صور مفضلة ومركزة جيدًا عن طريق تعيين `crops_coords_top_left` إلى (0, 0). جزء من micro-conditioning الخاص بـ SDXL كما هو موضح في القسم 2.2 من [https://huggingface.co/papers/2307.01952](https://huggingface.co/papers/2307.01952).

num_zero_noise_steps (`int`، القيمة الافتراضية `3`) : عدد خطوات الانتشار النهائية التي لن تعيد إضافة الضوضاء إلى الصورة الحالية. إذا لم يتم تعيين أي خطوات إلى الصفر، فإن SD-XL عند استخدامه مع [DPMSolverMultistepScheduler](/docs/diffusers/main/ar/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler) سيُنتج شوائب ضوضاء.

cross_attention_kwargs (`dict`، *اختياري*) : قاموس kwargs يُمرَّر إلى `AttentionProcessor` إذا تم تحديده، كما هو معرَّف تحت `self.processor` في [diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py).

**يعيد:** [LEditsPPInversionPipelineOutput](/docs/diffusers/main/ar/api/pipelines/ledits_pp#diffusers.pipelines.LEditsPPInversionPipelineOutput)

ستحتوي المخرجات على صورة الإدخال المُعاد تحجيمها (أو الصور) وإعادة بناء VAE المقابلة (أو إعادة البناء).

الدالة الخاصة بخط أنابيب عكس الصور كما ورد في [ورقة LEDITS++](https://huggingface.co/papers/2301.12247). إذا تم ضبط المجدول على [DDIMScheduler](/docs/diffusers/main/ar/api/schedulers/ddim#diffusers.DDIMScheduler) فسيتم تنفيذ العكس المقترح بواسطة [edit-friendly DPDM](https://huggingface.co/papers/2304.06140) بدلاً من ذلك.

#### encode_prompt[[diffusers.LEditsPPPipelineStableDiffusionXL.encode_prompt]]

```python
encode_prompt(device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, negative_prompt: str | None = None, negative_prompt_2: str | None = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, lora_scale: float | None = None, clip_skip: int | None = None, enable_edit_guidance: bool = True, editing_prompt: str | None = None, editing_prompt_embeds: typing.Optional[torch.Tensor] = None, editing_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None)
```

[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/ledits_pp/pipeline_leditspp_stable_diffusion_xl.py#L399)

**المعاملات:**

device : (`torch.device`): جهاز torch

num_images_per_prompt (`int`) : عدد الصور التي يجب توليدها لكل موجه

negative_prompt (`str` أو `list[str]`، *اختياري*) : الموجه أو الموجهات التي لا ينبغي توجيه توليد الصورة بها. إذا لم يُعرَّف، يجب تمرير `negative_prompt_embeds` بدلاً من ذلك.

negative_prompt_2 (`str` أو `list[str]`، *اختياري*) : الموجه أو الموجهات التي لا ينبغي توجيه توليد الصورة إليها، والتي سيتم إرسالها إلى `tokenizer_2` و`text_encoder_2`. إذا لم يُعرَّف، يُستخدم `negative_prompt` في كلا مشفري النص

negative_prompt_embeds (`torch.Tensor`, *اختياري*) : تمثيلات نصية سالبة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، *مثلًا* وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد negative_prompt_embeds من معامل الإدخال `negative_prompt`.

negative_pooled_prompt_embeds (`torch.Tensor`, *اختياري*) : تمثيلات نصية مجمعة سالبة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، *مثلًا* وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد pooled negative_prompt_embeds من معامل الإدخال `negative_prompt`.

lora_scale (`float`، *اختياري*) : مقياس lora سيُطبَّق على جميع طبقات LoRA في مُشفِّر النص إذا كانت طبقات LoRA محمَّلة.

clip_skip (`int`, *اختياري*) : عدد الطبقات التي سيتم تجاوزها من CLIP أثناء حساب تمثيلات الموجه. القيمة 1 تعني أنه سيتم استخدام مخرجات الطبقة قبل الأخيرة لحساب تمثيلات الموجه.

enable_edit_guidance (`bool`) : ما إذا كان سيتم التوجيه نحو موجه التحرير أم لا.

editing_prompt (`str` أو `list[str]`، *اختياري*) : موجهات التحرير التي سيتم ترميزها. إذا لم يتم تعريفها وكان 'enable_edit_guidance' True، يجب تمرير `editing_prompt_embeds` بدلاً من ذلك.

editing_prompt_embeds (`torch.Tensor`, *اختياري*) : تمثيلات نصوص تحرير مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، *مثلًا* وزن الأوامر. إذا لم تُقدَّم وكانت قيمة 'enable_edit_guidance' هي True، فسيتم توليد editing_prompt_embeds من معامل الإدخال `editing_prompt`.

editing_pooled_prompt_embeds (`torch.Tensor`, *اختياري*) : تمثيلات نصية مجمّعة مُعدّة مسبقًا للتحرير. يمكن استخدامها لتعديل مدخلات النص بسهولة، *مثلًا* وزن الأوامر. إذا لم تُقدَّم، سيتم توليد editing_pooled_prompt_embeds المجمّعة من معامل الإدخال `editing_prompt`.

يقوم بتشفير الموجه إلى حالات مخفية لمشفّر النص.

#### get_guidance_scale_embedding[[diffusers.LEditsPPPipelineStableDiffusionXL.get_guidance_scale_embedding]]

```python
get_guidance_scale_embedding(w: Tensor, embedding_dim: int = 512, dtype: dtype = torch.float32)
```

[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/ledits_pp/pipeline_leditspp_stable_diffusion_xl.py#L696)

**المعاملات:**

w (`torch.Tensor`) : توليد متجهات تضمين بمقياس توجيه محدد لتُثري متضمينات خطوات الزمن اللاحقة.

embedding_dim (`int`، *اختياري*، القيمة الافتراضية 512) : بُعد التضمينات (embeddings) التي سيتم توليدها.

dtype (`torch.dtype`، *اختياري*، الافتراضي `torch.float32`) : نوع البيانات للتضمينات المولّدة.

**يعيد:** `torch.Tensor`

متجهات تضمين بشكل `(len(w), embedding_dim)`.

انظر إلى https://github.com/google-research/vdm/blob/dc27b98a554f65cdc654b800da5aa1846545d41b/model_vdm.py#L298

## LEditsPPDiffusionPipelineOutput[[diffusers.pipelines.LEditsPPDiffusionPipelineOutput]]

#### diffusers.pipelines.LEditsPPDiffusionPipelineOutput[[diffusers.pipelines.LEditsPPDiffusionPipelineOutput]]

```python
diffusers.pipelines.LEditsPPDiffusionPipelineOutput(images: list[PIL.Image.Image] | numpy.ndarray, nsfw_content_detected: list[bool] | None)
```

[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/ledits_pp/pipeline_output.py#L10)

**المعاملات:**

images (`list[PIL.Image.Image]` أو `np.ndarray`) : قائمة من صور PIL منزوعة الضوضاء بطول `batch_size` أو مصفوفة NumPy بأبعاد `(batch_size, height, width, num_channels)`.

nsfw_content_detected (`list[bool]`) : قائمة تُبيّن ما إذا كانت الصورة المولّدة المقابلة تحتوي على محتوى “غير آمن للعمل” (nsfw) أو `None` إذا تعذّر إجراء فحص الأمان.

فئة الإخراج لخطوط أنابيب LEdits++ Diffusion.

## LEditsPPInversionPipelineOutput[[diffusers.pipelines.LEditsPPInversionPipelineOutput]]

#### diffusers.pipelines.LEditsPPInversionPipelineOutput[[diffusers.pipelines.LEditsPPInversionPipelineOutput]]

```python
diffusers.pipelines.LEditsPPInversionPipelineOutput(images: list[PIL.Image.Image] | numpy.ndarray, vae_reconstruction_images: list[PIL.Image.Image] | numpy.ndarray)
```

[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/ledits_pp/pipeline_output.py#L28)

**المعاملات:**

input_images (`list[PIL.Image.Image]` أو `np.ndarray`) : قائمة بالصور المدخلة المقصوصة والمُعاد تحديدها كصور PIL بطول `batch_size` أو مصفوفة NumPy بأبعاد ` (batch_size, height, width, num_channels)`.

vae_reconstruction_images (`list[PIL.Image.Image]` أو `np.ndarray`) : قائمة بإعادة بناء VAE لجميع الصور المدخلة كصور PIL بطول `batch_size` أو مصفوفة NumPy بأبعاد ` (batch_size, height, width, num_channels)`.

فئة الإخراج لخطوط أنابيب LEdits++ Diffusion.

