Diffusers documentation

EDMEulerScheduler

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

EDMEulerScheduler

The Karras formulation of the Euler scheduler (Algorithm 2) from the Elucidating the Design Space of Diffusion-Based Generative Models paper by Karras et al. This is a fast scheduler which can often generate good outputs in 20-30 steps. The scheduler is based on the original k-diffusion implementation by Katherine Crowson.

EDMEulerScheduler

فئة diffusers.EDMEulerScheduler

< >

( sigma_min: float = 0.002sigma_max: float = 80.0sigma_data: float = 0.5sigma_schedule: typing.Literal['karras', 'exponential'] = 'karras'num_train_timesteps: int = 1000prediction_type: typing.Literal['epsilon', 'v_prediction'] = 'epsilon'rho: float = 7.0final_sigmas_type: typing.Literal['zero', 'sigma_min'] = 'zero' )

المعاملات

  • sigma_min (float، اختياري، القيمة الافتراضية 0.002) — أدنى حجم للضوضاء في جدول سيجما. تم ضبط هذه القيمة على 0.002 في ورقة EDM [1]؛ والنطاق المعقول هو [0، 10].
  • sigma_max (float، اختياري، القيمة الافتراضية 80.0) — أقصى حجم للضوضاء في جدول سيجما. تم ضبط هذه القيمة على 80.0 في ورقة EDM [1]؛ النطاق المعقول هو [0.2، 80.0].
  • sigma_data (float، اختياري، القيمة الافتراضية 0.5) — انحراف المعيار لتوزيع البيانات. تم ضبطه على 0.5 في ورقة EDM [1].
  • sigma_schedule (Literal["karras", "exponential"]، اختياري، القيمة الافتراضية "karras") — جدول سيجما لحساب sigmas. بشكل افتراضي، نستخدم الجدول المقدم في ورقة EDM (https://huggingface.co/papers/2206.00364). تم دمج جدول "exponential" في هذا النموذج: https://huggingface.co/stabilityai/cosxl.
  • num_train_timesteps (int، اختياري، القيمة الافتراضية 1000) — عدد خطوات الانتشار (diffusion) لتدريب النموذج.
  • prediction_type (Literal["epsilon", "v_prediction"]، اختياري، القيمة الافتراضية "epsilon") — نوع التنبؤ لدالة المجدول. "epsilon" يتنبأ بالضوضاء في عملية الانتشار، و "v_prediction" (انظر القسم 2.4 من ورقة Imagen Video).
  • rho (float، اختياري، القيمة الافتراضية 7.0) — معامل rho المستخدم لحساب جدول Karras sigma، والذي تم ضبطه على 7.0 في ورقة EDM [1].
  • final_sigmas_type (Literal["zero", "sigma_min"]، اختياري، القيمة الافتراضية "zero") — قيمة sigma النهائية لجدول الضوضاء أثناء عملية أخذ العينات. إذا كانت "sigma_min"، فإن قيمة sigma النهائية هي نفسها آخر قيمة sigma في جدول التدريب. أما إذا كانت "zero"، فتُضبط قيمة sigma النهائية على 0.

يُنفّذ مُجدول أويلر بصياغة EDM كما ورد في Karras et al. 2022 [1].

[1] كاراس، تيرو، وآخرون. “إيضاح مساحة التصميم للنماذج التوليدية القائمة على الانتشار.” https://huggingface.co/papers/2206.00364

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

add_noise

< >

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

المعاملات

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

يعيد

torch.Tensor

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

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

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

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

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

precondition_inputs

< >

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

المعاملات

  • sample (torch.Tensor) — مصفوفة العينة المدخلة التي سيتم تجهيزها مسبقًا.
  • sigma (float أو torch.Tensor) — قيمة سيجما (مستوى الضوضاء) الحالية.

يعيد

torch.Tensor

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

جهّز عينة الإدخال مسبقًا عن طريق تحجيمها وفقًا لصياغة EDM.

precondition_noise

< >

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

المعاملات

  • sigma (float أو torch.Tensor) — قيمة سيجما (مستوى الضوضاء) التي سيتم إعدادها مسبقًا.

يعيد

torch.Tensor

قيمة الضوضاء المُعدَّلة المُحسوبة على أنها 0.25 * log(sigma).

قم بتكييف مستوى الضوضاء من خلال تطبيق تحويل لوغاريتمي.

precondition_outputs

< >

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

المعاملات

  • sample (torch.Tensor) — مصفوفة العينة المدخلة.
  • model_output (torch.Tensor) — المخرجات المباشرة من نموذج الانتشار المُتعلَّم.
  • sigma (float أو torch.Tensor) — قيمة سيجما (مستوى الضوضاء) الحالية.

يعيد

torch.Tensor

العينة المُزالة الضوضاء المحسوبة عن طريق دمج اتصال التخطي وتوسيط المخرجات.

قم بإعداد مخرجات النموذج مسبقاً وفقاً لصياغة EDM.

scale_model_input

< >

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

المعاملات

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

يعيد

torch.Tensor

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

قم بتوسيع مدخلات نموذج إزالة الضوضاء لتتوافق مع خوارزمية Euler. يضمن ذلك إمكانية الاستبدال مع المجدولات التي تحتاج إلى توسيع مدخلات نموذج إزالة الضوضاء اعتمادًا على خطوة الزمن الحالية.

set_begin_index

< >

( begin_index: int = 0 )

المعاملات

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

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

set_timesteps

< >

( num_inference_steps: int = Nonedevice: typing.Union[str, torch.device] = Nonesigmas: typing.Union[list[float], torch.Tensor, NoneType] = None )

المعاملات

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

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

خطوة

< >

( model_output: Tensortimestep: typing.Union[float, torch.Tensor]sample: Tensors_churn: float = 0.0s_tmin: float = 0.0s_tmax: float = infs_noise: float = 1.0generator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = Truepred_original_sample: typing.Optional[torch.Tensor] = None ) → EDMEulerSchedulerOutput or tuple

المعاملات

  • model_output (torch.Tensor) — المخرجات المباشرة من نموذج الانتشار المُتعلَّم.
  • timestep (float أو torch.Tensor) — خطوة الزمن المنفصلة الحالية في سلسلة الانتشار.
  • sample (torch.Tensor) — نسخة حالية من العينة التي أنشأها عملية الانتشار.
  • s_churn (float، اختياري، القيمة الافتراضية 0.0) — كمية العشوائية التي تُضاف في كل خطوة. القيم الأعلى تضيف المزيد من الضوضاء.
  • s_tmin (float، اختياري، القيمة الافتراضية 0.0) — الحد الأدنى لقيمة سيجما الذي لا يُضاف ضجيجٌ تحته.
  • s_tmax (float، اختياري، القيمة الافتراضية float("inf")) — الحد الأقصى لقيمة سيجما الذي لا يُضاف فوقه أي ضوضاء.
  • s_noise (float، اختياري، القيمة الافتراضية 1.0) — معامل التدرج للضوضاء المضافة إلى العينة.
  • generator (torch.Generator، اختياري) — مولّد أرقام عشوائية لضمان قابلية التكرار.
  • return_dict (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب إرجاع EDMEulerSchedulerOutput أو tuple.
  • pred_original_sample (torch.Tensor، اختياري) — العينة المُتنبَّأ بها بعد إزالة الضوضاء من خطوة سابقة. إذا تم تقديمها، يتم تجاوز إعادة الحساب.

يعيد

EDMEulerSchedulerOutput أو tuple

إذا كان return_dict هو True، يتم إرجاع EDMEulerSchedulerOutput، وإلا يتم إرجاع tuple حيث يكون العنصر الأول هو tensor للعينة السابقة والعنصر الثاني هو tensor للعينة الأصلية المتوقعة.

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

EDMEulerSchedulerOutput

فئة diffusers.schedulers.scheduling_edm_euler.EDMEulerSchedulerOutput

< >

( prev_sample: Tensorpred_original_sample: typing.Optional[torch.Tensor] = None )

المعاملات

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

فئة الإخراج لدالة step الخاصة بالجدول الزمني.

Update on GitHub