Diffusers documentation

Stable Cascade

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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

< >

( 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__

< >

( 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

< >

( 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

< >

( 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

< >

( 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__

< >

( 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

< >

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

المعاملات

  • image_embeddings (torch.Tensor أو np.ndarray) — تضمينات الصور السابقة لنص الموجه
  • prompt_embeds (torch.Tensor) — تضمينات النص للموجّه.
  • negative_prompt_embeds (torch.Tensor) — تضمينات النص للموجّه السلبي.

فئة الإخراج لـ WuerstchenPriorPipeline.

StableCascadeDecoderPipeline

فئة diffusers.StableCascadeDecoderPipeline

< >

( 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__

< >

( 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)
Update on GitHub