Buckets:
InstructPix2Pix
InstructPix2Pix: Learning to Follow Image Editing Instructions من تأليف تيم بروكس وألكساندر هولنسكي وأليكسي أ. إفروس.
ملخص الورقة البحثية هو:
نقترح طريقة لتحرير الصور بناءً على تعليمات بشرية: عند تقديم صورة مدخلة وتعليمات مكتوبة توضح للنموذج ما يجب فعله، يتبع نموذجنا هذه التعليمات لتحرير الصورة. للحصول على بيانات تدريب لهذه المشكلة، ندمج معرفة نموذجين كبيرين مُسبقَي التدريب -- نموذج لغوي (GPT-3) ونموذج من النص إلى الصورة (Stable Diffusion) -- لتوليد مجموعة بيانات كبيرة من أمثلة تحرير الصور. يتم تدريب نموذج الانتشار الشرطي الخاص بنا، InstructPix2Pix، على البيانات التي ولّدناها، ويتعمم على الصور الحقيقية والتعليمات المكتوبة من المستخدمين أثناء الاستدلال. وبما أنه يؤدي التحرير في المرور الأمامي ولا يتطلب ضبطًا دقيقًا لكل مثال أو انعكاسًا، فإن نموذجنا يحرر الصور بسرعة، في غضون ثوانٍ. نُظهر نتائج تحرير مقنعة لمجموعة متنوعة من الصور المدخلة والتعليمات المكتوبة.
يمكنك العثور على معلومات إضافية حول InstructPix2Pix في الورقة البحثية، قاعدة الكود الأصلية، وتجربته في عرض توضيحي.
تأكد من الاطلاع على دليل المجدولين لمعرفة كيفية استكشاف التوازن بين سرعة المجدول وجودة النتائج، واطّلع على قسم إعادة استخدام المكونات عبر خطوط الأنابيب لمعرفة كيفية تحميل نفس المكونات بكفاءة في خطوط أنابيب متعددة.
StableDiffusionInstructPix2PixPipeline[[diffusers.StableDiffusionInstructPix2PixPipeline]]
diffusers.StableDiffusionInstructPix2PixPipeline[[diffusers.StableDiffusionInstructPix2PixPipeline]]
diffusers.StableDiffusionInstructPix2PixPipeline(vae: AutoencoderKL, text_encoder: CLIPTextModel, tokenizer: CLIPTokenizer, unet: UNet2DConditionModel, scheduler: KarrasDiffusionSchedulers, safety_checker: StableDiffusionSafetyChecker, feature_extractor: CLIPImageProcessorPil, image_encoder: transformers.models.clip.modeling_clip.CLIPVisionModelWithProjection | None = None, requires_safety_checker: bool = True)
المعاملات:
vae (AutoencoderKL) : نموذج الترميز التحويلي التبايني (VAE) لتشفير وفك تشفير الصور إلى تمثيلات كامنة ومنها.
text_encoder (CLIPTextModel) : مُشفِّر نص ثابت (clip-vit-large-patch14).
tokenizer (CLIPTokenizer) : CLIPTokenizer لتجزئة النص.
unet (UNet2DConditionModel) : نموذج UNet2DConditionModel لإزالة الضوضاء من الكامنات المُرمّزة للصورة.
scheduler (SchedulerMixin) : مُجدول يُستخدم بالاقتران مع unet لإزالة الضوضاء من كائنات الصورة المُرمّزة. يمكن أن يكون أحد DDIMScheduler أو LMSDiscreteScheduler أو PNDMScheduler.
safety_checker (StableDiffusionSafetyChecker) : وحدة تصنيف تُقدّر ما إذا كان يمكن اعتبار الصور المولّدة مسيئة أو ضارة. يُرجى الرجوع إلى بطاقة النموذج لمزيد من التفاصيل حول الأضرار المحتملة التي قد يسببها النموذج.
feature_extractor (CLIPImageProcessor) : مُعالج صور CLIPImageProcessor لاستخراج الميزات من الصور المولّدة؛ يُستخدم كمدخلات لـ safety_checker.
خط أنابيب لتحرير الصور على مستوى البكسلات باتباع تعليمات نصية (مبني على Stable Diffusion).
يرث هذا النموذج من DiffusionPipeline. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة المُنفَّذة لجميع خطوط الأنابيب (التنزيل، الحفظ، التشغيل على جهاز معين، إلخ).
تورث خط الأنابيب أيضًا طرق التحميل التالية:
- load_textual_inversion() لتحميل تضمينات الانعكاس النصي
- load_lora_weights() لتحميل أوزان LoRA
- save_lora_weights() لحفظ أوزان LoRA
- load_ip_adapter() لتحميل وحدات IP Adapter
call[[diffusers.StableDiffusionInstructPix2PixPipeline.call]]
__call__(prompt: str | list[str] = None, image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, num_inference_steps: int = 100, guidance_scale: float = 7.5, image_guidance_scale: float = 1.5, negative_prompt: str | list[str] | None = None, num_images_per_prompt: int | None = 1, eta: float = 0.0, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_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, ip_adapter_image_embeds: list[torch.Tensor] | None = None, output_type: str | None = 'pil', return_dict: bool = True, callback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], cross_attention_kwargs: dict[str, typing.Any] | None = None, **kwargs)
المعاملات:
prompt (str أو list[str]، اختياري) : الأمر أو الأوامر التي تُوجّه توليد الصورة. إذا لم تُعرَّف، يجب عليك تمرير prompt_embeds.
image (torch.Tensor np.ndarray، PIL.Image.Image، list[torch.Tensor]، list[PIL.Image.Image]، أو list[np.ndarray]) : Image أو tensor يمثل دفعة من الصور لإعادة رسمها وفقًا لـ prompt. يمكن أيضًا قبول كامنات الصور كـ image، ولكن إذا تم تمرير الكامنات مباشرةً فلن يتم ترميزها مرة أخرى.
num_inference_steps (int، اختياري، القيمة الافتراضية 100) : عدد خطوات إزالة الضوضاء. تؤدي زيادة عدد خطوات إزالة الضوضاء عادةً إلى صورة ذات جودة أعلى على حساب بطء الاستدلال.
guidance_scale (float, اختياري, القيمة الافتراضية 7.5) : كلما زادت قيمة مقياس التوجيه، شجّع النموذج على توليد صور مرتبطة ارتباطًا وثيقًا بنص prompt على حساب انخفاض جودة الصورة. يتم تفعيل مقياس التوجيه عندما يكون guidance_scale > 1.
image_guidance_scale (float، اختياري، القيمة الافتراضية 1.5) : يدفع الصورة المولَّدة نحو الصورة الأولية image. يتم تفعيل مقياس توجيه الصورة عن طريق تعيين image_guidance_scale > 1. كلما زاد مقياس توجيه الصورة، شجّع ذلك على توليد صور مرتبطة ارتباطًا وثيقًا بالصورة المصدر image، وعادةً على حساب انخفاض جودة الصورة. تتطلب هذه المسار قيمة لا تقل عن 1.
negative_prompt (str أو list[str]، اختياري) : الأمر أو الأوامر التي توجّه ما يجب عدم تضمينه في توليد الصورة. إذا لم يُعرَّف، يجب عليك تمرير negative_prompt_embeds بدلاً من ذلك. يتم تجاهله عند عدم استخدام التوجيه (guidance_scale < 1).
num_images_per_prompt (int، اختياري، القيمة الافتراضية 1) : عدد الصور التي سيتم توليدها لكل موجه.
eta (float، اختياري، القيمة الافتراضية 0.0) : يتوافق مع المعامل eta (η) من ورقة DDIM. ينطبق فقط على DDIMScheduler، ويُتجاهل في جدولة أخرى.
generator (torch.Generator، اختياري) : torch.Generator لجعل التوليد حتميًا.
latents (torch.Tensor، اختياري) : كامنات ضجيج مُولّدة مسبقًا، مُستخرجة من توزيع غاوسي، تُستخدم كمدخلات لتوليد الصور. يمكن استخدامها لتعديل نفس التوليد باستخدام أوامر مختلفة. إذا لم تُقدَّم، يتم توليد كامنات من خلال الاستخراج باستخدام generator العشوائي المُقدَّم.
prompt_embeds (torch.Tensor، اختياري) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة (وزن الأوامر). إذا لم تُقدَّم، يتم توليد تمثيلات النص من معامل الإدخال prompt.
negative_prompt_embeds (torch.Tensor، اختياري) : تمثيلات نصية سالبة مُولّدة مسبقًا. يمكن استخدامها لضبط مدخلات النص بسهولة (وزن الموجه). إذا لم تُقدَّم، يتم توليد negative_prompt_embeds من معامل الإدخال negative_prompt.
ip_adapter_image : (PipelineImageInput، اختياري): إدخال صورة اختياري للعمل مع IP Adapters.
ip_adapter_image_embeds (list[torch.Tensor], اختياري) : تمثيلات صور مُولّدة مسبقًا لـ IP-Adapter. يجب أن يكون قائمة بطول يساوي عدد وحدات IP-adapter. يجب أن يكون كل عنصر منها متجهًا (tensor) بشكل (batch_size, num_images, emb_dim). يجب أن يحتوي على تمثيل الصورة السلبية إذا كان do_classifier_free_guidance مضبوطًا على True. إذا لم يُقدَّم، تُحسب التمثيلات من معامل الإدخال ip_adapter_image.
output_type (str، اختياري، الافتراضي "pil") : صيغة الصورة المولّدة. اختر بين PIL.Image أو np.array.
return_dict (bool، اختياري، القيمة الافتراضية True) : ما إذا كان يجب إرجاع StableDiffusionPipelineOutput بدلاً من tuple عادي.
callback_on_step_end (Callable، PipelineCallback، MultiPipelineCallbacks، اختياري) : دالة أو فئة فرعية من PipelineCallback أو MultiPipelineCallbacks تُستدعى في نهاية كل خطوة إزالة ضوضاء أثناء الاستدلال، مع الحُجج التالية: 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) الخاص بك.
cross_attention_kwargs (dict، اختياري) : قاموس kwargs يُمرَّر إلى AttentionProcessor إذا تم تحديده، كما هو معرّف في self.processor.
يعيد: StableDiffusionPipelineOutput أو tuple
إذا كان return_dict هو True، يُعاد StableDiffusionPipelineOutput، وإلا يُعاد tuple حيث يكون العنصر الأول قائمة بالصور المولّدة والعنصر الثاني قائمة من قيم bool تشير إلى ما إذا كانت الصورة المولّدة المقابلة تحتوي على محتوى "غير آمن للعمل" (nsfw).
دالة الاستدعاء call لخط الأنابيب pipeline الخاص بالتوليد.
أمثلة:
>>> import PIL
>>> import requests
>>> import torch
>>> from io import BytesIO
>>> from diffusers import StableDiffusionInstructPix2PixPipeline
>>> def download_image(url):
... response = requests.get(url)
... return PIL.Image.open(BytesIO(response.content)).convert("RGB")
>>> img_url = "https://huggingface.co/datasets/diffusers/diffusers-images-docs/resolve/main/mountain.png"
>>> image = download_image(img_url).resize((512, 512))
>>> pipe = StableDiffusionInstructPix2PixPipeline.from_pretrained(
... "timbrooks/instruct-pix2pix", torch_dtype=torch.float16
... )
>>> pipe = pipe.to("cuda")
>>> prompt = "make the mountains snowy"
>>> image = pipe(prompt=prompt, image=image).images[0]
load_textual_inversion[[diffusers.StableDiffusionInstructPix2PixPipeline.load_textual_inversion]]
load_textual_inversion(pretrained_model_name_or_path: str | list[str] | dict[str, torch.Tensor] | list[dict[str, torch.Tensor]], token: str | list[str] | None = None, tokenizer: 'PreTrainedTokenizer' | None = None, text_encoder: 'PreTrainedModel' | None = None, **kwargs)
المعاملات:
pretrained_model_name_or_path (str أو os.PathLike أو list[str or os.PathLike] أو Dict أو list[Dict]) : يمكن أن يكون أيًا مما يلي أو قائمة به: - نص، وهو معرف النموذج (مثل sd-concepts-library/low-poly-hd-logos-icons) لنموذج مُدرَّب مسبقًا مستضاف على Hub. - مسار إلى مجلد (مثل ./my_text_inversion_directory/) يحتوي على أوزان العكس النصي. - مسار إلى ملف (مثل ./my_text_inversions.pt) يحتوي على أوزان العكس النصي. - قاموس حالة torch.
token (str أو list[str]، اختياري) : تجاوز الرمز المستخدم لأوزان الانعكاس النصي. إذا كان pretrained_model_name_or_path قائمة، فيجب أن يكون token أيضًا قائمة بطول متساوٍ.
text_encoder (CLIPTextModel، اختياري) : مُشفِّر نص ثابت (clip-vit-large-patch14). إذا لم يُحدد، ستأخذ الدالة self.tokenizer.
tokenizer (CLIPTokenizer، اختياري) : CLIPTokenizer لتجزئة النص. إذا لم يُحدد، ستأخذ الدالة self.tokenizer.
weight_name (str، اختياري) : اسم ملف الأوزان المخصص. يجب استخدام هذا عند: - كان ملف الانعكاس النصي المحفوظ بصيغة 🤗 Diffusers، لكنه حُفظ باسم أوزان محدد مثل text_inv.bin. - كان ملف الانعكاس النصي المحفوظ بصيغة Automatic1111.
cache_dir (str | os.PathLike، اختياري) : مسار إلى مجلد حيث تُخزَّن مؤقتًا إعدادات النموذج المُسبق التحميل المُحمَّل إذا لم يُستخدم التخزين المؤقت القياسي.
force_download (bool، اختياري، القيمة الافتراضية False) : ما إذا كان يجب إجبار إعادة تنزيل أوزان النموذج وملفات الإعداد، مع تجاوز النسخ المخزنة مؤقتًا إذا كانت موجودة.
proxies (dict[str, str]، اختياري) : قاموس لخوادم الوكيل (proxy servers) للاستخدام حسب البروتوكول أو نقطة النهاية، على سبيل المثال، {'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. تُستخدم هذه الوكلاء في كل طلب.
local_files_only (bool، اختياري، القيمة الافتراضية False) : ما إذا كان سيتم تحميل أوزان النموذج المحلية وملفات الإعداد فقط أم لا. إذا تم ضبطه على True، فلن يتم تنزيل النموذج من Hub.
hf_token (str أو bool، اختياري) : الرمز الذي يُستخدم كتوكن مصادقة HTTP bearer للملفات البعيدة. إذا كان True، يُستخدم التوكن المولّد من diffusers-cli login (المخزَّن في ~/.huggingface).
revision (str، اختياري، القيمة الافتراضية "main") : إصدار النموذج المحدد الذي سيتم استخدامه. يمكن أن يكون اسم فرع، أو اسم وسم، أو معرف التزامن، أو أي معرّف مسموح به بواسطة Git.
subfolder (str، اختياري، القيمة الافتراضية "") : موقع المجلد الفرعي لملف النموذج داخل مستودع نموذج أكبر على Hub أو محليًا.
mirror (str، اختياري) : مصدر مرآة لحل مشاكل إمكانية الوصول إذا كنت تقوم بتنزيل نموذج في الصين. نحن لا نضمن حداثة المصدر أو أمانه، وينبغي لك الرجوع إلى موقع المرآة لمزيد من المعلومات.
حمّل ترميزات Textual Inversion في مُشفِّر النص الخاص بـ StableDiffusionPipeline (يُؤمَّن دعم كلا الصيغتين: 🤗 Diffusers وAutomatic1111).
مثال:
لتحميل متجه تضمين Textual Inversion بصيغة 🤗 Diffusers:
from diffusers import StableDiffusionPipeline
import torch
model_id = "stable-diffusion-v1-5/stable-diffusion-v1-5"
pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16).to("cuda")
pipe.load_textual_inversion("sd-concepts-library/cat-toy")
prompt = "A <cat-toy> backpack"
image = pipe(prompt, num_inference_steps=50).images[0]
image.save("cat-backpack.png")
لتحميل متجه تضمين Textual Inversion بصيغة Automatic1111، تأكد أولاً من تنزيل المتجه (على سبيل المثال من civitAI) ثم قم بتحميل المتجه
محليًا:
from diffusers import StableDiffusionPipeline
import torch
model_id = "stable-diffusion-v1-5/stable-diffusion-v1-5"
pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16).to("cuda")
pipe.load_textual_inversion("./charturnerv2.pt", token="charturnerv2")
prompt = "charturnerv2, multiple views of the same character in the same outfit, a character turnaround of a woman wearing a black jacket and red shirt, best quality, intricate details."
image = pipe(prompt, num_inference_steps=50).images[0]
image.save("character.png")
load_lora_weights[[diffusers.StableDiffusionInstructPix2PixPipeline.load_lora_weights]]
load_lora_weights(pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor], adapter_name: str | None = None, hotswap: bool = False, **kwargs)
المعاملات:
pretrained_model_name_or_path_or_dict (str أو os.PathLike أو dict) : راجع lora_state_dict().
adapter_name (str، اختياري) : اسم المُكيّف (Adapter) الذي سيُستخدم للإشارة إلى نموذج المُكيّف المُحمّل. إذا لم يُحدد، فسيُستخدم default_{i} حيث i هو العدد الإجمالي للمُكيّفات قيد التحميل.
low_cpu_mem_usage (bool، اختياري) : تسريع تحميل النموذج من خلال تحميل أوزان LoRA المُسبقة التدريب فقط دون تهيئة الأوزان العشوائية.
hotswap (bool, اختياري) : القيمة الافتراضية هي False. ما إذا كان يجب استبدال مُكيّف (LoRA) موجود بمُكيّف جديد تم تحميله في مكانه. وهذا يعني أنه، بدلاً من تحميل مُكيّف إضافي، سيتم أخذ أوزان المُكيّف الحالي واستبدالها بأوزان المُكيّف الجديد. يمكن أن يكون هذا أسرع وأكثر كفاءة في استخدام الذاكرة. ومع ذلك، فإن الميزة الرئيسية للاستبدال الساخن هي أنه عند تجميع النموذج باستخدام torch.compile، فإن تحميل المُكيّف الجديد لا يتطلب إعادة تجميع النموذج. عند استخدام الاستبدال الساخن، يجب أن يكون adapter_name المُمرَّر هو اسم مُكيّف تم تحميله بالفعل. إذا كان للمُكيّف الجديد والمُكيّف القديم رتب مختلفة و/أو قيم LoRA alpha (أي التوسع)، فستحتاج إلى استدعاء طريقة إضافية قبل تحميل المُكيّف: py pipeline = ... # load diffusers pipeline max_rank = ... # the highest rank among all LoRAs that you want to load # call *before* compiling and loading the LoRA adapter pipeline.enable_lora_hotswap(target_rank=max_rank) pipeline.load_lora_weights(file_name) # optionally compile the model now لاحظ أن استبدال مُكيّفات مُشفّر النص غير مدعوم بعد. هناك بعض القيود الإضافية على هذه التقنية، وهي موثقة هنا: https://huggingface.co/docs/peft/main/en/package_reference/hotswap
kwargs (dict، اختياري) : راجع lora_state_dict().
حمّل أوزان LoRA المحددة في pretrained_model_name_or_path_or_dict إلى self.unet وself.text_encoder.
تُمرَّر جميع معاملات kwargs إلى self.lora_state_dict.
راجع lora_state_dict() لمزيد من التفاصيل حول كيفية تحميل قاموس الحالة.
راجع load_lora_into_unet() لمزيد من التفاصيل حول كيفية تحميل قاموس الحالة في self.unet.
راجع load_lora_into_text_encoder() لمزيد من التفاصيل حول كيفية تحميل state dict في self.text_encoder.
save_lora_weights[[diffusers.StableDiffusionInstructPix2PixPipeline.save_lora_weights]]
save_lora_weights(save_directory: str | os.PathLike, unet_lora_layers: dict[str, typing.Union[torch.nn.Module, torch.Tensor]] = None, text_encoder_lora_layers: dict[str, torch.nn.Module] = None, is_main_process: bool = True, weight_name: str = None, save_function: typing.Callable = None, safe_serialization: bool = True, unet_lora_adapter_metadata = None, text_encoder_lora_adapter_metadata = None)
المعاملات:
save_directory (str أو os.PathLike) : المجلد الذي سيتم حفظ معلمات LoRA فيه. سيتم إنشاؤه إذا لم يكن موجودًا.
unet_lora_layers (dict[str, torch.nn.Module] أو dict[str, torch.Tensor]) : قاموس الحالة (State dict) لطبقات LoRA المقابلة لـ unet.
text_encoder_lora_layers (dict[str, torch.nn.Module] أو dict[str, torch.Tensor]) : قاموس الحالة (State dict) لطبقات LoRA المقابلة لـ text_encoder. يجب تمرير قاموس حالة LoRA الخاص بمشفر النص صراحةً لأنه يأتي من 🤗 Transformers.
is_main_process (bool، اختياري، القيمة الافتراضية True) : ما إذا كان العملية التي تستدعي هذا هي العملية الرئيسية أم لا. مفيد أثناء التدريب الموزع عندما تحتاج إلى استدعاء هذه الدالة على جميع العمليات. في هذه الحالة، اضبط is_main_process=True على العملية الرئيسية فقط لتجنب حالات السباق.
save_function (Callable) : الدالة المستخدمة لحفظ قاموس الحالة. مفيدة أثناء التدريب الموزع عندما تحتاج إلى استبدال torch.save بطريقة أخرى. يمكن ضبطها باستخدام متغير البيئة DIFFUSERS_SAVE_MODE.
safe_serialization (bool، اختياري، الافتراضي True) : ما إذا كان سيتم حفظ النموذج باستخدام safetensors أو بالطريقة التقليدية الخاصة بـ PyTorch باستخدام pickle.
unet_lora_adapter_metadata : بيانات الوصف (metadata) الخاصة بمحوّل LoRA المرتبط بـ unet والتي سيتم تسلسلها مع state dict.
text_encoder_lora_adapter_metadata : بيانات الوصف (البيانات الوصفية) الخاصة بمحوّل LoRA المرتبط بترميز النص، والتي سيتم تسلسلها مع قاموس الحالة.
احفظ معاملات LoRA المقابلة لـ UNet ومشفّر النص.
StableDiffusionXLInstructPix2PixPipeline[[diffusers.StableDiffusionXLInstructPix2PixPipeline]]
diffusers.StableDiffusionXLInstructPix2PixPipeline[[diffusers.StableDiffusionXLInstructPix2PixPipeline]]
diffusers.StableDiffusionXLInstructPix2PixPipeline(vae: AutoencoderKL, text_encoder: CLIPTextModel, text_encoder_2: CLIPTextModelWithProjection, tokenizer: CLIPTokenizer, tokenizer_2: CLIPTokenizer, unet: UNet2DConditionModel, scheduler: KarrasDiffusionSchedulers, force_zeros_for_empty_prompt: bool = True, add_watermarker: bool | None = None, is_cosxl_edit: bool | None = False)
المعاملات:
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 (SchedulerMixin) : مُجدول يُستخدم بالاقتران مع unet لإزالة الضوضاء من كائنات الصورة المُرمّزة. يمكن أن يكون أحد DDIMScheduler أو LMSDiscreteScheduler أو PNDMScheduler.
requires_aesthetics_score (bool، اختياري، القيمة الافتراضية "False") : ما إذا كان unet يتطلب تمرير شرط aesthetic_score أثناء الاستدلال. راجع أيضًا إعدادات stabilityai/stable-diffusion-xl-refiner-1-0.
force_zeros_for_empty_prompt (bool، اختياري، القيمة الافتراضية "True") : ما إذا كان يجب إجبار تضمينات الموجه السلبي على أن تكون دائمًا 0. راجع أيضًا إعدادات stabilityai/stable-diffusion-xl-base-1-0.
add_watermarker (bool, اختياري) : ما إذا كان سيتم استخدام مكتبة invisible_watermark لإضافة علامة مائية إلى الصور المُخرَجة. إذا لم يُعرَّف، فسيكون الافتراضي True إذا كانت الحزمة مثبّتة، وإلا فلن تُستخدم أي أداة لإضافة علامة مائية.
is_cosxl_edit (bool، اختياري) : عند تعيينه، يتم تحجيم الكمونيات (latents) للصور.
خط أنابيب لتحرير الصور على مستوى البكسلات باتباع تعليمات نصية. مبني على Stable Diffusion XL.
يرث هذا النموذج من DiffusionPipeline. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع خطوط الأنابيب (مثل التنزيل أو الحفظ، أو التشغيل على جهاز معين، وما إلى ذلك).
تورث خط الأنابيب أيضًا طرق التحميل التالية:
- load_textual_inversion() لتحميل تضمينات الانعكاس النصي
- from_single_file() لتحميل ملفات
.ckpt - load_lora_weights() لتحميل أوزان LoRA
- save_lora_weights() لحفظ أوزان LoRA
call[[diffusers.StableDiffusionXLInstructPix2PixPipeline.call]]
__call__(prompt: str | list[str] = None, prompt_2: str | list[str] | None = None, image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, height: int | None = None, width: int | None = None, num_inference_steps: int = 100, denoising_end: float | None = None, guidance_scale: float = 5.0, image_guidance_scale: float = 1.5, negative_prompt: str | list[str] | None = None, negative_prompt_2: str | list[str] | None = None, num_images_per_prompt: int | None = 1, eta: float = 0.0, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, output_type: str | None = 'pil', return_dict: bool = True, callback: typing.Optional[typing.Callable[[int, int, torch.Tensor], NoneType]] = None, callback_steps: int = 1, cross_attention_kwargs: dict[str, typing.Any] | None = None, guidance_rescale: float = 0.0, original_size: tuple[int, int] = None, crops_coords_top_left: tuple[int, int] = (0, 0), target_size: tuple[int, int] = None)
المعاملات:
prompt (str أو list[str]، اختياري) : الأمر أو الأوامر التي تُوجّه توليد الصورة. إذا لم يُعرَّف، يجب تمرير prompt_embeds بدلاً من ذلك.
prompt_2 (str أو list[str]، اختياري) : الموجه أو الموجهات المرسل إلى tokenizer_2 وtext_encoder_2. إذا لم يُعرَّف، يُستخدم prompt في كلا مشفّري النص
image (torch.Tensor أو PIL.Image.Image أو np.ndarray أو list[torch.Tensor] أو list[PIL.Image.Image] أو list[np.ndarray]) : الصورة أو الصور التي سيتم تعديلها باستخدام خط الأنابيب.
height (int، اختياري، القيمة الافتراضية هي self.unet.config.sample_size * self.vae_scale_factor) : ارتفاع الصورة المولّدة بالبكسل.
width (int، اختياري، القيمة الافتراضية هي self.unet.config.sample_size * self.vae_scale_factor) : عرض الصورة المولدة بالبكسل.
num_inference_steps (int، اختياري، القيمة الافتراضية 50) : عدد خطوات إزالة الضوضاء. تؤدي زيادة عدد خطوات إزالة الضوضاء عادةً إلى صورة ذات جودة أعلى على حساب بطء الاستدلال.
denoising_end (float، اختياري) : عند تحديده، يحدد نسبة (بين 0.0 و 1.0) من إجمالي عملية إزالة الضوضاء التي يجب إكمالها قبل إنهائها مبكرًا عمدًا. ونتيجةً لذلك، سيحتفظ العينة المُعاد بها بكمية كبيرة من الضوضاء كما تحددها الخطوات الزمنية المنفصلة التي يختارها المجدول. ينبغي استخدام معامل denoising_end بشكل مثالي عندما يشكل هذا الخط الأنابيب جزءًا من إعداد متعدد الخطوط الأنابيب "خليط من مُزيلات الضوضاء"، كما هو موضح في تحسين مخرجات الصورة
guidance_scale (float، اختياري، القيمة الافتراضية 5.0) : مقياس التوجيه كما هو مُعرَّف في Classifier-Free Diffusion Guidance. يُعرَّف guidance_scale على أنه w من المعادلة 2. في Imagen Paper. يتم تفعيل مقياس التوجيه عن طريق تعيين guidance_scale > 1. يشجع مقياس التوجيه الأعلى على توليد صور مرتبطة ارتباطًا وثيقًا بنص prompt، وعادةً على حساب انخفاض جودة الصورة.
image_guidance_scale (float، اختياري، القيمة الافتراضية 1.5) : مقياس توجيه الصورة يُستخدم لدفع الصورة المولّدة نحو الصورة الأولية image. يتم تفعيل مقياس توجيه الصورة عن طريق تعيين image_guidance_scale > 1. كلما زاد مقياس توجيه الصورة، شجّع ذلك على توليد صور مرتبطة ارتباطًا وثيقًا بالصورة المصدر image، وعادةً على حساب انخفاض جودة الصورة. تتطلب هذه المسار قيمة لا تقل عن 1.
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_images_per_prompt (int، اختياري، القيمة الافتراضية 1) : عدد الصور التي سيتم توليدها لكل موجه.
eta (float، اختياري، القيمة الافتراضية 0.0) : يتوافق مع المعامل eta (η) في ورقة DDIM: https://huggingface.co/papers/2010.02502. ينطبق فقط على schedulers.DDIMScheduler، وسيتم تجاهله في الحالات الأخرى.
generator (torch.Generator أو list[torch.Generator]، اختياري) : مولّد واحد أو قائمة من مولّدات torch لجعل التوليد حتميًا.
latents (torch.Tensor، اختياري) : كامنات ضجيج مُولّدة مسبقًا، مُستخرجة من توزيع غاوسي، تُستخدم كمدخلات لتوليد الصور. يمكن استخدامها لتعديل نفس التوليد باستخدام أوامر مختلفة. إذا لم تُقدَّم، سيتم توليد كامنات من خلال الاستخراج باستخدام generator العشوائي المُقدَّم.
prompt_embeds (torch.Tensor، اختياري) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد تمثيلات النص من معامل الإدخال prompt.
negative_prompt_embeds (torch.Tensor, اختياري) : تمثيلات نصية سالبة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد negative_prompt_embeds من معامل الإدخال negative_prompt.
pooled_prompt_embeds (torch.Tensor، اختياري) : تمثيلات نصية مجمّعة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد تمثيلات نصية مجمّعة من معامل الإدخال prompt.
negative_pooled_prompt_embeds (torch.Tensor, اختياري) : تمثيلات نصية مجمعة سالبة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد pooled negative_prompt_embeds من معامل الإدخال negative_prompt.
output_type (str، اختياري، القيمة الافتراضية "pil") : صيغة الصورة الناتجة عن عملية التوليد. اختر بين PIL: PIL.Image.Image أو np.array.
return_dict (bool، اختياري، القيمة الافتراضية True) : ما إذا كان يجب إرجاع ~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput بدلاً من tuple عادي.
callback (Callable، اختياري) : دالة ستُستدعى كل callback_steps خطوات أثناء الاستدلال. سيتم استدعاء الدالة مع الحُجج التالية: callback(step: int, timestep: int, latents: torch.Tensor).
callback_steps (int، اختياري، القيمة الافتراضية 1) : التكرار الذي تُستدعى فيه دالة callback. إذا لم يتم تحديده، فستُستدعى الدالة في كل خطوة.
cross_attention_kwargs (dict، اختياري) : قاموس kwargs يُمرَّر إلى AttentionProcessor إذا تم تحديده، كما هو معرَّف تحت self.processor في diffusers.models.attention_processor.
guidance_rescale (float, optional, defaults to 0.0) : 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.
original_size (tuple[int]، اختياري، القيمة الافتراضية (1024, 1024)) : إذا لم تكن original_size مطابقة لـ target_size، فسيبدو أن الصورة قد خضعت لتقليل أو زيادة حجمها. القيمة الافتراضية لـ original_size هي (height, width) إذا لم تُحدد. جزء من التكييف الدقيق (micro-conditioning) الخاص بـ SDXL كما هو موضح في القسم 2.2 من https://huggingface.co/papers/2307.01952.
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 على الارتفاع والعرض المطلوبين للصورة المولّدة. إذا لم يُحدد، فسيكون الافتراضي (height, width). جزء من التكييف الدقيق (micro-conditioning) في SDXL كما هو موضح في القسم 2.2 من https://huggingface.co/papers/2307.01952.
يعيد: ~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput أو tuple
~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput إذا كان return_dict هو True، وإلا tuple. عند إرجاع tuple، يكون العنصر الأول قائمة تحتوي على الصور المولّدة.
الدالة التي تُستدعى عند استدعاء خط الأنابيب للتوليد.
أمثلة:
>>> import torch
>>> from diffusers import StableDiffusionXLInstructPix2PixPipeline
>>> from diffusers.utils import load_image
>>> resolution = 768
>>> image = load_image(
... "https://hf.co/datasets/diffusers/diffusers-images-docs/resolve/main/mountain.png"
... ).resize((resolution, resolution))
>>> edit_instruction = "Turn sky into a cloudy one"
>>> pipe = StableDiffusionXLInstructPix2PixPipeline.from_pretrained(
... "diffusers/sdxl-instructpix2pix-768", torch_dtype=torch.float16
... ).to("cuda")
>>> edited_image = pipe(
... prompt=edit_instruction,
... image=image,
... height=resolution,
... width=resolution,
... guidance_scale=3.0,
... image_guidance_scale=1.5,
... num_inference_steps=30,
... ).images[0]
>>> edited_image
encode_prompt[[diffusers.StableDiffusionXLInstructPix2PixPipeline.encode_prompt]]
encode_prompt(prompt: str, prompt_2: str | None = None, device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, do_classifier_free_guidance: bool = True, negative_prompt: str | None = None, negative_prompt_2: str | None = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, lora_scale: float | None = None)
المعاملات:
prompt (str أو list[str]، اختياري) : النص الذي سيتم ترميزه
prompt_2 (str أو list[str]، اختياري) : الموجه أو الموجهات المرسل إلى tokenizer_2 وtext_encoder_2. إذا لم يُعرَّف، يُستخدم 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 في كلا مشفري النص
prompt_embeds (torch.Tensor، اختياري) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد تمثيلات النص من معامل الإدخال prompt.
negative_prompt_embeds (torch.Tensor, اختياري) : تمثيلات نصية سالبة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد negative_prompt_embeds من معامل الإدخال negative_prompt.
pooled_prompt_embeds (torch.Tensor، اختياري) : تمثيلات نصية مجمّعة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد تمثيلات نصية مجمّعة من معامل الإدخال prompt.
negative_pooled_prompt_embeds (torch.Tensor, اختياري) : تمثيلات نصية مجمعة سالبة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد pooled negative_prompt_embeds من معامل الإدخال negative_prompt.
lora_scale (float، اختياري) : مقياس lora سيُطبَّق على جميع طبقات LoRA في مُشفِّر النص إذا كانت طبقات LoRA محمَّلة.
يقوم بتشفير الموجه إلى حالات مخفية لمشفّر النص.
Xet Storage Details
- Size:
- 52 kB
- Xet hash:
- a233acc2ff5a1685700da92492e584881efc1cb74a1460a64384fd16a105a7b7
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.