Diffusers documentation
Stable Cascade
Stable Cascade
تم بناء هذا النموذج على معمارية Würstchen، والفارق الرئيسي بينه وبين النماذج الأخرى مثل Stable Diffusion هو أنه يعمل في فضاء كامن أصغر بكثير. لماذا هذا مهم؟ كلما كان الفضاء الكامن أصغر، كان بإمكانك تشغيل الاستدلال بسرعة أكبر وأصبح التدريب أرخص. ما مدى صغر الفضاء الكامن؟ يستخدم Stable Diffusion عامل ضغط قدره 8، مما يؤدي إلى ترميز صورة 1024x1024 إلى 128x128. يحقق Stable Cascade عامل ضغط قدره 42، مما يعني أنه من الممكن ترميز صورة 1024x1024 إلى 24x24، مع الحفاظ على إعادة بناء حادة. ثم يتم تدريب النموذج الشرطي النصي في الفضاء الكامن المضغوط بشدة. حققت الإصدارات السابقة من هذه المعمارية خفضاً في التكلفة بنسبة 16x مقارنة بـ Stable Diffusion 1.5.
لذلك، يناسب هذا النوع من النماذج الاستخدامات التي تكون فيها الكفاءة مهمة. علاوة على ذلك، جميع الامتدادات المعروفة مثل finetuning وLoRA وControlNet وIP-Adapter وLCM وغيرها ممكنة باستخدام هذه الطريقة أيضًا.
يمكن العثور على قاعدة الكود الأصلية في Stability-AI/StableCascade.
نظرة عامة على النموذج
يتألف Stable Cascade من ثلاثة نماذج: المرحلة A، والمرحلة B، والمرحلة C، وتمثل سلسلة لتوليد الصور، ومن هنا جاء اسم “Stable Cascade”.
تُستخدم المرحلتان A و B لضغط الصور، على غرار الدور الذي تؤديه وحدة VAE في Stable Diffusion. ومع ذلك، يمكن تحقيق ضغط أعلى بكثير للصور مع هذا الإعداد. في حين أن نماذج Stable Diffusion تستخدم عامل ضغط مكاني قدره 8، حيث تُشفَّر صورة بدقة 1024 x 1024 إلى 128 x 128، فإن Stable Cascade يحقق عامل ضغط قدره 42. وهذا يُشفّر صورة بدقة 1024 x 1024 إلى 24 x 24، مع القدرة على فك تشفير الصورة بدقة. ويأتي ذلك بفائدة كبيرة تتمثل في انخفاض تكلفة التدريب والاستدلال. علاوة على ذلك، تتولى المرحلة C توليد الكميات الكامنة الصغيرة بدقة 24 x 24 بناءً على موجه نصي.
يعمل نموذج المرحلة C على الكمونيات الصغيرة ذات الأبعاد 24 x 24، ويقوم بإزالة الضوضاء من الكمونيات بناءً على تلميحات النص. كما يُعد هذا النموذج أكبر مكوّن في خط سير عمل التسلسل (Cascade)، وهو مصمَّم للاستخدام مع StableCascadePriorPipeline
تُستخدم نماذج المرحلة B والمرحلة A مع StableCascadeDecoderPipeline وهي مسؤولة عن توليد الصورة النهائية بناءً على الكميات الكامنة الصغيرة ذات الأبعاد 24 x 24.
توجد بعض القيود على أنواع البيانات التي يمكن استخدامها مع نماذج Stable Cascade. لا تدعم نقاط التفتيش الرسمية لـ
StableCascadePriorPipelineنوع البياناتtorch.float16. يُرجى استخدامtorch.bfloat16بدلاً من ذلك.للاستخدام من نوع البيانات
torch.bfloat16معStableCascadeDecoderPipeline، يجب أن يكون لديك PyTorch 2.2.0 أو إصدار أحدث مثبّتًا. وهذا يعني أيضًا أن استخدامStableCascadeCombinedPipelineمعtorch.bfloat16يتطلب PyTorch 2.2.0 أو إصدار أحدث، نظرًا لأنه يستدعيStableCascadeDecoderPipelineداخليًا.إذا لم يكن من الممكن تثبيت PyTorch 2.2.0 أو إصدار أحدث في بيئتك، يمكن استخدام
StableCascadeDecoderPipelineبشكل مستقل مع نوع البياناتtorch.float16. يمكنك تنزيل أوزان الدقة الكاملة أو أوزان النسخةbf16للخط.pipe وتحويل الأوزان إلىtorch.float16.
مثال على الاستخدام
import torch
from diffusers import StableCascadeDecoderPipeline, StableCascadePriorPipeline
prompt = "an image of a shiba inu, donning a spacesuit and helmet"
negative_prompt = ""
prior = StableCascadePriorPipeline.from_pretrained("stabilityai/stable-cascade-prior", variant="bf16", dtype=torch.bfloat16)
decoder = StableCascadeDecoderPipeline.from_pretrained("stabilityai/stable-cascade", variant="bf16", dtype=torch.float16)
prior.enable_model_cpu_offload()
prior_output = prior(
prompt=prompt,
height=1024,
width=1024,
negative_prompt=negative_prompt,
guidance_scale=4.0,
num_images_per_prompt=1,
num_inference_steps=20
)
decoder.enable_model_cpu_offload()
decoder_output = decoder(
image_embeddings=prior_output.image_embeddings.to(torch.float16),
prompt=prompt,
negative_prompt=negative_prompt,
guidance_scale=0.0,
output_type="pil",
num_inference_steps=10
).images[0]
decoder_output.save("cascade.png")استخدام الإصدارات الخفيفة من نماذج المرحلة ب والمرحلة ج
import torch
from diffusers import (
StableCascadeDecoderPipeline,
StableCascadePriorPipeline,
StableCascadeUNet,
)
prompt = "an image of a shiba inu, donning a spacesuit and helmet"
negative_prompt = ""
prior_unet = StableCascadeUNet.from_pretrained("stabilityai/stable-cascade-prior", subfolder="prior_lite")
decoder_unet = StableCascadeUNet.from_pretrained("stabilityai/stable-cascade", subfolder="decoder_lite")
prior = StableCascadePriorPipeline.from_pretrained("stabilityai/stable-cascade-prior", prior=prior_unet)
decoder = StableCascadeDecoderPipeline.from_pretrained("stabilityai/stable-cascade", decoder=decoder_unet)
prior.enable_model_cpu_offload()
prior_output = prior(
prompt=prompt,
height=1024,
width=1024,
negative_prompt=negative_prompt,
guidance_scale=4.0,
num_images_per_prompt=1,
num_inference_steps=20
)
decoder.enable_model_cpu_offload()
decoder_output = decoder(
image_embeddings=prior_output.image_embeddings,
prompt=prompt,
negative_prompt=negative_prompt,
guidance_scale=0.0,
output_type="pil",
num_inference_steps=10
).images[0]
decoder_output.save("cascade.png")تحميل نقاط التفتيش الأصلية باستخدام from_single_file
يُؤمَّن دعم تحميل نقاط التفتيش بالصيغة الأصلية عبر طريقة from_single_file في StableCascadeUNet.
import torch
from diffusers import (
StableCascadeDecoderPipeline,
StableCascadePriorPipeline,
StableCascadeUNet,
)
prompt = "an image of a shiba inu, donning a spacesuit and helmet"
negative_prompt = ""
prior_unet = StableCascadeUNet.from_single_file(
"https://huggingface.co/stabilityai/stable-cascade/resolve/main/stage_c_bf16.safetensors",
dtype=torch.bfloat16
)
decoder_unet = StableCascadeUNet.from_single_file(
"https://huggingface.co/stabilityai/stable-cascade/blob/main/stage_b_bf16.safetensors",
dtype=torch.bfloat16
)
prior = StableCascadePriorPipeline.from_pretrained("stabilityai/stable-cascade-prior", prior=prior_unet, dtype=torch.bfloat16)
decoder = StableCascadeDecoderPipeline.from_pretrained("stabilityai/stable-cascade", decoder=decoder_unet, dtype=torch.bfloat16)
prior.enable_model_cpu_offload()
prior_output = prior(
prompt=prompt,
height=1024,
width=1024,
negative_prompt=negative_prompt,
guidance_scale=4.0,
num_images_per_prompt=1,
num_inference_steps=20
)
decoder.enable_model_cpu_offload()
decoder_output = decoder(
image_embeddings=prior_output.image_embeddings,
prompt=prompt,
negative_prompt=negative_prompt,
guidance_scale=0.0,
output_type="pil",
num_inference_steps=10
).images[0]
decoder_output.save("cascade-single-file.png")الاستخدامات
الاستخدام المباشر
يُعدّ النموذج مخصصًا لأغراض البحث حاليًا. وتشمل مجالات البحث والمهام المحتملة
- أبحاث حول النماذج التوليدية.
- النشر الآمن للنماذج التي لديها القدرة على توليد محتوى ضار.
- استكشاف وفهم القيود والتحيزات في النماذج التوليدية.
- إنشاء الأعمال الفنية واستخدامها في التصميم وعمليات فنية أخرى.
- التطبيقات في الأدوات التعليمية أو الإبداعية.
يُوصف الاستخدام المستثنى أدناه.
الاستخدام خارج النطاق
لم يتم تدريب النموذج ليكون تمثيلاً دقيقاً أو حقيقياً للأشخاص أو الأحداث، وبالتالي فإن استخدام النموذج لتوليد مثل هذا المحتوى يقع خارج نطاق قدرات هذا النموذج. يجب عدم استخدام النموذج بأي طريقة تنتهك سياسة الاستخدام المقبولة لشركة Stability AI.
القيود والتحيز
القيود
- قد لا يتم توليد الوجوه والأشخاص بشكل عام بشكل صحيح.
- جزء الترميز التلقائي في النموذج يفقد بعض البيانات.
StableCascadeCombinedPipeline
فئة diffusers.StableCascadeCombinedPipeline
< source >( tokenizer: CLIPTokenizertext_encoder: CLIPTextModelWithProjectiondecoder: StableCascadeUNetscheduler: DDPMWuerstchenSchedulervqgan: PaellaVQModelprior_prior: StableCascadeUNetprior_text_encoder: CLIPTextModelWithProjectionprior_tokenizer: CLIPTokenizerprior_scheduler: DDPMWuerstchenSchedulerprior_feature_extractor: transformers.models.clip.image_processing_pil_clip.CLIPImageProcessorPil | None = Noneprior_image_encoder: transformers.models.clip.modeling_clip.CLIPVisionModelWithProjection | None = None )
المعاملات
- tokenizer (
CLIPTokenizer) — رمز فك التشفير (tokenizer) المستخدم لإدخالات النص. - text_encoder (
CLIPTextModelWithProjection) — مُشفِّر النص المُفكِّك الذي سيُستخدم للمدخلات النصية. - decoder (
StableCascadeUNet) — نموذج المُفكِّك الذي سيُستخدم في خط أنابيب توليد الصور المُفكَّكة. - scheduler (
DDPMWuerstchenScheduler) — المجدول الذي سيُستخدم في خط أنابيب توليد الصور عبر المُفكِّك. - vqgan (
PaellaVQModel) — نموذج VQGAN الذي سيُستخدم في خط أنابيب توليد الصور عبر المُفكِّك. - prior_prior (
StableCascadeUNet) — نموذج المسبق الذي سيُستخدم في خط أنابيب المسبق. - prior_text_encoder (
CLIPTextModelWithProjection) — مُشفِّر النص السابق الذي يُستخدم للمدخلات النصية. - prior_tokenizer (
CLIPTokenizer) — المُجزِّئ السابق الذي يُستخدم للمدخلات النصية. - prior_scheduler (
DDPMWuerstchenScheduler) — المجدول المستخدم في خط أنابيب المسبق. - prior_feature_extractor (CLIPImageProcessor) —
نموذج يستخرج الميزات من الصور المولّدة لاستخدامها كمدخلات لـ
image_encoder. - prior_image_encoder (
CLIPVisionModelWithProjection) — مُشفِّر صور CLIP مجمّد (clip-vit-large-patch14).
خط أنابيب مجمّع لتوليد الصور من النص باستخدام Stable Cascade.
يرث هذا النموذج من DiffusionPipeline. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع خطوط الأنابيب (مثل التنزيل أو الحفظ، أو التشغيل على جهاز معين، وما إلى ذلك).
__call__
< source >( prompt: str | list[str] | None = Noneimages: typing.Union[torch.Tensor, list[torch.Tensor], PIL.Image.Image, list[PIL.Image.Image]] = Noneheight: int = 512width: int = 512prior_num_inference_steps: int = 60prior_guidance_scale: float = 4.0num_inference_steps: int = 12decoder_guidance_scale: float = 0.0negative_prompt: str | list[str] | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_pooled: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_pooled: typing.Optional[torch.Tensor] = Nonenum_images_per_prompt: int = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Trueprior_callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Noneprior_callback_on_step_end_tensor_inputs: list[str] = ['latents']callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list[str] = ['latents'] )
المعاملات
- prompt (
strأوlist[str]) — الموجّه أو الموجّهات التي تُوجّه توليد الصورة للمُسبق والمُفكّك. - images (
torch.Tensor،PIL.Image.Image،list[torch.Tensor]،list[PIL.Image.Image]، اختياري) — الصور التي تُوجّه توليد الصورة للسابق. - negative_prompt (
strأوlist[str]، اختياري) — الموجّه أو الموجّهات التي لا ينبغي استخدامها لتوجيه توليد الصورة. يتم تجاهلها عند عدم استخدام التوجيه (أي يتم تجاهلها إذا كانguidance_scaleأقل من1). - prompt_embeds (
torch.Tensor، اختياري) — تضمينات نصية مُولَّدة مسبقًا للسابق. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن التلميح. إذا لم تُوفَّر، فسيتم توليد تضمينات النص من معامل الإدخالprompt. - prompt_embeds_pooled (
torch.Tensor، اختياري) — تضمينات نصية مُولَّدة مسبقًا للسابق. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزنات المُوجِّه. إذا لم تُوفَّر، فسيتم توليد تضمينات النص من معامل الإدخالprompt. - negative_prompt_embeds (
torch.Tensor, اختياري) — تضمينات نصية سالبة مُولّدة مسبقًا للسابق. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الموجه. إذا لم تُقدَّم، فسيتم توليد negative_prompt_embeds من معامل الإدخالnegative_prompt. - negative_prompt_embeds_pooled (
torch.Tensor, اختياري) — تضمينات نصية سالبة مُولّدة مسبقًا للسابق. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الموجه. إذا لم تُقدَّم، فسيتم توليد negative_prompt_embeds من معامل الإدخالnegative_prompt. - num_images_per_prompt (
int، اختياري، القيمة الافتراضية 1) — عدد الصور التي سيتم توليدها لكل موجه. - height (
int، اختياري، القيمة الافتراضية 512) — ارتفاع الصورة المولّدة بالبكسل. - width (
int، اختياري، القيمة الافتراضية 512) — عرض الصورة المولّدة بالبكسل. - prior_guidance_scale (
float، اختياري، القيمة الافتراضية 4.0) — مقياس التوجيه كما هو مُعرَّف في Classifier-Free Diffusion Guidance. يُعرَّفprior_guidance_scaleعلى أنهwمن المعادلة 2. في Imagen Paper. يتم تفعيل مقياس التوجيه عن طريق تعيينprior_guidance_scale > 1. يشجع مقياس التوجيه الأعلى على توليد صور مرتبطة ارتباطًا وثيقًا بنصprompt، وعادةً على حساب انخفاض جودة الصورة. - prior_num_inference_steps (
int | dict[float, int]، اختياري، القيمة الافتراضية 60) — عدد خطوات إزالة الضوضاء الأولية. تؤدي زيادة عدد خطوات إزالة الضوضاء عادةً إلى صورة بجودة أعلى على حساب بطء الاستدلال. للحصول على توزيع أكثر تحديدًا للخطوات الزمنية، يمكنك تمريرprior_timestepsمخصصة - num_inference_steps (
int، اختياري، القيمة الافتراضية 12) — عدد خطوات إزالة الضوضاء في المُفكِّك. تؤدي زيادة عدد خطوات إزالة الضوضاء عادةً إلى صورة بجودة أعلى على حساب بطء الاستدلال. للحصول على توزيع أكثر تحديدًا للخطوات الزمنية، يمكنك تمريرtimestepsمخصصة - decoder_guidance_scale (
float, اختياري، القيمة الافتراضية 0.0) — مقياس التوجيه كما هو مُعرَّف في Classifier-Free Diffusion Guidance. يُعرَّفguidance_scaleعلى أنهwمن المعادلة 2 في Imagen Paper. يتم تفعيل مقياس التوجيه عن طريق تعيينguidance_scale > 1. كلما زاد مقياس التوجيه، شجّع ذلك على توليد صور مرتبطة ارتباطًا وثيقًا بـpromptالنصي، وعادةً على حساب انخفاض جودة الصورة. - generator (
torch.Generatorأوlist[torch.Generator]، اختياري) — مولّد واحد أو قائمة من مولّدات torch لجعل التوليد حتميًا. - latents (
torch.Tensor، اختياري) — كائنات latents ضجيجية مُولّدة مسبقًا، مُستخرجة من توزيع غاوسي، تُستخدم كمدخلات لتوليد الصور. يمكن استخدامها لتعديل نفس التوليد باستخدام أوامر مختلفة. إذا لم تُقدَّم، سيتم توليد كائن latents عن طريق الاستخراج باستخدامgeneratorالعشوائي المُقدَّم. - output_type (
str، اختياري، القيمة الافتراضية"pil") — صيغة مخرجات توليد الصورة. اختر بين:"pil"(PIL.Image.Image)،"np"(np.array) أو"pt"(torch.Tensor). - return_dict (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب إرجاع ImagePipelineOutput بدلاً من tuple عادي. - prior_callback_on_step_end (
Callable، اختياري) — دالة تُستدعى في نهاية كل خطوة إزالة ضوضاء أثناء الاستدلال. تُستدعى الدالة مع الحُجج التالية:prior_callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). - prior_callback_on_step_end_tensor_inputs (
list، اختياري) — قائمة مدخلات المصفوفات (tensors) لدالةprior_callback_on_step_end. سيتم تمرير المصفوفات المحددة في القائمة كحجةcallback_kwargs. لن تتمكن من تضمين سوى المتغيرات المدرجة في خاصية._callback_tensor_inputsلفئة خط الأنابيب (pipeline) الخاص بك. - callback_on_step_end (
Callable، اختياري) — دالة تُستدعى في نهاية كل خطوة إزالة ضوضاء أثناء الاستدلال. تُستدعى الدالة بالحجج التالية:callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). ستتضمنcallback_kwargsقائمة بجميع المصفوفات كما حددتهاcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list، اختياري) — قائمة مدخلات المصفوفات (tensors) لدالةcallback_on_step_end. سيتم تمرير المصفوفات المحددة في القائمة كحجةcallback_kwargs. لن تتمكن من تضمين متغيرات غير مدرجة في خاصية._callback_tensor_inputsلفئة خط الأنابيب (pipeline) الخاص بك.
الدالة التي تُستدعى عند استدعاء خط الأنابيب للتوليد.
أمثلة:
>>> import torch
>>> from diffusers import StableCascadeCombinedPipeline
>>> pipe = StableCascadeCombinedPipeline.from_pretrained(
... "stabilityai/stable-cascade", variant="bf16", torch_dtype=torch.bfloat16
... )
>>> pipe.enable_model_cpu_offload()
>>> prompt = "an image of a shiba inu, donning a spacesuit and helmet"
>>> images = pipe(prompt=prompt)enable_model_cpu_offload
< source >( gpu_id: int | None = Nonedevice: typing.Union[torch.device, str] = None )
ينقل جميع النماذج إلى وحدة المعالجة المركزية (CPU) باستخدام accelerate، مما يقلل من استهلاك الذاكرة مع تأثير ضئيل على الأداء. مقارنةً بـ enable_sequential_cpu_offload، تنقل هذه الطريقة نموذجًا كاملًا واحدًا في كل مرة إلى وحدة معالجة الرسوميات (GPU) عند استدعاء طريقة forward الخاصة به، ويبقى النموذج في وحدة معالجة الرسوميات حتى تشغيل النموذج التالي. تكون وفورات الذاكرة أقل مما هي عليه مع enable_sequential_cpu_offload، لكن الأداء يكون أفضل بكثير بسبب التنفيذ التكراري لـ unet.
enable_sequential_cpu_offload
< source >( gpu_id: int | None = Nonedevice: typing.Union[torch.device, str] = None )
ينقل جميع النماذج (قواميس الحالة الخاصة بـ unet وtext_encoder وvae وsafety checker) إلى وحدة المعالجة المركزية (CPU) باستخدام 🤗
Accelerate، مما يقلل من استهلاك الذاكرة بشكل كبير. يتم نقل النماذج إلى torch.device('meta') وتحميلها على وحدة معالجة رسومات (GPU) فقط عند استدعاء طريقة forward الخاصة بالوحدة الفرعية المعنية. يتم تنفيذ النقل على أساس الوحدات الفرعية. تكون وفورات الذاكرة أعلى مما هي عليه عند استخدام enable_model_cpu_offload، لكن الأداء يكون أدنى.
StableCascadePriorPipeline
فئة diffusers.StableCascadePriorPipeline
< source >( tokenizer: CLIPTokenizertext_encoder: CLIPTextModelWithProjectionprior: StableCascadeUNetscheduler: DDPMWuerstchenSchedulerresolution_multiple: float = 42.67feature_extractor: transformers.models.clip.image_processing_pil_clip.CLIPImageProcessorPil | None = Noneimage_encoder: transformers.models.clip.modeling_clip.CLIPVisionModelWithProjection | None = None )
المعاملات
- prior (
StableCascadeUNet) — نموذج Stable Cascade السابق لتقريب تضمين الصورة من تضمين النص و/أو الصورة. - text_encoder (
CLIPTextModelWithProjection) — مُشفِّر نص ثابت (laion/CLIP-ViT-bigG-14-laion2B-39B-b160k). - feature_extractor (CLIPImageProcessor) —
نموذج يستخرج الميزات من الصور المولّدة لاستخدامها كمدخلات لـ
image_encoder. - image_encoder (
CLIPVisionModelWithProjection) — مُشفِّر صور CLIP مجمّد (clip-vit-large-patch14). - tokenizer (
CLIPTokenizer) — مقسّم من الفئة CLIPTokenizer. - scheduler (
DDPMWuerstchenScheduler) — جدولة تُستخدم بالاقتران معpriorلتوليد تضمين الصورة. - resolution_multiple (‘float’، اختياري، القيمة الافتراضية 42.67) — الدقة الافتراضية للصور المتعددة التي يتم توليدها.
خط أنابيب لتوليد المسبق (prior) للصور في Stable Cascade.
يرث هذا النموذج من DiffusionPipeline. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع خطوط الأنابيب (مثل التنزيل أو الحفظ، أو التشغيل على جهاز معين، وما إلى ذلك).
__call__
< source >( prompt: str | list[str] | None = Noneimages: typing.Union[torch.Tensor, list[torch.Tensor], PIL.Image.Image, list[PIL.Image.Image]] = Noneheight: int = 1024width: int = 1024num_inference_steps: int = 20timesteps: list[float] = Noneguidance_scale: float = 4.0negative_prompt: str | list[str] | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_pooled: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_pooled: typing.Optional[torch.Tensor] = Noneimage_embeds: typing.Optional[torch.Tensor] = Nonenum_images_per_prompt: int | None = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pt'return_dict: bool = Truecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list[str] = ['latents'] )
المعاملات
- prompt (
strأوlist[str]) — الموجّه أو الموجّهات التي تُوجّه توليد الصورة. - images (
torch.TensorأوPIL.Image.Imageأوlist[torch.Tensor]أوlist[PIL.Image.Image]، اختياري) — صورة مرجعية أو صور مرجعية تُستخدم لتكييف توليد المسبق. عند تقديمها، تُشتق تمثيلات الصور من الصورة وتُدمج مع موجه النص. - height (
int، اختياري، القيمة الافتراضية 1024) — ارتفاع الصورة المولّدة بالبكسل. - width (
int، اختياري، القيمة الافتراضية 1024) — عرض الصورة المولّدة بالبكسل. - num_inference_steps (
int، اختياري، القيمة الافتراضية 60) — عدد خطوات إزالة الضوضاء. تؤدي زيادة عدد خطوات إزالة الضوضاء عادةً إلى صورة بجودة أعلى على حساب بطء الاستدلال. - timesteps (
list[float], اختياري) — خطوات زمنية مخصصة لاستخدامها في عملية إزالة الضوضاء مع المجدولين الذين يدعمون معاملtimestepsفي طريقةset_timestepsالخاصة بهم. إذا لم يُعرَّف، فسيتم استخدام السلوك الافتراضي عند تمريرnum_inference_steps. يجب أن تكون بترتيب تنازلي. - guidance_scale (
float، اختياري، القيمة الافتراضية 8.0) — مقياس التوجيه كما هو مُعرَّف في Classifier-Free Diffusion Guidance. يُعرَّفdecoder_guidance_scaleعلى أنهwمن المعادلة 2. في Imagen Paper. يتم تفعيل مقياس التوجيه عن طريق تعيينdecoder_guidance_scale > 1. يشجع مقياس التوجيه الأعلى على توليد صور مرتبطة ارتباطًا وثيقًا بنصprompt، وعادةً على حساب انخفاض جودة الصورة. - negative_prompt (
strأوlist[str]، اختياري) — الموجّه أو الموجّهات التي لا ينبغي استخدامها لتوجيه توليد الصورة. يتم تجاهلها عند عدم استخدام التوجيه (أي يتم تجاهلها إذا كانdecoder_guidance_scaleأقل من1). - prompt_embeds (
torch.Tensor، اختياري) — تضمينات نصية مُولَّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الموجه. إذا لم تُقدَّم، فسيتم توليد تضمينات النص من معامل الإدخالprompt. - prompt_embeds_pooled (
torch.Tensor، اختياري) — تضمينات نصية مجمّعة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الموجه. إذا لم تُقدَّم، فسيتم توليد تضمينات النص المجمّعة من معامل الإدخالprompt. - negative_prompt_embeds (
torch.Tensor، اختياري) — تضمينات نصية سلبية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الموجه. إذا لم تُقدَّم، فسيتم توليد negative_prompt_embeds من معامل الإدخالnegative_prompt. - negative_prompt_embeds_pooled (
torch.Tensor، اختياري) — تضمينات نصية مجمعة سالبة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن المحفّز. إذا لم تُقدَّم، فسيتم توليد negative_prompt_embeds_pooled من معامل الإدخالnegative_prompt. - image_embeds (
torch.Tensor, اختياري) — تضمينات صور مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات الصور بسهولة، مثلًا وزن الأوامر النصية. إذا لم تُقدَّم، فسيتم توليد تضمينات الصور من معامل الإدخالimageإذا كان موجودًا. - num_images_per_prompt (
int، اختياري، القيمة الافتراضية 1) — عدد الصور التي سيتم توليدها لكل موجه. - generator (
torch.Generatorأوlist[torch.Generator]، اختياري) — مولّد واحد أو قائمة من مولّدات torch لجعل التوليد حتميًا. - latents (
torch.Tensor، اختياري) — كائنات latents ضجيجية مُولّدة مسبقًا، مُستخرجة من توزيع غاوسي، تُستخدم كمدخلات لتوليد الصور. يمكن استخدامها لتعديل نفس التوليد باستخدام أوامر مختلفة. إذا لم تُقدَّم، سيتم توليد كائن latents عن طريق الاستخراج باستخدامgeneratorالعشوائي المُقدَّم. - output_type (
str، اختياري، القيمة الافتراضية"pil") — صيغة مخرجات توليد الصورة. اختر بين:"pil"(PIL.Image.Image)،"np"(np.array) أو"pt"(torch.Tensor). - return_dict (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب إرجاع ImagePipelineOutput بدلاً من tuple عادي. - callback_on_step_end (
Callable، اختياري) — دالة تُستدعى في نهاية كل خطوة إزالة ضوضاء أثناء الاستدلال. تُستدعى الدالة بالحجج التالية:callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). ستتضمنcallback_kwargsقائمة بجميع المصفوفات كما حددتهاcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list، اختياري) — قائمة مدخلات المصفوفات (tensors) لدالةcallback_on_step_end. سيتم تمرير المصفوفات المحددة في القائمة كحجةcallback_kwargs. لن تتمكن من تضمين متغيرات غير مدرجة في خاصية._callback_tensor_inputsلفئة خط الأنابيب (pipeline) الخاص بك.
الدالة التي تُستدعى عند استدعاء خط الأنابيب للتوليد.
أمثلة:
>>> import torch
>>> from diffusers import StableCascadePriorPipeline
>>> prior_pipe = StableCascadePriorPipeline.from_pretrained(
... "stabilityai/stable-cascade-prior", torch_dtype=torch.bfloat16
... ).to("cuda")
>>> prompt = "an image of a shiba inu, donning a spacesuit and helmet"
>>> prior_output = pipe(prompt)StableCascadePriorPipelineOutput
فئة diffusers.pipelines.stable_cascade.pipeline_stable_cascade_prior.StableCascadePriorPipelineOutput
< source >( image_embeddings: typing.Union[torch.Tensor, numpy.ndarray]prompt_embeds: typing.Union[torch.Tensor, numpy.ndarray]prompt_embeds_pooled: typing.Union[torch.Tensor, numpy.ndarray]negative_prompt_embeds: typing.Union[torch.Tensor, numpy.ndarray]negative_prompt_embeds_pooled: typing.Union[torch.Tensor, numpy.ndarray] )
فئة الإخراج لـ WuerstchenPriorPipeline.
StableCascadeDecoderPipeline
فئة diffusers.StableCascadeDecoderPipeline
< source >( decoder: StableCascadeUNettokenizer: CLIPTokenizertext_encoder: CLIPTextModelWithProjectionscheduler: DDPMWuerstchenSchedulervqgan: PaellaVQModellatent_dim_scale: float = 10.67 )
المعاملات
- tokenizer (
CLIPTokenizer) — مقسّم نصوص CLIP. - text_encoder (
CLIPTextModelWithProjection) — مُشفِّر النص في CLIP. - decoder (
StableCascadeUNet) — شبكة UNet لفك الترميز في Stable Cascade. - vqgan (
PaellaVQModel) — نموذج VQGAN. - scheduler (
DDPMWuerstchenScheduler) — جدولة تُستخدم بالاقتران معpriorلتوليد تضمين الصورة. - latent_dim_scale (float,
optional, الافتراضي 10.67) — معامل لتحديد حجم فضاء VQ الكامن من تضمينات الصورة. إذا كانت تضمينات الصورة height=24 و width=24، فيجب أن يكون شكل VQ الكامن height=int(2410.67)=256 و width=int(2410.67)=256 من أجل مطابقة شروط التدريب.
خط أنابيب لتوليد الصور من نموذج Stable Cascade.
يرث هذا النموذج من DiffusionPipeline. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع خطوط الأنابيب (مثل التنزيل أو الحفظ، أو التشغيل على جهاز معين، وما إلى ذلك).
__call__
< source >( image_embeddings: typing.Union[torch.Tensor, list[torch.Tensor]]prompt: str | list[str] = Nonenum_inference_steps: int = 10guidance_scale: float = 0.0negative_prompt: str | list[str] | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_pooled: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_pooled: typing.Optional[torch.Tensor] = Nonenum_images_per_prompt: int = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list[str] = ['latents'] )
المعاملات
- image_embeddings (
torch.Tensorأوlist[torch.Tensor]) — تضمينات الصور المستخرجة من صورة أو المولّدة بواسطة نموذج مسبق. - prompt (
strأوlist[str]) — الموجّه أو الموجّهات التي تُوجّه توليد الصورة. - num_inference_steps (
int، اختياري، القيمة الافتراضية 12) — عدد خطوات إزالة الضوضاء. تؤدي زيادة عدد خطوات إزالة الضوضاء عادةً إلى صورة بجودة أعلى على حساب بطء الاستدلال. - guidance_scale (
float, اختياري، القيمة الافتراضية 0.0) — مقياس التوجيه كما هو مُعرَّف في Classifier-Free Diffusion Guidance. يُعرَّفdecoder_guidance_scaleعلى أنهwمن المعادلة 2. في Imagen Paper. يتم تفعيل مقياس التوجيه عن طريق تعيينdecoder_guidance_scale > 1. يشجع مقياس التوجيه الأعلى على توليد صور مرتبطة ارتباطًا وثيقًا بنصprompt، وعادةً على حساب انخفاض جودة الصورة. - negative_prompt (
strأوlist[str]، اختياري) — الموجّه أو الموجّهات التي لا ينبغي استخدامها لتوجيه توليد الصورة. يتم تجاهلها عند عدم استخدام التوجيه (أي يتم تجاهلها إذا كانdecoder_guidance_scaleأقل من1). - prompt_embeds (
torch.Tensor، اختياري) — تضمينات نصية مُولَّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الموجه. إذا لم تُقدَّم، فسيتم توليد تضمينات النص من معامل الإدخالprompt. - prompt_embeds_pooled (
torch.Tensor، اختياري) — تضمينات نصية مجمّعة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الموجه. إذا لم تُقدَّم، فسيتم توليد تضمينات النص المجمّعة من معامل الإدخالprompt. - negative_prompt_embeds (
torch.Tensor، اختياري) — تضمينات نصية سلبية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الموجه. إذا لم تُقدَّم، فسيتم توليد negative_prompt_embeds من معامل الإدخالnegative_prompt. - negative_prompt_embeds_pooled (
torch.Tensor، اختياري) — تضمينات نصية مجمعة سالبة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن المحفّز. إذا لم تُقدَّم، فسيتم توليد negative_prompt_embeds_pooled من معامل الإدخالnegative_prompt. - num_images_per_prompt (
int، اختياري، القيمة الافتراضية 1) — عدد الصور التي سيتم توليدها لكل موجه. - generator (
torch.Generatorأوlist[torch.Generator]، اختياري) — مولّد واحد أو قائمة من مولّدات torch لجعل التوليد حتميًا. - latents (
torch.Tensor، اختياري) — كائنات latents ضجيجية مُولّدة مسبقًا، مُستخرجة من توزيع غاوسي، تُستخدم كمدخلات لتوليد الصور. يمكن استخدامها لتعديل نفس التوليد باستخدام أوامر مختلفة. إذا لم تُقدَّم، سيتم توليد كائن latents عن طريق الاستخراج باستخدامgeneratorالعشوائي المُقدَّم. - output_type (
str، اختياري، القيمة الافتراضية"pil") — صيغة مخرجات توليد الصورة. اختر بين:"pil"(PIL.Image.Image)،"np"(np.array) أو"pt"(torch.Tensor). - return_dict (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب إرجاع ImagePipelineOutput بدلاً من tuple عادي. - callback_on_step_end (
Callable، اختياري) — دالة تُستدعى في نهاية كل خطوة إزالة ضوضاء أثناء الاستدلال. تُستدعى الدالة بالحجج التالية:callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). ستتضمنcallback_kwargsقائمة بجميع المصفوفات كما حددتهاcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list، اختياري) — قائمة مدخلات المصفوفات (tensors) لدالةcallback_on_step_end. سيتم تمرير المصفوفات المحددة في القائمة كحجةcallback_kwargs. لن تتمكن من تضمين متغيرات غير مدرجة في خاصية._callback_tensor_inputsلفئة خط الأنابيب (pipeline) الخاص بك.
الدالة التي تُستدعى عند استدعاء خط الأنابيب للتوليد.
أمثلة:
>>> import torch
>>> from diffusers import StableCascadePriorPipeline, StableCascadeDecoderPipeline
>>> prior_pipe = StableCascadePriorPipeline.from_pretrained(
... "stabilityai/stable-cascade-prior", torch_dtype=torch.bfloat16
... ).to("cuda")
>>> gen_pipe = StableCascadeDecoderPipeline.from_pretrain(
... "stabilityai/stable-cascade", torch_dtype=torch.float16
... ).to("cuda")
>>> prompt = "an image of a shiba inu, donning a spacesuit and helmet"
>>> prior_output = pipe(prompt)
>>> images = gen_pipe(prior_output.image_embeddings, prompt=prompt)