Diffusers documentation
ScoreSdeVeScheduler
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
< source >( 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
< source >( original_samples: Tensornoise: Tensortimesteps: Tensor ) → torch.Tensor
المعاملات
- original_samples (
torch.Tensor) — العينات الأصلية التي سيتم إضافة الضوضاء إليها. - noise (
torch.Tensor) — مصفوفة الضوضاء التي تُضاف إلى العينات الأصلية. - timesteps (
torch.Tensor) — خطوات الزمن التي يُضاف عندها الضوضاء، والتي تحدد مستوى الضوضاء من الجدول الزمني.
يعيد
torch.Tensor
العينات الضوضائية مع ضوضاء مضافة مُقيّمة وفقًا لجدول خطوات الزمن.
أضف الضوضاء إلى العينات الأصلية وفقًا لجدول الضوضاء عند خطوات الزمن المحددة. هذه هي عملية الانتشار الأمامية.
get_adjacent_sigma
< source >( timesteps: Tensort: Tensor ) → torch.Tensor
يعيد قيمة sigma المقابلة لمؤشر الخطوة الزمنية السابقة. عندما تكون الخطوة الزمنية صفرًا (لا توجد خطوة زمنية سابقة)، يعيد صفرًا.
scale_model_input
< source >( sample: Tensortimestep: int | None = None ) → torch.Tensor
يضمن قابلية الاستبدال مع المجدولات التي تحتاج إلى تحجيم مدخلات نموذج إزالة الضوضاء اعتمادًا على خطوة الزمن الحالية.
set_sigmas
< source >( 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
< source >( 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
< source >( 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
< source >( 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
< source >( 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 الخاصة بالجدول الزمني.