Diffusers documentation
التوجيه
التوجيه
تصف الأوامر ما ينبغي للنموذج توليده. الأوامر الجيدة مفصّلة ومحددة ومنظمة، وتُنتج صوراً وفيديوهات أفضل.
يُظهر لك هذا الدليل كيفية كتابة أوامر فعّالة، ويقدّم تقنيات تجعلها أقوى.
كتابة موجهات جيدة
تتطلب كل موجهة فعّالة ثلاثة عناصر أساسية.
- الموضوع - ما تريد توليده. ابدأ مطالبتك من هنا.
- الأسلوب - الوسيط أو الجماليات. كيف يجب أن يبدو؟
- السياق - تفاصيل حول الإجراءات والإعداد والمزاج.
استخدم هذه العناصر كسرد منظم، وليس كقائمة كلمات مفتاحية. تفهم النماذج الحديثة اللغة بشكل أفضل من مطابقة الكلمات المفتاحية. ابدأ بالبساطة، ثم أضف التفاصيل.
يكتسب السياق أهمية خاصة عند إنشاء أوامر (Prompts) أفضل. جرّب إضافة تفاصيل تتعلق بالإضاءة، والتفاصيل الفنية، والمزاج العام.
كن محددًا وأضف سياقًا. استخدم مصطلحات التصوير الفوتوغرافي مثل نوع العدسة، والبعد البؤري، وزوايا الكاميرا، وعمق الميدان.
جرّب مُحسّن الأوامر للمساعدة في تحسين بنية الأمر الخاص بك.
الإرشادات والسلبية
لا تزال معظم خطوط أنابيب Diffusers توجّه عملية أخذ العينات باستخدام التوجيه الحر من التصنيف مع negative_prompt اختياري.
في خطوط أنابيب عائلة Stable Diffusion، مرّر guidance_scale وnegative_prompt. كلما ارتفعت قيمة guidance_scale، زادت درجة اتباع التوجيه النصي بدقة أكبر. قد تبدو القيم المرتفعة جدًا غير طبيعية أو مفرطة التشبّع.
import torch
from diffusers import DiffusionPipeline
pipeline = DiffusionPipeline.from_pretrained(
"stable-diffusion-v1-5/stable-diffusion-v1-5", dtype=torch.float16, device_map="cuda" # or "mps", "xpu", "cpu"
)
image = pipeline(
prompt="a cozy reading nook with afternoon light",
negative_prompt="blurry, low quality, distorted",
guidance_scale=7.5,
).images[0]في نقاط التفتيش الأحدث مثل Qwen-Image و Flux، يُستخدم CFG الكلاسيكي عادةً مع true_cfg_scale إلى جانب negative_prompt. لا تزال القيم السلبية تُطبَّق عند تفعيل CFG الحقيقي (true_cfg_scale > 1 مع وجود negative_prompt). أما معامل guidance_scale فيمثل إرشادًا مُقطَّرًا أو مُدمَجًا عندما يدعم المُحوِّل ذلك، وهو أمر مختلف تمامًا. راجع واجهة برمجة التطبيقات الخاصة بخط المعالجة للنموذج الذي تُحمّله.
يمكن لـ Modular Diffusers استبدال خوارزمية التوجيه بموجّه. راجع الموجّهات.
وزن الأوامر
تُتيح أوزان المُوجِّه (Prompt weighting) تعزيز بعض الكلمات وتضعيف أخرى. فهي تُقيِّم درجات الانتباه (attention scores) بحيث تتحكم في مدى تأثير كل مفهوم.
يتعامل Diffusers مع ذلك من خلال الحُجج prompt_embeds وpooled_prompt_embeds التي تستقبل متجهات تضمين النص المُقيَّسة. استخدم مكتبة sd_embed لتوليد هذه التضمينات. كما تدعم أوامر أطول. ولأوزان عائلة Stable Diffusion مع صيغة أبسط، يمكنك أيضاً استخدام Compel.
يدعم مكتبة sd_embed فقط نماذج Stable Diffusion وStable Diffusion XL وStable Diffusion 3 وStable Cascade وFlux. ولا يساعد وزن الأوامر النصية دائمًا في نماذج فئة Flux، إذ تتبع هذه النماذج الأوامر النصية عن كثب أصلًا.
uv pip install git+https://github.com/xhinker/sd_embed.git@main
تنسيق النص الموزون باستخدام مضاعفات رقمية أو أقواس. كلما زادت الأقواس، زادت قوة الوزن.
| تنسيق | معامل |
|---|---|
(cat) | زيادة بنسبة 1.1x |
((cat)) | زيادة بنسبة 1.21x |
(cat:1.5) | زيادة بنسبة 1.5x |
(cat:0.5) | اضبط الوزن إلى 0.5× |
أنشئ موجهًا موزونًا وقم بتمريره إلى get_weighted_text_embeddings_sdxl لتوليد التضمينات.
يمكنك أيضًا تمرير موجهات سلبية إلى
negative_prompt_embedsوnegative_pooled_prompt_embeds.
import torch
from diffusers import DiffusionPipeline
from sd_embed.embedding_funcs import get_weighted_text_embeddings_sdxl
pipeline = DiffusionPipeline.from_pretrained(
"Lykon/dreamshaper-xl-1-0", dtype=torch.bfloat16, device_map="cuda" # or "mps", "xpu", "cpu"
)
prompt = """
A (cute cat:1.4) lounges on a (floating leaf:1.2) in a (sparkling pool:1.1) during a peaceful summer afternoon.
Gentle ripples reflect pastel skies, while (sunlight:1.1) casts soft highlights. The illustration is smooth and polished
with elegant, sketchy lines and subtle gradients, evoking a ((whimsical, nostalgic, dreamy lofi atmosphere:2.0)),
(anime-inspired:1.6), calming, comforting, and visually serene.
"""
prompt_embeds, _, pooled_prompt_embeds, *_ = get_weighted_text_embeddings_sdxl(pipeline, prompt=prompt)مرّر التضمينات إلى prompt_embeds وpooled_prompt_embeds لتوليد صورتك.
image = pipeline(prompt_embeds=prompt_embeds, pooled_prompt_embeds=pooled_prompt_embeds).images[0]