Diffusers documentation
Stable Diffusion XL
Stable Diffusion XL
قُدم Stable Diffusion XL (SDXL) في SDXL: Improving Latent Diffusion Models for High-Resolution Image Synthesis بواسطة Dustin Podell وZion English وKyle Lacey وAndreas Blattmann وTim Dockhorn وJonas Müller وJoe Penna وRobin Rombach.
ملخص الورقة البحثية هو:
نقدّم SDXL، وهو نموذج انتشار كامن لتوليد الصور من النص. مقارنةً بالإصدارات السابقة من Stable Diffusion، يستفيد SDXL من هيكل UNet أكبر بثلاث مرات: يعود سبب زيادة عدد معاملات النموذج بشكل رئيسي إلى وجود المزيد من كتل الانتباه وسياق انتباه متقاطع أكبر، حيث يستخدم SDXL مشفّر نصي ثانٍ. صمّمنا عدة مخططات تكييف جديدة وقمنا بتدريب SDXL على نسب أبعاد متعددة. كما نقدم نموذج تحسين يُستخدم لتحسين الدقة البصرية للعينات التي يولّدها SDXL باستخدام تقنية من صورة إلى صورة بعد التوليد. نُظهر أن SDXL يُظهر أداءً محسّنًا بشكل كبير مقارنةً بالإصدارات السابقة من Stable Diffusion، ويحقق نتائج تنافسية مع تلك التي تحققها أحدث مولدات الصور المغلقة.
نصائح
- من المعروف أن استخدام SDXL مع جدولة DPM++ لعدد خطوات أقل من 50 ينتج عنه تشوهات بصرية بسبب عدم الاستقرار العددي للمُحلِّل. لمعالجة هذه المشكلة، راجع هذا طلب الدمج الذي يوصي فيما يتعلق بمُحلِّلات ODE/SDE بـ:
- اضبط
use_karras_sigmas=Trueأوlu_lambdas=Trueلتحسين جودة الصورة - اضبط
euler_at_final=Trueإذا كنت تستخدم محللًا بحجم خطوات موحّد (DPM++2M أو DPM++2M SDE)
- اضبط
- يعمل معظم نقاط التفتيش (checkpoints) الخاصة بـ SDXL بشكل أفضل مع حجم صورة 1024x1024. يتم أيضًا دعم أحجام الصور 768x768 و 512x512، لكن النتائج لا تكون بنفس الجودة. لا يُنصح بأي حجم أقل من 512x512، ومن المرجح أن يستمر هذا الوضع بالنسبة لنقاط التفتيش الافتراضية مثل stabilityai/stable-diffusion-xl-base-1.0.
- يمكن لـ SDXL تمرير موجه مختلف لكل من مشفّرات النص التي تم تدريبه عليها. بل يمكننا تمرير أجزاء مختلفة من نفس الموجه إلى مشفّرات النص.
- يمكن تحسين صور المخرجات من SDXL من خلال استخدام نموذج تحسين (Refiner) في إعداد تحويل الصورة إلى صورة.
- يوفر SDXL المعاملات
negative_original_sizeوnegative_crops_coords_top_leftوnegative_target_sizeلفرض شروط سلبية على النموذج فيما يتعلق بمعايير دقة الصورة وقصّها.
اطّلع على منظمة Stability AI على Hub للحصول على نقاط التفتيش الرسمية لنماذج الأساس والمُحسّن!
تأكد من تثبيت المكتبات التالية.
# uncomment to install the necessary libraries in Colab
#!pip install -q diffusers transformers accelerate invisible-watermark>=0.2.0نوصي بتثبيت مكتبة invisible-watermark للمساعدة في تحديد الصور المولّدة. إذا كانت مكتبة invisible-watermark مثبّتة، فسيتم استخدامها افتراضيًا. لتعطيل أداة العلامة المائية:
pipeline = StableDiffusionXLPipeline.from_pretrained(..., add_watermarker=False)
تحميل نقاط التفتيش للنماذج
قد تُخزَّن أوزان النموذج في مجلدات فرعية منفصلة على Hub أو محليًا، وفي هذه الحالة، يجب عليك استخدام طريقة from_pretrained():
from diffusers import StableDiffusionXLPipeline, StableDiffusionXLImg2ImgPipeline
import torch
pipeline = StableDiffusionXLPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0", dtype=torch.float16, variant="fp16", use_safetensors=True
).to("cuda") # or "mps", "xpu", "cpu"
refiner = StableDiffusionXLImg2ImgPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-refiner-1.0", dtype=torch.float16, use_safetensors=True, variant="fp16"
).to("cuda")يمكنك أيضًا استخدام طريقة from_single_file() لتحميل نقطة تحقق لنموذج مخزّنة في صيغة ملف واحد (.ckpt أو .safetensors) من Hub أو محليًا:
from diffusers import StableDiffusionXLPipeline, StableDiffusionXLImg2ImgPipeline
import torch
pipeline = StableDiffusionXLPipeline.from_single_file(
"https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/blob/main/sd_xl_base_1.0.safetensors",
dtype=torch.float16
).to("cuda") # or "mps", "xpu", "cpu"
refiner = StableDiffusionXLImg2ImgPipeline.from_single_file(
"https://huggingface.co/stabilityai/stable-diffusion-xl-refiner-1.0/blob/main/sd_xl_refiner_1.0.safetensors", dtype=torch.float16
).to("cuda")النص إلى صورة
في حالة النص إلى صورة، مرّر موجهًا نصيًا. افتراضيًا، يولّد SDXL صورة بأبعاد 1024x1024 للحصول على أفضل النتائج. يمكنك تجربة ضبط المعاملين height وwidth على 768x768 أو 512x512، لكن أي أبعاد أقل من 512x512 من غير المرجح أن تعمل.
from diffusers import AutoPipelineForText2Image
import torch
pipeline_text2image = AutoPipelineForText2Image.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0", dtype=torch.float16, variant="fp16", use_safetensors=True
).to("cuda") # or "mps", "xpu", "cpu"
prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"
image = pipeline_text2image(prompt=prompt).images[0]
image
من صورة إلى صورة
في حالة التحويل من صورة إلى صورة، يعمل SDXL بشكل خاص جيد مع أحجام الصور بين 768x768 و1024x1024. مرّر صورة أولية، وموجّهًا نصيًا لتكييف الصورة باستخدام:
from diffusers import AutoPipelineForImage2Image
from diffusers.utils import load_image, make_image_grid
# use from_pipe to avoid consuming additional memory when loading a checkpoint
pipeline = AutoPipelineForImage2Image.from_pipe(pipeline_text2image).to("cuda") # or "mps", "xpu", "cpu"
url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/sdxl-text2img.png"
init_image = load_image(url)
prompt = "a dog catching a frisbee in the jungle"
image = pipeline(prompt, image=init_image, strength=0.8, guidance_scale=10.5).images[0]
make_image_grid([init_image, image], rows=1, cols=2)
الترميم
لتطبيق تقنية إعادة الرسم (Inpainting)، ستحتاج إلى الصورة الأصلية وقناع (Mask) يحدد الجزء الذي تريد استبداله في الصورة الأصلية. أنشئ وصفًا (Prompt) يصف ما تريد استبدال منطقة القناع به.
from diffusers import AutoPipelineForInpainting
from diffusers.utils import load_image, make_image_grid
# use from_pipe to avoid consuming additional memory when loading a checkpoint
pipeline = AutoPipelineForInpainting.from_pipe(pipeline_text2image).to("cuda") # or "mps", "xpu", "cpu"
img_url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/sdxl-text2img.png"
mask_url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/sdxl-inpaint-mask.png"
init_image = load_image(img_url)
mask_image = load_image(mask_url)
prompt = "A deep sea diver floating"
image = pipeline(prompt=prompt, image=init_image, mask_image=mask_image, strength=0.85, guidance_scale=12.5).images[0]
make_image_grid([init_image, mask_image, image], rows=1, cols=3)
تحسين جودة الصورة
يتضمن SDXL نموذج تحسين متخصصًا في إزالة الضوضاء من الصور في مرحلة الضوضاء المنخفضة لتوليد صور ذات جودة أعلى من النموذج الأساسي. هناك طريقتان لاستخدام نموذج التحسين:
- استخدم نموذجي الأساس والمُحسّن معًا لإنتاج صورة مُحسّنة
- استخدم النموذج الأساسي لإنتاج صورة، ثم استخدم نموذج المُحسّن (refiner) لإضافة مزيد من التفاصيل إلى الصورة (وهذا هو الأسلوب الذي تم تدريب SDXL عليه في الأصل)
النموذج الأساسي + نموذج التحسين
عند استخدام النموذج الأساسي ونموذج المُحسّن معًا لتوليد صورة، يُعرف ذلك بـ مجموعة من مُزيلات الضوضاء المتخصصة. تتطلب طريقة مجموعة مُزيلات الضوضاء المتخصصة عددًا أقل من خطوات إزالة الضوضاء الإجمالية مقارنةً بتمرير مخرجات النموذج الأساسي إلى نموذج المُحسّن، لذا يجب أن يكون تشغيلها أسرع بشكل ملحوظ. ومع ذلك، لن تتمكن من فحص مخرجات النموذج الأساسي لأنها لا تزال تحتوي على كمية كبيرة من الضوضاء.
بوصفه مجموعة من خبراء إزالة الضوضاء، يعمل النموذج الأساسي كخبير خلال مرحلة الانتشار عالية الضوضاء، بينما يعمل نموذج التحسين كخبير خلال مرحلة الانتشار منخفضة الضوضاء. حمّل النموذج الأساسي ونموذج التحسين:
from diffusers import DiffusionPipeline
import torch
base = DiffusionPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0", dtype=torch.float16, variant="fp16", use_safetensors=True
).to("cuda") # or "mps", "xpu", "cpu"
refiner = DiffusionPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-refiner-1.0",
text_encoder_2=base.text_encoder_2,
vae=base.vae,
dtype=torch.float16,
use_safetensors=True,
variant="fp16",
).to("cuda")لاستخدام هذا النهج، عليك تحديد عدد خطوات الزمن لكل نموذج ليمر عبر مراحله الخاصة. بالنسبة للنموذج الأساسي، يتم التحكم في ذلك عبر معامل denoising_end، وبالنسبة لنموذج التحسين، يتم التحكم فيه عبر معامل denoising_start.
يجب أن تكون المعاملات
denoising_endوdenoising_startأرقامًا عشرية بين 0 و1. تُعبَّر هذه المعاملات كنسبة من خطوات الزمن المنفصلة كما يحددها المجدول. إذا كنت تستخدم أيضًا معاملstrength، فسيتم تجاهله لأن عدد خطوات إزالة الضوضاء يُحدَّد بواسطة خطوات الزمن المنفصلة التي تم تدريب النموذج عليها والنقطة التقطعية الكسرية المُعلَنة.
لنقم بإعداد denoising_end=0.8 بحيث يؤدي النموذج الأساسي 80% الأولى من إزالة الضوضاء على خطوات الزمن ذات الضوضاء العالية، ونضبط denoising_start=0.8 بحيث يؤدي نموذج التصفية 20% الأخيرة من إزالة الضوضاء على خطوات الزمن ذات الضوضاء المنخفضة. يجب أن يكون مخرَج النموذج الأساسي في فضاء الكامن بدلاً من صورة PIL.
prompt = "A majestic lion jumping from a big stone at night"
image = base(
prompt=prompt,
num_inference_steps=40,
denoising_end=0.8,
output_type="latent",
).images
image = refiner(
prompt=prompt,
num_inference_steps=40,
denoising_start=0.8,
image=image,
).images[0]
image
يمكن أيضًا استخدام نموذج المُحسّن (refiner) لعملية التعبئة (inpainting) في StableDiffusionXLInpaintPipeline:
from diffusers import StableDiffusionXLInpaintPipeline
from diffusers.utils import load_image, make_image_grid
import torch
base = StableDiffusionXLInpaintPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0", dtype=torch.float16, variant="fp16", use_safetensors=True
).to("cuda") # or "mps", "xpu", "cpu"
refiner = StableDiffusionXLInpaintPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-refiner-1.0",
text_encoder_2=base.text_encoder_2,
vae=base.vae,
dtype=torch.float16,
use_safetensors=True,
variant="fp16",
).to("cuda")
img_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo.png"
mask_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo_mask.png"
init_image = load_image(img_url)
mask_image = load_image(mask_url)
prompt = "A majestic tiger sitting on a bench"
num_inference_steps = 75
high_noise_frac = 0.7
image = base(
prompt=prompt,
image=init_image,
mask_image=mask_image,
num_inference_steps=num_inference_steps,
denoising_end=high_noise_frac,
output_type="latent",
).images
image = refiner(
prompt=prompt,
image=image,
mask_image=mask_image,
num_inference_steps=num_inference_steps,
denoising_start=high_noise_frac,
).images[0]
make_image_grid([init_image, mask_image, image.resize((512, 512))], rows=1, cols=3)يعمل هذا الأسلوب القائم على مجموعة من خبراء إزالة الضوضاء بشكل جيد مع جميع مجدوليات التوقيت المتاحة!
النموذج الأساسي إلى نموذج التحسين
يحصل SDXL على تعزيز في جودة الصورة من خلال استخدام نموذج المُحسّن (refiner) لإضافة تفاصيل عالية الجودة إضافية إلى الصورة المُزالة الضوضاء بالكامل من النموذج الأساسي، في إعداد تحويل الصورة إلى صورة.
حمّل نموذج الأساس ونموذج التحسين:
from diffusers import DiffusionPipeline
import torch
base = DiffusionPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0", dtype=torch.float16, variant="fp16", use_safetensors=True
).to("cuda") # or "mps", "xpu", "cpu"
refiner = DiffusionPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-refiner-1.0",
text_encoder_2=base.text_encoder_2,
vae=base.vae,
dtype=torch.float16,
use_safetensors=True,
variant="fp16",
).to("cuda")يمكنك استخدام SDXL refiner مع نموذج أساسي مختلف. على سبيل المثال، يمكنك استخدام خطوط أنابيب Hunyuan-DiT أو PixArt-Sigma لتوليد صور بامتثال أفضل للتعليمات النصية. بمجرد توليد صورة، يمكنك تمريرها إلى نموذج SDXL refiner لتعزيز جودة التوليد النهائي.
أنشئ صورة من النموذج الأساسي، واضبط مخرجات النموذج على فضاء latent:
prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"
image = base(prompt=prompt, output_type="latent").images[0]مرّر الصورة المولّدة إلى نموذج التحسين:
image = refiner(prompt=prompt, image=image[None, :]).images[0]
لعملية inpainting، حمّل النموذج الأساسي ونموذج التحسين في StableDiffusionXLInpaintPipeline، واحذف المعاملين denoising_end وdenoising_start، واختر عددًا أقل من خطوات الاستدلال لنموذج التحسين.
التكييف الدقيق
يتضمن تدريب SDXL عدة تقنيات إضافية للتحكم الشرطي، تُعرف باسم micro-conditioning. وتشمل هذه التقنيات حجم الصورة الأصلي، وحجم الصورة المستهدفة، ومعلمات القص. يمكن استخدام هذه الشروط الدقيقة في وقت الاستدلال لإنشاء صور عالية الجودة ومركزة.
يمكنك استخدام كلا من معلمات التكييف الدقيق (micro-conditioning) والتكييف الدقيق السلبي (negative micro-conditioning) بفضل التوجيه الحر من التصنيف (classifier-free guidance). وهي متاحة في StableDiffusionXLPipeline وStableDiffusionXLImg2ImgPipeline وStableDiffusionXLInpaintPipeline وStableDiffusionXLControlNetPipeline.
شرط الحجم
هناك نوعان من تكييف الحجم:
تأتي حالة
original_sizeمن الصور المُكبَّرة في دفعة التدريب (لأنه من المهدر للتخلص من الصور الأصغر التي تشكّل ما يقرب من 40% من إجمالي بيانات التدريب). وبهذه الطريقة، يتعلم SDXL أن آثار التكبير لا ينبغي أن تكون موجودة في الصور عالية الدقة. أثناء الاستدلال، يمكنك استخدامoriginal_sizeللإشارة إلى دقة الصورة الأصلية. يؤدي استخدام القيمة الافتراضية(1024, 1024)إلى إنتاج صور ذات جودة أعلى تشبه صور 1024x1024 في مجموعة البيانات. إذا اخترت استخدام دقة أقل، مثل(256, 256)، فإن النموذج لا يزال يولّد صوراً بدقة 1024x1024، لكنها ستبدو كصور الدقة المنخفضة (أنماط أبسط، ضبابية) في مجموعة البيانات.تأتي حالة
target_sizeمن ضبط SDXL الدقيق لدعم نسب أبعاد الصور المختلفة. أثناء الاستدلال، إذا استخدمت القيمة الافتراضية(1024, 1024)، فستحصل على صورة تشبه تكوين الصور المربعة في مجموعة البيانات. ننصح باستخدام القيمة نفسها لكل منtarget_sizeوoriginal_size، لكن لا تتردد في تجربة خيارات أخرى!
🤗 يتيح لك Diffusers أيضًا تحديد شروط سلبية تتعلق بحجم الصورة لتوجيه عملية التوليد بعيدًا عن دقات صور معينة:
from diffusers import StableDiffusionXLPipeline
import torch
pipe = StableDiffusionXLPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0", dtype=torch.float16, variant="fp16", use_safetensors=True
).to("cuda") # or "mps", "xpu", "cpu"
prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"
image = pipe(
prompt=prompt,
negative_original_size=(512, 512),
negative_target_size=(1024, 1024),
).images[0]
شرطية المحاصيل
قد تبدو الصور المولّدة بواسطة نماذج Stable Diffusion السابقة وكأنها مقصوصة أحياناً. والسبب في ذلك أن الصور تُقصّ فعلياً أثناء التدريب بحيث تكون جميع الصور في الدفعة (batch) بنفس الحجم. من خلال الاشتراط على إحداثيات القص، يتعلّم SDXL أن عدم القص - الإحداثيات (0, 0) - يرتبط عادةً بمواضيع متمركزة ووجوه كاملة (وهذا هو القيمة الافتراضية في 🤗 Diffusers). يمكنك تجربة إحداثيات مختلفة إذا كنت ترغب في توليد تكوينات غير متمركزة!
from diffusers import StableDiffusionXLPipeline
import torch
pipeline = StableDiffusionXLPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0", dtype=torch.float16, variant="fp16", use_safetensors=True
).to("cuda") # or "mps", "xpu", "cpu"
prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"
image = pipeline(prompt=prompt, crops_coords_top_left=(256, 0)).images[0]
image
يمكنك أيضًا تحديد إحداثيات قصّ سالبة لتوجيه عملية التوليد بعيدًا عن معلمات قصّ معينة:
from diffusers import StableDiffusionXLPipeline
import torch
pipe = StableDiffusionXLPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0", dtype=torch.float16, variant="fp16", use_safetensors=True
).to("cuda") # or "mps", "xpu", "cpu"
prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"
image = pipe(
prompt=prompt,
negative_original_size=(512, 512),
negative_crops_coords_top_left=(0, 0),
negative_target_size=(1024, 1024),
).images[0]
imageاستخدم موجهًا مختلفًا لكل مشفّر نص
يستخدم SDXL مشفّري نصّين، لذا يمكن تمرير موجه مختلف إلى كل مشفّر نصّ، مما قد يحسّن الجودة. مرّر موجهك الأصلي إلى prompt والموجه الثاني إلى prompt_2 (استخدم negative_prompt وnegative_prompt_2 إذا كنت تستخدم موجهات سلبية):
from diffusers import StableDiffusionXLPipeline
import torch
pipeline = StableDiffusionXLPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0", dtype=torch.float16, variant="fp16", use_safetensors=True
).to("cuda") # or "mps", "xpu", "cpu"
# prompt is passed to OAI CLIP-ViT/L-14
prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"
# prompt_2 is passed to OpenCLIP-ViT/bigG-14
prompt_2 = "Van Gogh painting"
image = pipeline(prompt=prompt, prompt_2=prompt_2).images[0]
image
تدعم مشفّرات النص المزدوجة أيضًا تضمينات الانعكاس النصي التي يجب تحميلها بشكل منفصل كما هو موضح في دليل الانعكاس النصي.
التحسينات
SDXL هو نموذج كبير، وقد تحتاج إلى تحسين الذاكرة لتشغيله على جهازك. فيما يلي بعض النصائح لتوفير الذاكرة وتسريع الاستدلال.
- قم بإسناد النموذج إلى وحدة المعالجة المركزية باستخدام enable_model_cpu_offload() للتعامل مع أخطاء نفاد الذاكرة:
- base.to("cuda") # or "mps", "xpu", "cpu"
- refiner.to("cuda")
+ base.enable_model_cpu_offload()
+ refiner.enable_model_cpu_offload()- استخدم
torch.compileللحصول على تسريع بنسبة ~20% (يتطلبtorch>=2.0):
+ base.unet = torch.compile(base.unet, mode="reduce-overhead", fullgraph=True)
+ refiner.unet = torch.compile(refiner.unet, mode="reduce-overhead", fullgraph=True)- فعّل xFormers لتشغيل SDXL إذا كان
torch<2.0:
+ base.enable_xformers_memory_efficient_attention()
+ refiner.enable_xformers_memory_efficient_attention()الموارد
إذا كنت مهتمًا بالتجربة مع نسخة مبسطة من UNet2DConditionModel المستخدمة في SDXL، فتفضل بالاطلاع على تطبيق minSDXL المكتوب بلغة PyTorch والمتوافق مباشرةً مع 🤗 Diffusers.
StableDiffusionXLPipeline
فئة diffusers.StableDiffusionXLPipeline
< source >( vae: AutoencoderKLtext_encoder: CLIPTextModeltext_encoder_2: CLIPTextModelWithProjectiontokenizer: CLIPTokenizertokenizer_2: CLIPTokenizerunet: UNet2DConditionModelscheduler: KarrasDiffusionSchedulersimage_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 (SchedulerMixin) —
مجدول يُستخدم بالاقتران مع
unetلإزالة الضوضاء من كائنات الصورة المُرمّزة. يمكن أن يكون أحد DDIMScheduler أو LMSDiscreteScheduler أو PNDMScheduler. - force_zeros_for_empty_prompt (
bool، اختياري، القيمة الافتراضية"True") — ما إذا كان يجب إجبار تضمينات الموجه السلبي على أن تكون دائمًا 0. راجع أيضًا إعداداتstabilityai/stable-diffusion-xl-base-1-0. - add_watermarker (
bool، اختياري) — ما إذا كان سيتم استخدام مكتبة invisible_watermark لإضافة علامة مائية على الصور الناتجة. إذا لم يُعرَّف، فسيكون الافتراضي True إذا كانت الحزمة مثبّتة، وإلا فلن تُستخدم أي علامة مائية.
خط أنابيب لتوليد الصور من النص باستخدام Stable Diffusion XL.
يرث هذا النموذج من DiffusionPipeline. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع خطوط الأنابيب (مثل التنزيل أو الحفظ، أو التشغيل على جهاز معين، وما إلى ذلك).
تورث خط الأنابيب أيضًا طرق التحميل التالية:
- load_textual_inversion() لتحميل تضمينات الانعكاس النصي
- from_single_file() لتحميل ملفات
.ckpt - load_lora_weights() لتحميل أوزان LoRA
- save_lora_weights() لحفظ أوزان LoRA
- load_ip_adapter() لتحميل وحدات IP Adapter
__call__
< source >( prompt: str | list[str] = Noneprompt_2: str | list[str] | None = Noneheight: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 50timesteps: list = Nonesigmas: list = Nonedenoising_end: float | None = Noneguidance_scale: float = 5.0negative_prompt: str | list[str] | None = Nonenegative_prompt_2: str | list[str] | None = Nonenum_images_per_prompt: int | None = 1eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_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] = Noneip_adapter_image_embeds: list[torch.Tensor] | None = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecross_attention_kwargs: dict[str, typing.Any] | None = Noneguidance_rescale: float = 0.0original_size: tuple[int, int] | None = Nonecrops_coords_top_left: tuple = (0, 0)target_size: tuple[int, int] | None = Nonenegative_original_size: tuple[int, int] | None = Nonenegative_crops_coords_top_left: tuple = (0, 0)negative_target_size: tuple[int, int] | None = Noneclip_skip: int | None = Nonecallback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']**kwargs ) → ~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput or tuple
المعاملات
- prompt (
strأوlist[str]، اختياري) — الموجّه أو الموجّهات التي توجّه توليد الصورة. إذا لم يُعرَّف، يجب تمريرprompt_embedsبدلاً من ذلك. - prompt_2 (
strأوlist[str]، اختياري) — الموجّه أو الموجّهات المرسل إلىtokenizer_2وtext_encoder_2. إذا لم يُعرَّف، يُستخدمpromptفي كلا مشفّري النص - height (
int، اختياري، القيمة الافتراضية هي self.unet.config.sample_size * self.vae_scale_factor) — ارتفاع الصورة المولّدة بالبكسل. يتم ضبطه على 1024 افتراضيًا للحصول على أفضل النتائج. أي قيمة أقل من 512 بكسل لن تعمل بشكل جيد مع stabilityai/stable-diffusion-xl-base-1.0 والمحطات التفتيشية التي لم يتم ضبطها بدقة خصيصًا على الدقات المنخفضة. - width (
int، اختياري، القيمة الافتراضية هي self.unet.config.sample_size * self.vae_scale_factor) — عرض الصورة المولدة بالبكسلات. يتم ضبطه على 1024 افتراضيًا للحصول على أفضل النتائج. أي قيمة أقل من 512 بكسل لن تعمل بشكل جيد مع stabilityai/stable-diffusion-xl-base-1.0 والمحطات التفتيشية التي لم يتم ضبطها بدقة بشكل خاص على الدقات المنخفضة. - num_inference_steps (
int، اختياري، القيمة الافتراضية 50) — عدد خطوات إزالة الضوضاء. تؤدي زيادة عدد خطوات إزالة الضوضاء عادةً إلى صورة بجودة أعلى على حساب بطء الاستدلال. - timesteps (
list[int], اختياري) — خطوات زمنية مخصصة لاستخدامها في عملية إزالة الضوضاء مع المجدولين الذين يدعمون معاملtimestepsفي طريقةset_timestepsالخاصة بهم. إذا لم يُعرَّف، فسيتم استخدام السلوك الافتراضي عند تمريرnum_inference_steps. يجب أن تكون بترتيب تنازلي. - sigmas (
list[float]، اختياري) — قيم sigmas مخصصة لاستخدامها في عملية إزالة الضوضاء مع المجدولين الذين يدعمون معاملsigmasفي طريقةset_timestepsالخاصة بهم. إذا لم يُعرَّف، فسيتم استخدام السلوك الافتراضي عند تمريرnum_inference_steps. - 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النصي، وعادةً على حساب انخفاض جودة الصورة. - 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، اختياري) — كائنات latents ضجيجية مُولّدة مسبقًا، مُستخرجة من توزيع غاوسي، تُستخدم كمدخلات لتوليد الصور. يمكن استخدامها لتعديل نفس التوليد باستخدام أوامر مختلفة. إذا لم تُقدَّم، سيتم توليد كائن latents عن طريق الاستخراج باستخدام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، اختياري) — تضمينات نصية مجمعة سالبة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن المحفّز. إذا لم تُقدَّم، فسيتم توليد تضمينات 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: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.0) — Guidance rescale factor proposed by Common Diffusion Noise Schedules and Sample Steps are Flawedguidance_scaleis 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. - negative_original_size (
tuple[int]، اختياري، القيمة الافتراضية (1024, 1024)) — لتشغيل عملية التوليد سلبياً بناءً على دقة صورة محددة. جزء من التكييف الدقيق (micro-conditioning) في SDXL كما هو موضح في القسم 2.2 من https://huggingface.co/papers/2307.01952. لمزيد من المعلومات، راجع موضوع هذا الإصدار: https://github.com/huggingface/diffusers/issues/4208. - negative_crops_coords_top_left (
tuple[int], اختياري، القيمة الافتراضية (0, 0)) — لتشغيل عملية التوليد سلبياً بناءً على إحداثيات قصّ محددة. جزء من micro-conditioning في SDXL كما هو موضح في القسم 2.2 من https://huggingface.co/papers/2307.01952. لمزيد من المعلومات، راجع موضوع هذا الإصدار: https://github.com/huggingface/diffusers/issues/4208. - negative_target_size (
tuple[int], اختياري، القيمة الافتراضية (1024, 1024)) — لتشغيل عملية التوليد سلبياً بناءً على دقة الصورة المستهدفة. يجب أن تكون مطابقة لـtarget_sizeفي معظم الحالات. جزء من التكييف الدقيق (micro-conditioning) في SDXL كما هو موضح في القسم 2.2 من https://huggingface.co/papers/2307.01952. لمزيد من المعلومات، راجع موضوع هذا الإشكال: https://github.com/huggingface/diffusers/issues/4208. - clip_skip (
int, اختياري) — عدد الطبقات التي سيتم تجاوزها من CLIP أثناء حساب تمثيلات الموجه. القيمة 1 تعني أنه سيتم استخدام مخرجات الطبقة قبل الأخيرة لحساب تمثيلات الموجه. - 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) الخاص بك.
يعيد
~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput أو tuple
~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput إذا كان return_dict هو True، وإلا tuple. عند إرجاع tuple، يكون العنصر الأول قائمة تحتوي على الصور المولّدة.
الدالة التي تُستدعى عند استدعاء خط الأنابيب للتوليد.
أمثلة:
>>> import torch
>>> from diffusers import StableDiffusionXLPipeline
>>> pipe = StableDiffusionXLPipeline.from_pretrained(
... "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16
... )
>>> pipe = pipe.to("cuda")
>>> prompt = "a photo of an astronaut riding a horse on mars"
>>> image = pipe(prompt).images[0]encode_prompt
< source >( prompt: strprompt_2: str | None = Nonedevice: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1do_classifier_free_guidance: bool = Truenegative_prompt: str | None = Nonenegative_prompt_2: str | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonelora_scale: float | None = Noneclip_skip: int | 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) — ما إذا كان سيتم استخدام classifier free guidance أم لا - 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، اختياري) — تضمينات نصية مجمعة سالبة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن المحفّز. إذا لم تُقدَّم، فسيتم توليد تضمينات negative_prompt_embeds المجمعة من معامل الإدخالnegative_prompt. - lora_scale (
float، اختياري) — مقياس LoRA سيُطبَّق على جميع طبقات LoRA في مُشفِّر النص إذا كانت طبقات LoRA محمَّلة. - clip_skip (
int, اختياري) — عدد الطبقات التي سيتم تجاوزها من CLIP أثناء حساب تمثيلات الموجه. القيمة 1 تعني أنه سيتم استخدام مخرجات الطبقة قبل الأخيرة لحساب تمثيلات الموجه.
يقوم بتشفير الموجه إلى حالات مخفية لمشفّر النص.
get_guidance_scale_embedding
< source >( 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).
StableDiffusionXLImg2ImgPipeline
فئة diffusers.StableDiffusionXLImg2ImgPipeline
< source >( vae: AutoencoderKLtext_encoder: CLIPTextModeltext_encoder_2: CLIPTextModelWithProjectiontokenizer: CLIPTokenizertokenizer_2: CLIPTokenizerunet: UNet2DConditionModelscheduler: KarrasDiffusionSchedulersimage_encoder: CLIPVisionModelWithProjection = Nonefeature_extractor: CLIPImageProcessorPil = Nonerequires_aesthetics_score: bool = Falseforce_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 (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 إذا كانت الحزمة مثبّتة، وإلا فلن تُستخدم أي علامة مائية.
خط أنابيب لتوليد الصور من النص باستخدام Stable Diffusion XL.
يرث هذا النموذج من DiffusionPipeline. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع خطوط الأنابيب (مثل التنزيل أو الحفظ، أو التشغيل على جهاز معين، وما إلى ذلك).
تورث خط الأنابيب أيضًا طرق التحميل التالية:
- load_textual_inversion() لتحميل تضمينات الانعكاس النصي
- from_single_file() لتحميل ملفات
.ckpt - load_lora_weights() لتحميل أوزان LoRA
- save_lora_weights() لحفظ أوزان LoRA
- load_ip_adapter() لتحميل وحدات IP Adapter
__call__
< source >( prompt: str | list[str] = Noneprompt_2: str | list[str] | None = Noneimage: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonestrength: float = 0.3num_inference_steps: int = 50timesteps: list = Nonesigmas: list = Nonedenoising_start: float | None = Nonedenoising_end: float | None = Noneguidance_scale: float = 5.0negative_prompt: str | list[str] | None = Nonenegative_prompt_2: str | list[str] | None = Nonenum_images_per_prompt: int | None = 1eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_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] = Noneip_adapter_image_embeds: list[torch.Tensor] | None = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecross_attention_kwargs: dict[str, typing.Any] | None = Noneguidance_rescale: float = 0.0original_size: tuple = Nonecrops_coords_top_left: tuple = (0, 0)target_size: tuple = Nonenegative_original_size: tuple[int, int] | None = Nonenegative_crops_coords_top_left: tuple = (0, 0)negative_target_size: tuple[int, int] | None = Noneaesthetic_score: float = 6.0negative_aesthetic_score: float = 2.5clip_skip: int | None = Nonecallback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']**kwargs ) → ~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput or tuple
المعاملات
- 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]) — الصورة أو الصور التي سيتم تعديلها باستخدام خط المعالجة. - strength (
float, اختياري، القيمة الافتراضية 0.3) — مفاهيمياً، يحدد مقدار تحويل الصورة المرجعيةimage. يجب أن تكون القيمة بين 0 و 1. ستُستخدمimageكنقطة انطلاق، مع إضافة المزيد من الضوضاء إليها كلما زادت قيمةstrength. يعتمد عدد خطوات إزالة الضوضاء على كمية الضوضاء المضافة في البداية. عندما تكونstrengthتساوي 1، ستكون الضوضاء المضافة في أقصى حد، وستعمل عملية إزالة الضوضاء لعدد التكرارات الكامل المحدد فيnum_inference_steps. وبالتالي، فإن القيمة 1 تتجاهلimageبشكل أساسي. لاحظ أنه في حالة إعلانdenoising_startكعدد صحيح، سيتم تجاهل قيمةstrength. - num_inference_steps (
int، اختياري، القيمة الافتراضية 50) — عدد خطوات إزالة الضوضاء. تؤدي زيادة عدد خطوات إزالة الضوضاء عادةً إلى صورة بجودة أعلى على حساب بطء الاستدلال. - timesteps (
list[int], اختياري) — خطوات زمنية مخصصة لاستخدامها في عملية إزالة الضوضاء مع المجدولين الذين يدعمون معاملtimestepsفي طريقةset_timestepsالخاصة بهم. إذا لم يُعرَّف، فسيتم استخدام السلوك الافتراضي عند تمريرnum_inference_steps. يجب أن تكون بترتيب تنازلي. - sigmas (
list[float]، اختياري) — قيم sigmas مخصصة لاستخدامها في عملية إزالة الضوضاء مع المجدولين الذين يدعمون معاملsigmasفي طريقةset_timestepsالخاصة بهم. إذا لم يُعرَّف، فسيتم استخدام السلوك الافتراضي عند تمريرnum_inference_steps. - denoising_start (
float, اختياري) — عند تحديده، يشير إلى الكسر (بين 0.0 و 1.0) من إجمالي عملية إزالة الضوضاء التي سيتم تجاوزها قبل بدء العملية. وبالتالي، يتم تخطي الجزء الأولي من عملية إزالة الضوضاء ويُفترض أنimageالمُمرر هو صورة مُزالة الضوضاء جزئيًا. لاحظ أنه عند تحديد هذا، سيتم تجاهل strength. يُعد معاملdenoising_startمفيدًا بشكل خاص عند دمج هذا الخط في إعداد متعدد الخطوط “Mixture of Denoisers”، كما هو موضح في تحسين جودة الصورة. - denoising_end (
float, اختياري) — عند تحديده، يحدد نسبة (بين 0.0 و 1.0) من إجمالي عملية إزالة الضوضاء التي يجب إتمامها قبل إنهائها مبكرًا عمدًا. ونتيجةً لذلك، سيحتفظ العينة المُعاد بها بكمية كبيرة من الضوضاء (حوالي 20% الأخيرة من خطوات الزمن لا تزال مطلوبة) ويجب إزالة ضوضائها بواسطة خط أنابيب تابع تم ضبطdenoising_startفيه على 0.8 بحيث يقوم بإزالة الضوضاء عن الـ 20% الأخيرة من المجدول فقط. يجب استخدام معامل denoising_end بشكل مثالي عندما يشكل هذا الخط الأنابيب جزءًا من إعداد متعدد خطوط الأنابيب "خليط من مُزيلات الضوضاء"، كما هو موضح في تحسين جودة الصورة. - guidance_scale (
float، اختياري، القيمة الافتراضية 7.5) — مقياس التوجيه كما هو معرّف في Classifier-Free Diffusion Guidance. يُعرَّفguidance_scaleعلى أنهwمن المعادلة 2 في Imagen Paper. يتم تفعيل مقياس التوجيه عن طريق تعيينguidance_scale > 1. يشجّع مقياس توجيه أعلى على توليد صور مرتبطة ارتباطًا وثيقًا بنصprompt، وعادةً على حساب انخفاض جودة الصورة. - 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، اختياري) — كائنات latents ضجيجية مُولّدة مسبقًا، مُستخرجة من توزيع غاوسي، تُستخدم كمدخلات لتوليد الصور. يمكن استخدامها لتعديل نفس التوليد باستخدام أوامر مختلفة. إذا لم تُقدَّم، سيتم توليد كائن latents عن طريق الاستخراج باستخدام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، اختياري) — تضمينات نصية مجمعة سالبة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن المحفّز. إذا لم تُقدَّم، فسيتم توليد تضمينات 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:PIL.Image.Imageأوnp.array. - return_dict (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب إرجاع~pipelines.stable_diffusion.StableDiffusionXLPipelineOutputبدلاً من tuple عادي. - 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 Flawedguidance_scaleis 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. - negative_original_size (
tuple[int]، اختياري، القيمة الافتراضية (1024, 1024)) — لتشغيل عملية التوليد سلبياً بناءً على دقة صورة محددة. جزء من التكييف الدقيق (micro-conditioning) في SDXL كما هو موضح في القسم 2.2 من https://huggingface.co/papers/2307.01952. لمزيد من المعلومات، راجع موضوع هذا الإصدار: https://github.com/huggingface/diffusers/issues/4208. - negative_crops_coords_top_left (
tuple[int], اختياري، القيمة الافتراضية (0, 0)) — لتشغيل عملية التوليد سلبياً بناءً على إحداثيات قصّ محددة. جزء من micro-conditioning في SDXL كما هو موضح في القسم 2.2 من https://huggingface.co/papers/2307.01952. لمزيد من المعلومات، راجع موضوع هذا الإصدار: https://github.com/huggingface/diffusers/issues/4208. - negative_target_size (
tuple[int], اختياري، القيمة الافتراضية (1024, 1024)) — لتشغيل عملية التوليد سلبياً بناءً على دقة الصورة المستهدفة. يجب أن تكون مطابقة لـtarget_sizeفي معظم الحالات. جزء من التكييف الدقيق (micro-conditioning) في SDXL كما هو موضح في القسم 2.2 من https://huggingface.co/papers/2307.01952. لمزيد من المعلومات، راجع موضوع هذا الإشكال: https://github.com/huggingface/diffusers/issues/4208. - aesthetic_score (
float، اختياري، القيمة الافتراضية 6.0) — يُستخدم لمحاكاة درجة جمالية للصورة المولّدة من خلال التأثير على شرط النص الإيجابي. جزء من التكييف الدقيق (micro-conditioning) في SDXL كما هو موضح في القسم 2.2 من https://huggingface.co/papers/2307.01952. - negative_aesthetic_score (
float، اختياري، القيمة الافتراضية 2.5) — جزء من micro-conditioning في SDXL كما هو موضح في القسم 2.2 من https://huggingface.co/papers/2307.01952. يمكن استخدامه لمحاكاة درجة جمالية للصورة المولّدة من خلال التأثير على شرط النص السلبي. - clip_skip (
int, اختياري) — عدد الطبقات التي سيتم تجاوزها من CLIP أثناء حساب تمثيلات الموجه. القيمة 1 تعني أنه سيتم استخدام مخرجات الطبقة قبل الأخيرة لحساب تمثيلات الموجه. - 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) الخاص بك.
يعيد
~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput أو tuple
~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput إذا كان return_dict هو True، وإلا فسيكون
`tuple. عند إرجاع tuple، يكون العنصر الأول قائمة تحتوي على الصور المولّدة.
الدالة التي تُستدعى عند استدعاء خط الأنابيب للتوليد.
أمثلة:
>>> import torch
>>> from diffusers import StableDiffusionXLImg2ImgPipeline
>>> from diffusers.utils import load_image
>>> pipe = StableDiffusionXLImg2ImgPipeline.from_pretrained(
... "stabilityai/stable-diffusion-xl-refiner-1.0", torch_dtype=torch.float16
... )
>>> pipe = pipe.to("cuda")
>>> url = "https://huggingface.co/datasets/patrickvonplaten/images/resolve/main/aa_xl/000000009.png"
>>> init_image = load_image(url).convert("RGB")
>>> prompt = "a photo of an astronaut riding a horse on mars"
>>> image = pipe(prompt, image=init_image).images[0]encode_prompt
< source >( prompt: strprompt_2: str | None = Nonedevice: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1do_classifier_free_guidance: bool = Truenegative_prompt: str | None = Nonenegative_prompt_2: str | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonelora_scale: float | None = Noneclip_skip: int | 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) — ما إذا كان سيتم استخدام classifier free guidance أم لا - 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، اختياري) — تضمينات نصية مجمعة سالبة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن المحفّز. إذا لم تُقدَّم، فسيتم توليد تضمينات negative_prompt_embeds المجمعة من معامل الإدخالnegative_prompt. - lora_scale (
float، اختياري) — مقياس LoRA سيُطبَّق على جميع طبقات LoRA في مُشفِّر النص إذا كانت طبقات LoRA محمَّلة. - clip_skip (
int, اختياري) — عدد الطبقات التي سيتم تجاوزها من CLIP أثناء حساب تمثيلات الموجه. القيمة 1 تعني أنه سيتم استخدام مخرجات الطبقة قبل الأخيرة لحساب تمثيلات الموجه.
يقوم بتشفير الموجه إلى حالات مخفية لمشفّر النص.
get_guidance_scale_embedding
< source >( 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).
StableDiffusionXLInpaintPipeline
فئة diffusers.StableDiffusionXLInpaintPipeline
< source >( vae: AutoencoderKLtext_encoder: CLIPTextModeltext_encoder_2: CLIPTextModelWithProjectiontokenizer: CLIPTokenizertokenizer_2: CLIPTokenizerunet: UNet2DConditionModelscheduler: KarrasDiffusionSchedulersimage_encoder: CLIPVisionModelWithProjection = Nonefeature_extractor: CLIPImageProcessorPil = Nonerequires_aesthetics_score: bool = Falseforce_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 (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 إذا كانت الحزمة مثبّتة، وإلا فلن تُستخدم أي علامة مائية.
خط أنابيب لتوليد الصور من النص باستخدام Stable Diffusion XL.
يرث هذا النموذج من DiffusionPipeline. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع خطوط الأنابيب (مثل التنزيل أو الحفظ، أو التشغيل على جهاز معين، وما إلى ذلك).
تورث خط الأنابيب أيضًا طرق التحميل التالية:
- load_textual_inversion() لتحميل تضمينات الانعكاس النصي
- from_single_file() لتحميل ملفات
.ckpt - load_lora_weights() لتحميل أوزان LoRA
- save_lora_weights() لحفظ أوزان LoRA
- load_ip_adapter() لتحميل وحدات IP Adapter
__call__
< source >( prompt: str | list[str] = Noneprompt_2: str | list[str] | None = Noneimage: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonemask_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonemasked_image_latents: Tensor = Noneheight: int | None = Nonewidth: int | None = Nonepadding_mask_crop: int | None = Nonestrength: float = 0.9999num_inference_steps: int = 50timesteps: list = Nonesigmas: list = Nonedenoising_start: float | None = Nonedenoising_end: float | None = Noneguidance_scale: float = 7.5negative_prompt: str | list[str] | None = Nonenegative_prompt_2: str | list[str] | None = Nonenum_images_per_prompt: int | None = 1eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_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] = Noneip_adapter_image_embeds: list[torch.Tensor] | None = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecross_attention_kwargs: dict[str, typing.Any] | None = Noneguidance_rescale: float = 0.0original_size: tuple = Nonecrops_coords_top_left: tuple = (0, 0)target_size: tuple = Nonenegative_original_size: tuple[int, int] | None = Nonenegative_crops_coords_top_left: tuple = (0, 0)negative_target_size: tuple[int, int] | None = Noneaesthetic_score: float = 6.0negative_aesthetic_score: float = 2.5clip_skip: int | None = Nonecallback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']**kwargs ) → ~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput or tuple
المعاملات
- prompt (
strأوlist[str]، اختياري) — الموجّه أو الموجّهات التي توجّه توليد الصورة. إذا لم يُعرَّف، يجب تمريرprompt_embedsبدلاً من ذلك. - prompt_2 (
strأوlist[str]، اختياري) — الموجّه أو الموجّهات المرسل إلىtokenizer_2وtext_encoder_2. إذا لم يُعرَّف، يُستخدمpromptفي كلا مشفّري النص - image (
PIL.Image.Image) —Image، أو متجه يمثل دفعة من الصور التي ستخضع لعملية inpaint، i.e. حيث ستُخفى أجزاء من الصورة باستخدامmask_imageوتُعاد رسمها وفقاً لـprompt. - mask_image (
PIL.Image.Image) —Image، أو tensor يمثل دفعة من الصور، لتطبيق قناع علىimage. سيتم إعادة رسم البكسلات البيضاء في القناع، بينما ستُحفظ البكسلات السوداء. إذا كانmask_imageصورة PIL، فسيتم تحويلها إلى قناة واحدة (السطوع) قبل الاستخدام. أما إذا كان tensor، فيجب أن يحتوي على قناة لون واحدة (L) بدلاً من ثلاث، لذا فإن الشكل المتوقع هو(B, H, W, 1). - masked_image_latents (
torch.Tensor، اختياري) — الكمون المُرمَّز مسبقًا للصورة المقنَّعة (لأغراض إعادة الرسم). - height (
int، اختياري، القيمة الافتراضية هي self.unet.config.sample_size * self.vae_scale_factor) — ارتفاع الصورة المولّدة بالبكسل. يتم ضبطه على 1024 افتراضيًا للحصول على أفضل النتائج. أي قيمة أقل من 512 بكسل لن تعمل بشكل جيد مع stabilityai/stable-diffusion-xl-base-1.0 والمحطات التفتيشية التي لم يتم ضبطها بدقة خصيصًا على الدقات المنخفضة. - width (
int، اختياري، القيمة الافتراضية هي self.unet.config.sample_size * self.vae_scale_factor) — عرض الصورة المولدة بالبكسلات. يتم ضبطه على 1024 افتراضيًا للحصول على أفضل النتائج. أي قيمة أقل من 512 بكسل لن تعمل بشكل جيد مع stabilityai/stable-diffusion-xl-base-1.0 والمحطات التفتيشية التي لم يتم ضبطها بدقة بشكل خاص على الدقات المنخفضة. - padding_mask_crop (
int, اختياري، القيمة الافتراضيةNone) — حجم الهامش في الاقتصاص الذي سيُطبَّق على الصورة والقناع. إذا كانتNone، فلن يُطبَّق أي اقتصاص على الصورة وmask_image. إذا لم تكنpadding_mask_cropقيمةNone، فسيتم أولاً تحديد منطقة مستطيلة بنفس نسبة أبعاد الصورة وتحتوي على كل المنطقة المقنَّعة، ثم يتم توسيع تلك المنطقة بناءً علىpadding_mask_crop. ثم ستُقتَصَّ الصورة وmask_image بناءً على المنطقة الموسَّعة قبل إعادة تحجيمها إلى حجم الصورة الأصلي لأغراض إعادة البناء. وهذا مفيد عندما تكون المنطقة المقنَّعة صغيرة بينما الصورة كبيرة وتحتوي على معلومات غير ذات صلة بإعادة البناء، مثل الخلفية. - strength (
float، اختياري، القيمة الافتراضية 0.9999) — مفاهيمياً، يحدد مقدار تحويل الجزء المقنّع من صورةimageالمرجعية. يجب أن تكون القيمة بين 0 و 1. ستُستخدمimageكنقطة انطلاق، حيث يُضاف المزيد من الضوضاء إليها كلما زادت قيمةstrength. يعتمد عدد خطوات إزالة الضوضاء على كمية الضوضاء المضافة في البداية. عندما تكون قيمةstrengthهي 1، ستكون الضوضاء المضافة في أقصى حد، وستعمل عملية إزالة الضوضاء لعدد التكرارات الكامل المحدد فيnum_inference_steps. وبالتالي، فإن القيمة 1 تتجاهل فعلياً الجزء المقنّع من صورةimageالمرجعية. لاحظ أنه في حال تم إعلانdenoising_startكعدد صحيح، سيتم تجاهل قيمةstrength. - num_inference_steps (
int، اختياري، القيمة الافتراضية 50) — عدد خطوات إزالة الضوضاء. تؤدي زيادة عدد خطوات إزالة الضوضاء عادةً إلى صورة بجودة أعلى على حساب بطء الاستدلال. - timesteps (
list[int], اختياري) — خطوات زمنية مخصصة لاستخدامها في عملية إزالة الضوضاء مع المجدولين الذين يدعمون معاملtimestepsفي طريقةset_timestepsالخاصة بهم. إذا لم يُعرَّف، فسيتم استخدام السلوك الافتراضي عند تمريرnum_inference_steps. يجب أن تكون بترتيب تنازلي. - sigmas (
list[float]، اختياري) — قيم sigmas مخصصة لاستخدامها في عملية إزالة الضوضاء مع المجدولين الذين يدعمون معاملsigmasفي طريقةset_timestepsالخاصة بهم. إذا لم يُعرَّف، فسيتم استخدام السلوك الافتراضي عند تمريرnum_inference_steps. - denoising_start (
float, اختياري) — عند تحديده، يشير إلى الكسر (بين 0.0 و 1.0) من إجمالي عملية إزالة الضوضاء التي سيتم تجاوزها قبل بدء العملية. ونتيجةً لذلك، يتم تخطي الجزء الأولي من عملية إزالة الضوضاء ويُفترض أنimageالمُمرَّر هو صورة مُزالة الضوضاء جزئيًا. لاحظ أنه عند تحديد هذا المعامل، سيتم تجاهل strength. يُعد معاملdenoising_startمفيدًا بشكل خاص عند دمج هذا الخط الأنابيب في إعداد متعدد الخطوط الأنابيب من نوع “خليط من مُزيلات الضوضاء” (Mixture of Denoisers)، كما هو موضح في تحسين مخرجات الصورة. - denoising_end (
float, اختياري) — عند تحديده، يحدد نسبة (بين 0.0 و 1.0) من إجمالي عملية إزالة الضوضاء التي يجب إتمامها قبل إنهائها مبكرًا عمدًا. ونتيجةً لذلك، سيحتفظ العينة المُعاد بها بكمية كبيرة من الضوضاء (حوالي 20% الأخيرة من خطوات الزمن لا تزال مطلوبة) ويجب إزالة ضوضائها بواسطة خط أنابيب تابع تم ضبطdenoising_startفيه على 0.8 بحيث يقوم بإزالة الضوضاء عن الـ 20% الأخيرة من المجدول فقط. يجب استخدام معامل denoising_end بشكل مثالي عندما يشكل هذا الخط الأنابيب جزءًا من إعداد متعدد خطوط الأنابيب "خليط من مُزيلات الضوضاء"، كما هو موضح في تحسين مخرجات الصورة. - guidance_scale (
float، اختياري، القيمة الافتراضية 7.5) — مقياس التوجيه كما هو معرّف في Classifier-Free Diffusion Guidance. يُعرَّفguidance_scaleعلى أنهwمن المعادلة 2 في Imagen Paper. يتم تفعيل مقياس التوجيه عن طريق تعيينguidance_scale > 1. يشجّع مقياس توجيه أعلى على توليد صور مرتبطة ارتباطًا وثيقًا بنصprompt، وعادةً على حساب انخفاض جودة الصورة. - 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، اختياري) — تضمينات نصية مجمعة سالبة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن المحفّز. إذا لم تُقدَّم، فسيتم توليد تضمينات 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. - num_images_per_prompt (
int، اختياري، القيمة الافتراضية 1) — عدد الصور التي سيتم توليدها لكل موجه. - eta (
float، اختياري، القيمة الافتراضية 0.0) — يتوافق مع المعامل eta (η) في ورقة DDIM: https://huggingface.co/papers/2010.02502. ينطبق فقط على schedulers.DDIMScheduler، وسيتم تجاهله في الحالات الأخرى. - generator (
torch.Generator، اختياري) — واحد أو قائمة من مولّدات torch لجعل التوليد حتميًا. - latents (
torch.Tensor، اختياري) — كائنات latents ضجيجية مُولّدة مسبقًا، مُستخرجة من توزيع غاوسي، تُستخدم كمدخلات لتوليد الصور. يمكن استخدامها لتعديل نفس التوليد باستخدام أوامر مختلفة. إذا لم تُقدَّم، سيتم توليد كائن latents عن طريق الاستخراج باستخدامgeneratorالعشوائي المُقدَّم. - output_type (
str، اختياري، القيمة الافتراضية"pil") — صيغة مخرجات توليد الصورة. اختر بين PIL:PIL.Image.Imageأوnp.array. - return_dict (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب إرجاع StableDiffusionPipelineOutput بدلاً من tuple عادي. - cross_attention_kwargs (
dict، اختياري) — قاموس kwargs يُمرَّر إلىAttentionProcessorكما هو معرَّف تحتself.processorفي diffusers.models.attention_processor إذا تمَّ تحديده. - 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. - negative_original_size (
tuple[int]، اختياري، القيمة الافتراضية (1024, 1024)) — لتشغيل عملية التوليد سلبياً بناءً على دقة صورة محددة. جزء من التكييف الدقيق (micro-conditioning) في SDXL كما هو موضح في القسم 2.2 من https://huggingface.co/papers/2307.01952. لمزيد من المعلومات، راجع موضوع هذا الإصدار: https://github.com/huggingface/diffusers/issues/4208. - negative_crops_coords_top_left (
tuple[int], اختياري، القيمة الافتراضية (0, 0)) — لتشغيل عملية التوليد سلبياً بناءً على إحداثيات قصّ محددة. جزء من micro-conditioning في SDXL كما هو موضح في القسم 2.2 من https://huggingface.co/papers/2307.01952. لمزيد من المعلومات، راجع موضوع هذا الإصدار: https://github.com/huggingface/diffusers/issues/4208. - negative_target_size (
tuple[int], اختياري، القيمة الافتراضية (1024, 1024)) — لتشغيل عملية التوليد سلبياً بناءً على دقة الصورة المستهدفة. يجب أن تكون مطابقة لـtarget_sizeفي معظم الحالات. جزء من التكييف الدقيق (micro-conditioning) في SDXL كما هو موضح في القسم 2.2 من https://huggingface.co/papers/2307.01952. لمزيد من المعلومات، راجع موضوع هذا الإشكال: https://github.com/huggingface/diffusers/issues/4208. - aesthetic_score (
float، اختياري، القيمة الافتراضية 6.0) — يُستخدم لمحاكاة درجة جمالية للصورة المولّدة من خلال التأثير على شرط النص الإيجابي. جزء من التكييف الدقيق (micro-conditioning) في SDXL كما هو موضح في القسم 2.2 من https://huggingface.co/papers/2307.01952. - negative_aesthetic_score (
float، اختياري، القيمة الافتراضية 2.5) — جزء من micro-conditioning في SDXL كما هو موضح في القسم 2.2 من https://huggingface.co/papers/2307.01952. يمكن استخدامه لمحاكاة درجة جمالية للصورة المولّدة من خلال التأثير على شرط النص السلبي. - guidance_rescale (
float، اختياري، القيمة الافتراضية 0.0) — معامل إعادة الضبط للتوجيه من جداول ضوضاء الانتشار الشائعة وخطوات أخذ العينات معيبة. - clip_skip (
int, اختياري) — عدد الطبقات التي سيتم تجاوزها من CLIP أثناء حساب تمثيلات الموجه. القيمة 1 تعني أنه سيتم استخدام مخرجات الطبقة قبل الأخيرة لحساب تمثيلات الموجه. - 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) الخاص بك.
يعيد
~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput أو tuple
~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput إذا كان return_dict هو True، وإلا tuple. tuple. عند إرجاع tuple، يكون العنصر الأول قائمة تحتوي على الصور المولّدة.
الدالة التي تُستدعى عند استدعاء خط الأنابيب للتوليد.
أمثلة:
>>> import torch
>>> from diffusers import StableDiffusionXLInpaintPipeline
>>> from diffusers.utils import load_image
>>> pipe = StableDiffusionXLInpaintPipeline.from_pretrained(
... "stabilityai/stable-diffusion-xl-base-1.0",
... torch_dtype=torch.float16,
... variant="fp16",
... use_safetensors=True,
... )
>>> pipe.to("cuda")
>>> img_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo.png"
>>> mask_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo_mask.png"
>>> init_image = load_image(img_url).convert("RGB")
>>> mask_image = load_image(mask_url).convert("RGB")
>>> prompt = "A majestic tiger sitting on a bench"
>>> image = pipe(
... prompt=prompt, image=init_image, mask_image=mask_image, num_inference_steps=50, strength=0.80
... ).images[0]encode_prompt
< source >( prompt: strprompt_2: str | None = Nonedevice: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1do_classifier_free_guidance: bool = Truenegative_prompt: str | None = Nonenegative_prompt_2: str | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonelora_scale: float | None = Noneclip_skip: int | 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) — ما إذا كان سيتم استخدام classifier free guidance أم لا - 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، اختياري) — تضمينات نصية مجمعة سالبة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن المحفّز. إذا لم تُقدَّم، فسيتم توليد تضمينات negative_prompt_embeds المجمعة من معامل الإدخالnegative_prompt. - lora_scale (
float، اختياري) — مقياس LoRA سيُطبَّق على جميع طبقات LoRA في مُشفِّر النص إذا كانت طبقات LoRA محمَّلة. - clip_skip (
int, اختياري) — عدد الطبقات التي سيتم تجاوزها من CLIP أثناء حساب تمثيلات الموجه. القيمة 1 تعني أنه سيتم استخدام مخرجات الطبقة قبل الأخيرة لحساب تمثيلات الموجه.
يقوم بتشفير الموجه إلى حالات مخفية لمشفّر النص.
get_guidance_scale_embedding
< source >( 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).