Diffusers documentation

LEDITS++

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

LEDITS++

LoRA

قُدم LEDITS++ في LEDITS++: Limitless Image Editing using Text-to-Image Models بواسطة 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 .

يمكنك العثور على معلومات إضافية حول LEDITS++ في صفحة المشروع وتجربته في عرض توضيحي.

بسبب بعض مشاكل التوافق العكسي مع التنفيذ الحالي لـ DPMSolverMultistepScheduler في مكتبة diffusers، لم يعد بإمكان هذا التنفيذ من LEdits++ ضمان عكس مثالي. من غير المرجح أن يكون لهذا الخطأ أي تأثير ملحوظ في حالات الاستخدام العملية. ومع ذلك، نوفر تنفيذاً بديلاً يضمن عكس مثالياً في مستودع GitHub مخصص.

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

LEditsPPPipelineStableDiffusion

فئة diffusers.LEditsPPPipelineStableDiffusion

< >

( vae: AutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizerunet: UNet2DConditionModelscheduler: diffusers.schedulers.scheduling_ddim.DDIMScheduler | diffusers.schedulers.scheduling_dpmsolver_multistep.DPMSolverMultistepSchedulersafety_checker: StableDiffusionSafetyCheckerfeature_extractor: CLIPImageProcessorPilrequires_safety_checker: bool = True )

المعاملات

  • vae (AutoencoderKL) — نموذج الترميز التبايني التلقائي (VAE) لتشفير وفك تشفير الصور إلى تمثيلات كامنة ومنها.
  • text_encoder (CLIPTextModel) — مُشفِّر نص ثابت. يستخدم Stable Diffusion الجزء النصي من CLIP، وتحديداً النسخة clip-vit-large-patch14.
  • tokenizer (CLIPTokenizer) — مُقسِّم من الفئة CLIPTokenizer.
  • unet (UNet2DConditionModel) — بنية U-Net الشرطية لإزالة الضوضاء من الكامنات المُرمّزة للصورة.
  • scheduler (DPMSolverMultistepScheduler أو DDIMScheduler) — جدول زمني يُستخدم بالاقتران مع unet لإزالة الضوضاء من كائنات الصورة المُرمّزة. يمكن أن يكون أحد DPMSolverMultistepScheduler أو DDIMScheduler. إذا تم تمرير أي جدول زمني آخر، فسيتم ضبطه تلقائيًا على DPMSolverMultistepScheduler.
  • safety_checker (StableDiffusionSafetyChecker) — وحدة تصنيف تُقدّر ما إذا كانت الصور المولّدة يمكن اعتبارها مسيئة أو ضارة. يرجى الرجوع إلى بطاقة النموذج للاطلاع على التفاصيل.
  • feature_extractor (CLIPImageProcessor) — نموذج يستخرج الميزات من الصور المولّدة لاستخدامها كمدخلات لـ safety_checker.

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

يرث هذا النموذج من DiffusionPipeline ويُبنى على أساس StableDiffusionPipeline. راجع توثيق الفئة الأصلية للاطلاع على الطرق العامة المُنفَّذة لجميع خطوط الأنابيب (التنزيل، الحفظ، التشغيل على جهاز معين، وما إلى ذلك).

__call__

< >

( negative_prompt: str | list[str] | None = Nonegenerator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Noneoutput_type: str | None = 'pil'return_dict: bool = Trueediting_prompt: str | list[str] | None = Noneediting_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonereverse_editing_direction: bool | list[bool] | None = Falseedit_guidance_scale: float | list[float] | None = 5edit_warmup_steps: int | list[int] | None = 0edit_cooldown_steps: int | list[int] | None = Noneedit_threshold: float | list[float] | None = 0.9user_mask: typing.Optional[torch.Tensor] = Nonesem_guidance: list[torch.Tensor] | None = Noneuse_cross_attn_mask: bool = Falseuse_intersect_mask: bool = Trueattn_store_steps: list[int] | None = []store_averaged_over_steps: bool = Truecross_attention_kwargs: dict[str, typing.Any] | None = Noneguidance_rescale: float = 0.0clip_skip: int | None = Nonecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']**kwargs ) → LEditsPPDiffusionPipelineOutput or tuple

المعاملات

  • negative_prompt (str أو list[str]، اختياري) — الموجّه أو الموجّهات التي لا ينبغي استخدامها لتوجيه توليد الصورة. يتم تجاهلها عند عدم استخدام التوجيه (أي يتم تجاهلها إذا كان guidance_scale أقل من 1).
  • generator (torch.Generator، اختياري) — واحد أو قائمة من مولّدات torch لجعل التوليد حتميًا.
  • output_type (str، اختياري، القيمة الافتراضية "pil") — صيغة مخرجات توليد الصورة. اختر بين PIL: PIL.Image.Image أو np.array.
  • return_dict (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب إرجاع 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++.
  • 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++.
  • 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++.
  • use_intersect_mask (bool، القيمة الافتراضية True) — ما إذا كان يُحسب حدّ الأقنعة (masking) على أنه تقاطع بين أقنعة الانتباه المتقاطع (cross-attention masks) والأقنعة المشتقة من تقدير الضوضاء. تُعرَّف أقنعة الانتباه المتقاطع على أنها ‘M^1’ والأقنعة المشتقة من تقدير الضوضاء على أنها ‘M^2’ في المعادلة 12 من ورقة LEDITS++.
  • attn_store_steps (list[int]، اختياري) — الخطوات التي تُخزَّن فيها خرائط الانتباه في AttentionStore. لأغراض العرض المرئي فقط.
  • store_averaged_over_steps (bool، القيمة الافتراضية True) — ما إذا كانت خرائط الانتباه الخاصة بـ ‘attn_store_steps’ تُخزَّن مُتوسَّطةً عبر خطوات الانتشار. إذا كانت القيمة False، تُخزَّن خرائط الانتباه لكل خطوة بشكل منفصل. لأغراض العرض المرئي فقط.
  • cross_attention_kwargs (dict، اختياري) — قاموس kwargs يُمرَّر إلى AttentionProcessor كما هو معرَّف في self.processor إذا تمَّ تحديده.
  • guidance_rescale (float, optional, defaults to 0.0) — Guidance rescale factor from Common Diffusion Noise Schedules and Sample Steps are Flawed. 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 أو tuple

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 bools denoting whether the corresponding generated image likely represents "not-safe-for-work" (nsfw) content, according to the safety_checker`.

دالة الاستدعاء لخط الأنابيب للتعديل. يجب استدعاء الطريقة invert() مسبقاً. سيتم تنفيذ التعديلات دائماً على آخر صورة أو صور معكوسة.

أمثلة:

>>> 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]

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.5num_inversion_steps: int = 30skip: float = 0.15generator: typing.Optional[torch.Generator] = Nonecross_attention_kwargs: dict[str, typing.Any] | None = Noneclip_skip: int | None = Noneheight: int | None = Nonewidth: int | None = Noneresize_mode: str | None = 'default'crops_coords: tuple[int, int, int, int] | None = None ) → LEditsPPInversionPipelineOutput

المعاملات

  • 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 لجعل عملية العكس حتمية.
  • cross_attention_kwargs (dict، اختياري) — قاموس kwargs يُمرَّر إلى AttentionProcessor كما هو معرَّف في self.processor إذا تمَّ تحديده.
  • 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، فلن يتم قص الصورة.

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

الدالة الخاصة بخط أنابيب عكس الصور كما ورد في ورقة LEDITS++. إذا تم ضبط المجدول على DDIMScheduler فسيتم تنفيذ عكس الصور المقترح بواسطة edit-friendly DPDM بدلاً من ذلك.

encode_prompt

< >

( devicenum_images_per_promptenable_edit_guidancenegative_prompt = Noneediting_prompt = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Noneediting_prompt_embeds: typing.Optional[torch.Tensor] = Nonelora_scale: float | None = Noneclip_skip: int | None = None )

المعاملات

  • 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

< >

( vae: AutoencoderKLtext_encoder: CLIPTextModeltext_encoder_2: CLIPTextModelWithProjectiontokenizer: CLIPTokenizertokenizer_2: CLIPTokenizerunet: UNet2DConditionModelscheduler: diffusers.schedulers.scheduling_dpmsolver_multistep.DPMSolverMultistepScheduler | diffusers.schedulers.scheduling_ddim.DDIMSchedulerimage_encoder: CLIPVisionModelWithProjection = Nonefeature_extractor: CLIPImageProcessorPil = Noneforce_zeros_for_empty_prompt: bool = Trueadd_watermarker: bool | None = None )

المعاملات

  • vae (AutoencoderKL) — نموذج الترميز التبايني التلقائي (VAE) لتشفير وفك تشفير الصور إلى تمثيلات كامنة ومنها.
  • text_encoder (CLIPTextModel) — مُشفِّر نص ثابت. يستخدم Stable Diffusion XL الجزء النصي من CLIP، وتحديداً النسخة clip-vit-large-patch14.
  • text_encoder_2 (CLIPTextModelWithProjection) — المُشفِّر النصي الثاني المُجمَّد. يستخدم Stable Diffusion XL الجزء النصي والجزء المُجمَّع (pool) من CLIP، وتحديداً النسخة laion/CLIP-ViT-bigG-14-laion2B-39B-b160k.
  • tokenizer (CLIPTokenizer) — مُقسِّم من الفئة CLIPTokenizer.
  • tokenizer_2 (CLIPTokenizer) — المُرمِّز الثاني من الفئة CLIPTokenizer.
  • unet (UNet2DConditionModel) — بنية U-Net الشرطية لإزالة الضوضاء من الكامنات المُرمّزة للصورة.
  • scheduler (DPMSolverMultistepScheduler أو DDIMScheduler) — جدول زمني يُستخدم بالاقتران مع unet لإزالة الضوضاء من كائنات الصورة المُرمّزة. يمكن أن يكون أحد DPMSolverMultistepScheduler أو DDIMScheduler. إذا تم تمرير أي جدول زمني آخر، فسيتم ضبطه تلقائيًا على DPMSolverMultistepScheduler.
  • force_zeros_for_empty_prompt (bool، اختياري، القيمة الافتراضية "True") — ما إذا كان يجب إجبار تضمينات الموجه السلبي على أن تكون دائمًا 0. راجع أيضًا إعدادات stabilityai/stable-diffusion-xl-base-1-0.
  • add_watermarker (bool، اختياري) — ما إذا كان سيتم استخدام مكتبة invisible_watermark لإضافة علامة مائية على الصور الناتجة. إذا لم يُعرَّف، فسيكون الافتراضي True إذا كانت الحزمة مثبّتة، وإلا فلن تُستخدم أي علامة مائية.

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

يرث هذا النموذج من DiffusionPipeline ويُبنى على أساس StableDiffusionXLPipeline. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة المُنفَّذة لجميع خطوط الأنابيب (التنزيل، الحفظ، التشغيل على جهاز معين، إلخ).

بالإضافة إلى ذلك، يرث خط الأنابيب طرق التحميل التالية:

وكذلك طرق الحفظ التالية:

  • LoRA: loaders.StableDiffusionXLPipeline.save_lora_weights

__call__

< >

( denoising_end: float | None = Nonenegative_prompt: str | list[str] | None = Nonenegative_prompt_2: str | list[str] | None = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Noneip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecross_attention_kwargs: dict[str, typing.Any] | None = Noneguidance_rescale: float = 0.0crops_coords_top_left: tuple = (0, 0)target_size: tuple[int, int] | None = Noneediting_prompt: str | list[str] | None = Noneediting_prompt_embeddings: typing.Optional[torch.Tensor] = Noneediting_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonereverse_editing_direction: bool | list[bool] | None = Falseedit_guidance_scale: float | list[float] | None = 5edit_warmup_steps: int | list[int] | None = 0edit_cooldown_steps: int | list[int] | None = Noneedit_threshold: float | list[float] | None = 0.9sem_guidance: list[torch.Tensor] | None = Noneuse_cross_attn_mask: bool = Falseuse_intersect_mask: bool = Falseuser_mask: typing.Optional[torch.Tensor] = Noneattn_store_steps: list[int] | None = []store_averaged_over_steps: bool = Trueclip_skip: int | None = Nonecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']**kwargs ) → LEditsPPDiffusionPipelineOutput or tuple

المعاملات

  • 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، اختياري) — تضمينات نصية مجمعة سالبة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن المحفّز. إذا لم تُقدَّم، فسيتم توليد تضمينات negative_prompt_embeds المجمعة من معامل الإدخال negative_prompt.
  • ip_adapter_image — (PipelineImageInput، اختياري): مدخل صورة اختياري للعمل مع IP Adapters.
  • output_type (str، اختياري، القيمة الافتراضية "pil") — صيغة مخرجات توليد الصورة. اختر بين PIL: 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 إذا تمَّ تحديده.
  • guidance_rescale (float, optional, defaults to 0.7) — Guidance rescale factor proposed by Common Diffusion Noise Schedules and Sample Steps are Flawed guidance_scale is defined as φ in equation 16. of Common Diffusion Noise Schedules and Sample Steps are Flawed. 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.
  • target_size (tuple[int]، اختياري، القيمة الافتراضية (1024, 1024)) — في معظم الحالات، يجب ضبط target_size على الارتفاع والعرض المطلوبين للصورة المولّدة. إذا لم يُحدَّد، فسيكون الافتراضي (width, height). وهو جزء من التكييف الدقيق (micro-conditioning) في SDXL كما هو موضح في القسم 2.2 من 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++.
  • 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++.
  • sem_guidance (list[torch.Tensor]، اختياري) — قائمة من متجهات التوجيه المُولَّدة مسبقًا لتُطبَّق أثناء التوليد. يجب أن يتطابق طول القائمة مع num_inference_steps.
  • use_cross_attn_mask — ما إذا كانت أقنعة الانتباه المتقاطع تُستخدم. تُستخدم أقنعة الانتباه المتقاطع دائمًا عند ضبط use_intersect_mask على true. تُعرَّف أقنعة الانتباه المتقاطع على أنها ‘M^1’ من المعادلة 12 في ورقة LEDITS++.
  • use_intersect_mask — ما إذا كان حد القناع يُحسب كتقاطع بين أقنعة الانتباه المتقاطع والأقنعة المشتقة من تقدير الضوضاء. تُعرَّف أقنعة الانتباه المتقاطع على أنها ‘M^1’ والأقنعة المشتقة من تقدير الضوضاء على أنها ‘M^2’ في المعادلة 12 من ورقة LEDITS++.
  • 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 أو tuple

LEditsPPDiffusionPipelineOutput إذا كان return_dict هو True، وإلا فسيكون `tuple. عند إرجاع tuple، يكون العنصر الأول قائمة تحتوي على الصور المولّدة.

دالة الاستدعاء لخط الأنابيب للتعديل. يجب استدعاء الطريقة invert() مسبقاً. ستتم التعديلات دائماً على آخر صورة معكوسة أو صور معكوسة.

أمثلة:

>>> 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]

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.5negative_prompt: str = Nonenegative_prompt_2: str = Nonenum_inversion_steps: int = 50skip: float = 0.15generator: typing.Optional[torch.Generator] = Nonecrops_coords_top_left: tuple = (0, 0)num_zero_noise_steps: int = 3cross_attention_kwargs: dict[str, typing.Any] | None = Noneheight: int | None = Nonewidth: int | None = Noneresize_mode: str | None = 'default'crops_coords: tuple[int, int, int, int] | None = None ) → LEditsPPInversionPipelineOutput

المعاملات

  • 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 لجعل عملية العكس حتمية.
  • 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.
  • num_zero_noise_steps (int، القيمة الافتراضية 3) — عدد خطوات الانتشار النهائية التي لن تعيد إضافة الضوضاء إلى الصورة الحالية. إذا لم يتم تعيين أي خطوات إلى الصفر، فسيؤدي استخدام SD-XL مع DPMSolverMultistepScheduler إلى ظهور شوائب ضوضائية.
  • cross_attention_kwargs (dict، اختياري) — قاموس kwargs يُمرَّر إلى AttentionProcessor كما هو معرَّف تحت self.processor في diffusers.models.attention_processor إذا تمَّ تحديده.

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

الدالة الخاصة بخط أنابيب عكس الصور كما ورد في ورقة LEDITS++. إذا تم ضبط المجدول على DDIMScheduler فسيتم تنفيذ عكس الصور المقترح بواسطة edit-friendly DPDM بدلاً من ذلك.

encode_prompt

< >

( device: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1negative_prompt: str | None = Nonenegative_prompt_2: str | None = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonelora_scale: float | None = Noneclip_skip: int | None = Noneenable_edit_guidance: bool = Trueediting_prompt: str | None = Noneediting_prompt_embeds: typing.Optional[torch.Tensor] = Noneediting_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None )

المعاملات

  • 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، اختياري) — تضمينات نصية مجمعة سالبة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن المحفّز. إذا لم تُقدَّم، فسيتم توليد تضمينات 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]، اختياري) — موجّهات التحرير (prompt) التي سيتم ترميزها. إذا لم يتم تعريفها وكان ‘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

< >

( w: Tensorembedding_dim: int = 512dtype: dtype = torch.float32 ) → torch.Tensor

المعاملات

  • 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

< >

( images: list[PIL.Image.Image] | numpy.ndarraynsfw_content_detected: list[bool] | None )

المعاملات

  • 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

< >

( images: list[PIL.Image.Image] | numpy.ndarrayvae_reconstruction_images: list[PIL.Image.Image] | numpy.ndarray )

المعاملات

  • 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.

Update on GitHub