Diffusers documentation

ScoreSdeVeScheduler

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

ScoreSdeVeScheduler

ScoreSdeVeScheduler هو مُجدول معادلة تفاضلية عشوائية (SDE) من نوع انفجار التباين. تم تقديمه في ورقة Score-Based Generative Modeling through Stochastic Differential Equations التي كتبها Yang Song و Jascha Sohl-Dickstein و Diederik P. Kingma و Abhishek Kumar و Stefano Ermon و Ben Poole.

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

إنشاء الضوضاء من البيانات أمرٌ سهل؛ أما إنشاء البيانات من الضوضاء فهو نمذجة توليدية. نقدّم معادلة تفاضلية عشوائية (SDE) تحوّل بسلاسة توزيع بيانات معقّد إلى توزيع مسبق معروف من خلال حقن الضوضاء ببطء، ومعادلة تفاضلية عشوائية معاكسة في الزمن تحوّل التوزيع المسبق مرة أخرى إلى توزيع البيانات من خلال إزالة الضوضاء ببطء. والأهم من ذلك، أن معادلة الزمن المعاكس تعتمد فقط على حقل التدرّج المعتمد على الزمن (المعروف أيضاً باسم الدرجة) لتوزيع البيانات المُعطَّبة. بالاستفادة من التطورات في النمذجة التوليدية القائمة على الدرجة، يمكننا تقدير هذه الدرجات بدقة باستخدام الشبكات العصبية، واستخدام محلّلات SDE العددية لتوليد العينات. نُظهر أن هذا الإطار يحوي الأساليب السابقة في النمذجة التوليدية القائمة على الدرجة والنمذجة الاحتمالية الانتشارية، مما يتيح إجراءات أخذ عينات جديدة وقدرات نمذجة جديدة. على وجه الخصوص، نقدّم إطار تنبّؤ-تصحيح لتصحيح الأخطاء في تطوّر معادلة الزمن المعاكس المُفرَّضة. كما نُشتق معادلة تفاضلية عادية عصبية مكافئة تأخذ عينات من نفس التوزيع الذي تأخذه معادلة SDE، لكنها تتيح أيضاً حساب الاحتمال الدقيق، وتحسين كفاءة أخذ العينات. بالإضافة إلى ذلك، نقدّم طريقة جديدة لحل المسائل العكسية باستخدام النماذج القائمة على الدرجة، كما يُستدل عليه من تجارب على التوليد الشرطي حسب الفئة، وتعبئة الصور، وتلوين الصور. وبدمج ذلك مع تحسينات معمارية متعددة، نحقق أداءً قياسياً في التوليد غير الشرطي للصور على CIFAR-10 مع درجة Inception تبلغ 9.89 وFID تبلغ 2.20، واحتمال تنافسي يبلغ 2.99 بت/بعد، ونُظهر لأول مرة توليد صور عالية الوضوح بمقاس 1024 x 1024 من نموذج توليدي قائم على الدرجة.

ScoreSdeVeScheduler

فئة diffusers.ScoreSdeVeScheduler

< >

( num_train_timesteps: int = 2000snr: float = 0.15sigma_min: float = 0.01sigma_max: float = 1348.0sampling_eps: float = 1e-05correct_steps: int = 1 )

المعاملات

  • num_train_timesteps (int، القيمة الافتراضية 2000) — عدد خطوات الانتشار لتدريب النموذج.
  • snr (float، القيمة الافتراضية 0.15) — معامل يوزّن الخطوة من عينة model_output (من الشبكة) إلى الضوضاء العشوائية.
  • sigma_min (float، القيمة الافتراضية 0.01) — مقياس الضوضاء الأولي لسلسلة سيجما في إجراء العينة. يجب أن يعكس سيجما الأدنى توزيع البيانات.
  • sigma_max (float، القيمة الافتراضية 1348.0) — القيمة القصوى المستخدمة لنطاق خطوات الزمن المستمرة المُمرَّرة إلى النموذج.
  • sampling_eps (float، القيمة الافتراضية 1e-5) — القيمة النهائية للعينة حيث تتناقص الخطوات الزمنية تدريجياً من 1 إلى إبسيلون.
  • correct_steps (int، القيمة الافتراضية 1) — عدد خطوات التصحيح التي تُنفَّذ على العينة المُنتَجة.

ScoreSdeVeScheduler هو مُجدول معادلة تفاضلية عشوائية (SDE) من نوع انفجار التباين.

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

add_noise

< >

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

المعاملات

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

يعيد

torch.Tensor

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

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

get_adjacent_sigma

< >

( timesteps: Tensort: Tensor ) → torch.Tensor

المعاملات

  • timesteps (torch.Tensor) — مصفوفة فهارس خطوات الزمن المنفصلة.
  • t (torch.Tensor) — مصفوفة قيم خطوات الزمن المستمرة.

يعيد

torch.Tensor

قيم سيجما لمؤشر الخطوة الزمنية المجاورة (السابقة).

يعيد قيمة sigma المقابلة لمؤشر الخطوة الزمنية السابقة. عندما تكون الخطوة الزمنية صفرًا (لا توجد خطوة زمنية سابقة)، يعيد صفرًا.

scale_model_input

< >

( sample: Tensortimestep: int | None = None ) → torch.Tensor

المعاملات

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

يعيد

torch.Tensor

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

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

set_sigmas

< >

( num_inference_steps: intsigma_min: float | None = Nonesigma_max: float | None = Nonesampling_eps: float | None = None )

المعاملات

  • num_inference_steps (int) — عدد خطوات الانتشار المستخدمة عند توليد العينات باستخدام نموذج مُدرَّب مسبقًا.
  • sigma_min (float, اختياري) — قيمة مقياس الضوضاء الأولية (تتجاوز القيمة المُعطاة أثناء إنشاء المجدول).
  • sigma_max (float, اختياري) — قيمة مقياس الضوضاء النهائية (تتجاوز القيمة المُعطاة أثناء إنشاء المجدول).
  • sampling_eps (float، اختياري) — قيمة الخطوة الزمنية النهائية (تتجاوز القيمة المُعطاة أثناء إنشاء المجدول).

Sets the noise scales used for the diffusion chain (to be run before inference). The sigmas control the weight of the drift and diffusion components of the sample update.

set_timesteps

< >

( num_inference_steps: intsampling_eps: float | None = Nonedevice: typing.Union[str, torch.device, NoneType] = None )

المعاملات

  • num_inference_steps (int) — عدد خطوات الانتشار المستخدمة عند توليد العينات باستخدام نموذج مُدرَّب مسبقًا.
  • sampling_eps (float، اختياري) — قيمة الخطوة الزمنية النهائية (تتجاوز القيمة المُعطاة أثناء إنشاء المجدول).
  • device (str أو torch.device، اختياري) — الجهاز الذي يجب نقل خطوات الزمن (timesteps) إليه. إذا كان None، فلن يتم نقل خطوات الزمن.

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

step_correct

< >

( model_output: Tensorsample: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → SchedulerOutput or tuple

المعاملات

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

يعيد

SchedulerOutput أو tuple

إذا كانت True هي قيمة return_dict، يُعاد SchedulerOutput، وإلا يُعاد tuple حيث يكون العنصر الأول هو tensor العينة.

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

step_pred

< >

( model_output: Tensortimestep: intsample: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → SdeVeOutput or tuple

المعاملات

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

يعيد

SdeVeOutput أو tuple

إذا كانت قيمة return_dict هي True، يُعاد SdeVeOutput، وإلا يُعاد tuple يكون العنصر الأول فيه tensor العينة.

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

SdeVeOutput

فئة diffusers.schedulers.scheduling_sde_ve.SdeVeOutput

< >

( prev_sample: Tensorprev_sample_mean: Tensor )

المعاملات

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

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

Update on GitHub