Diffusers documentation

CMStochasticIterativeScheduler

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

CMStochasticIterativeScheduler

قدّم Consistency Models الذي كتبه Yang Song و Prafulla Dhariwal و Mark Chen و Ilya Sutskever جدولة متعددة الخطوات وأخرى بخطوة واحدة (الخوارزمية 1) قادرة على توليد عينات جيدة في خطوة واحدة أو عدد قليل من الخطوات.

ملخص الورقة البحثية هو:

حقّقت نماذج الانتشار تقدماً كبيراً في مجالات توليد الصور والصوت والفيديو، لكنها تعتمد على عملية أخذ عينات تكرارية تسبب بطئاً في التوليد. للتغلب على هذه القيود، نقترح نماذج الاتساق، وهي عائلة جديدة من النماذج تولّد عينات عالية الجودة عن طريق خرائط الضوضاء مباشرةً إلى البيانات. فهي تدعم التوليد السريع بخطوة واحدة بالتصميم، مع السماح في الوقت نفسه بأخذ عينات متعددة الخطوات لتبادل الحسابات مقابل جودة العينة. كما تدعم تحرير البيانات بدون تدريب مسبق، مثل ملء الصور (inpainting)، والتلوين، والدقة الفائقة، دون الحاجة إلى تدريب صريح على هذه المهام. يمكن تدريب نماذج الاتساق إما عن طريق تقطير نماذج الانتشار المدربة مسبقاً، أو كنماذج توليدية مستقلة تماماً. من خلال تجارب شاملة، نثبت أنها تتفوق على تقنيات التقطير الحالية لنماذج الانتشار في أخذ العينات بخطوة واحدة وبضع خطوات، محققةً أحدث مستوى من الأداء (state-of-the-art) بمقياس FID قدره 3.55 على CIFAR-10 و6.20 على ImageNet 64x64 للتوليد بخطوة واحدة. عند تدريبها بشكل منفصل، تصبح نماذج الاتساق عائلة جديدة من النماذج التوليدية يمكن أن تتفوق على النماذج التوليدية الحالية بخطوة واحدة وغير العدائية على المعايير القياسية مثل CIFAR-10 وImageNet 64x64 وLSUN 256x256.

يمكن العثور على قاعدة الكود الأصلية في openai/consistency_models.

CMStochasticIterativeScheduler

فئة diffusers.CMStochasticIterativeScheduler

< >

( num_train_timesteps: int = 40sigma_min: float = 0.002sigma_max: float = 80.0sigma_data: float = 0.5s_noise: float = 1.0rho: float = 7.0clip_denoised: bool = True )

المعاملات

  • num_train_timesteps (int، القيمة الافتراضية 40) — عدد خطوات الانتشار لتدريب النموذج.
  • sigma_min (float، القيمة الافتراضية 0.002) — أدنى حجم للضوضاء في جدول سيجما. القيمة الافتراضية هي 0.002 من التنفيذ الأصلي.
  • sigma_max (float، القيمة الافتراضية 80.0) — أقصى قيمة لضوضاء في جدول سيجما. القيمة الافتراضية هي 80.0 من التنفيذ الأصلي.
  • sigma_data (float, القيمة الافتراضية 0.5) — انحراف المعيار لتوزيع البيانات من ورقة EDM البحثية. القيمة الافتراضية هي 0.5 من التنفيذ الأصلي.
  • s_noise (float، القيمة الافتراضية 1.0) — كمية الضوضاء الإضافية لمقاومة فقدان التفاصيل أثناء أخذ العينات. النطاق المعقول هو [1.000, 1.011]. القيمة الافتراضية هي 1.0 من التنفيذ الأصلي.
  • rho (float، القيمة الافتراضية 7.0) — المعامل المستخدم لحساب جدول Karras sigma من ورقة EDM. القيمة الافتراضية هي 7.0 من التنفيذ الأصلي.
  • clip_denoised (bool) — القيمة الافتراضية True — ما إذا كان سيتم قص المخرجات بعد إزالة الضوضاء إلى (-1, 1).
  • timesteps (list أو np.ndarray أو torch.Tensor، اختياري) — جدول صريح لخطوات الزمن يمكن تحديده بشكل اختياري. يُتوقع أن تكون الخطوات مرتبة بترتيب تصاعدي.

التعيّن متعدد الخطوات والتعيّن أحادي الخطوة لنماذج الاتساق.

يرث هذا النموذج من SchedulerMixin و ConfigMixin. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع مجدوليات الوقت مثل التحميل والحفظ.

add_noise

< >

( original_samples: Tensornoise: Tensortimesteps: Tensor ) → torch.Tensor

المعاملات

  • original_samples (torch.Tensor) — العينات الأصلية التي سيتم إضافة الضوضاء إليها.
  • noise (torch.Tensor) — مصفوفة الضوضاء التي تُضاف إلى العينات الأصلية.
  • timesteps (torch.Tensor) — خطوات الزمن التي يُضاف عندها الضوضاء، والتي تحدد مستوى الضوضاء من الجدول الزمني.

يعيد

torch.Tensor

العينات الضوضائية مع ضوضاء مضافة مُقيّمة وفقًا لجدول خطوات الزمن.

أضف الضوضاء إلى العينات الأصلية وفقًا لجدول الضوضاء عند خطوات الزمن المحددة.

get_scalings

< >

( sigma: Tensor ) → tuple[torch.Tensor, torch.Tensor]

المعاملات

  • sigma (torch.Tensor) — قيمة sigma الحالية في جدول الضوضاء.

يعيد

tuple[torch.Tensor, torch.Tensor]

مجموعة تحتوي على c_skip (التحجيم لعينة الإدخال) وc_out (التحجيم لإخراج النموذج).

يُحسب عوامل التوسيع لمخرجات نموذج الاتساق.

get_scalings_for_boundary_condition

< >

( sigma: Tensor ) → tuple[torch.Tensor, torch.Tensor]

المعاملات

  • sigma (torch.Tensor) — القيمة الحالية لـ sigma في جدول Karras sigma.

يعيد

tuple[torch.Tensor, torch.Tensor]

مجموعة مرتبة من عنصرين حيث يكون c_skip (الذي يوزّن العينة الحالية) هو العنصر الأول وc_out (الذي يوزّن مخرجات نموذج الاتساق) هو العنصر الثاني.

يحصل على معاملات التوسيع المستخدمة في ترميز نموذج الاتساق (من الملحق C من الورقة) لفرض شرط الحد.

> يُضبط epsilon في معادلات c_skip وc_out على sigma_min.

index_for_timestep

< >

( timestep: typing.Union[float, torch.Tensor]schedule_timesteps: typing.Optional[torch.Tensor] = None ) → int

المعاملات

  • timestep (float أو torch.Tensor) — قيمة الخطوة الزمنية التي يجب البحث عنها في الجدول الزمني.
  • schedule_timesteps (torch.Tensor، اختياري) — جدول الخطوات الزمنية للبحث فيه. إذا كان None، يتم استخدام self.timesteps.

يعيد

int

مؤشر خطوة الزمن في الجدول. بالنسبة للخطوة الأولى تمامًا، يُرجع المؤشر الثاني إذا كانت هناك تطابقات متعددة لتجنب تخطي قيمة سيجما عند البدء من منتصف الجدول (مثلًا، في تحويل الصورة إلى صورة).

ابحث عن فهرس خطوة زمنية محددة في جدول الخطوات الزمنية.

scale_model_input

< >

( sample: Tensortimestep: typing.Union[float, torch.Tensor] ) → torch.Tensor

المعاملات

  • sample (torch.Tensor) — العينة المدخلة.
  • timestep (float أو torch.Tensor) — خطوة الزمن الحالية في سلسلة الانتشار.

يعيد

torch.Tensor

عينة إدخال مُقيّمة.

يُقيّم مدخل نموذج الاتساق بواسطة (sigma**2 + sigma_data**2) ** 0.5.

set_begin_index

< >

( begin_index: int = 0 )

المعاملات

  • begin_index (int، القيمة الافتراضية 0) — الفهرس الابتدائي للمجدول.

يحدد الفهرس الابتدائي للمجدول. يجب تشغيل هذه الدالة من خط الأنابيب قبل الاستدلال.

set_timesteps

< >

( num_inference_steps: int | None = Nonedevice: typing.Union[str, torch.device] = Nonetimesteps: list[int] | None = None )

المعاملات

  • num_inference_steps (int, اختياري) — عدد خطوات الانتشار المستخدمة عند توليد العينات باستخدام نموذج مُدرَّب مسبقًا.
  • device (str أو torch.device، اختياري) — الجهاز الذي يجب نقل خطوات الزمن (timesteps) إليه. إذا كان None، فلن يتم نقل خطوات الزمن.
  • timesteps (list[int]، اختياري) — خطوات زمنية مخصصة تُستخدم لدعم تباعد تعسفي بين الخطوات الزمنية. إذا كانت None، فسيتم استخدام استراتيجية التباعد الافتراضية للخطوات الزمنية، وهي التباعد المتساوي بينها. إذا تم تمرير timesteps، فيجب أن تكون num_inference_steps هي None.

يحدد الخطوات الزمنية المستخدمة لسلسلة الانتشار (لتُنفَّذ قبل الاستدلال).

sigma_to_t

< >

( sigmas: float | numpy.ndarray ) → np.ndarray

المعاملات

  • sigmas (float أو np.ndarray) — قيمة Karras sigma واحدة أو مصفوفة من قيم Karras sigmas.

يعيد

np.ndarray

مصفوفة خطوات زمنية مدخلة مُقيّمة.

يحصل على خطوات زمنية مُقيَّمة من قيم Karras sigmas كمدخل إلى نموذج الاتساق.

خطوة

< >

( model_output: Tensortimestep: typing.Union[float, torch.Tensor]sample: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → CMStochasticIterativeSchedulerOutput or tuple

المعاملات

  • model_output (torch.Tensor) — المخرجات المباشرة من نموذج الانتشار المُتعلَّم.
  • timestep (float أو torch.Tensor) — خطوة الزمن الحالية في سلسلة الانتشار.
  • sample (torch.Tensor) — نسخة حالية من العينة التي أنشأها عملية الانتشار.
  • generator (torch.Generator، اختياري) — مولّد أرقام عشوائية.
  • return_dict (bool، القيمة الافتراضية True) — ما إذا كان يجب إرجاع CMStochasticIterativeSchedulerOutput أو tuple.

If return_dict is True, CMStochasticIterativeSchedulerOutput is returned, otherwise a tuple is returned where the first element is the sample tensor.

تنبّأ بالعيّنة من الخطوة الزمنية السابقة عن طريق عكس عملية المعادلة التفاضلية العشوائية (SDE). تنقل هذه الدالة عملية الانتشار من مخرجات النموذج المُتعلَّم (والتي تكون في الغالب الضوضاء المتنبَّأ بها).

CMStochasticIterativeSchedulerOutput

فئة diffusers.schedulers.scheduling_consistency_models.CMStochasticIterativeSchedulerOutput

< >

( prev_sample: Tensor )

المعاملات

  • prev_sample (torch.Tensor من الشكل (batch_size, num_channels, height, width) للصور) — العينة المحسوبة (x_{t-1}) لخطوة الزمن السابقة. يجب استخدام prev_sample كمدخل للنموذج التالي في حلقة إزالة الضوضاء.

فئة الإخراج لدالة step في المجدول.

Update on GitHub