Diffusers documentation
DDPMScheduler
DDPMScheduler
يقترح نماذج الانتشار الاحتمالية لإزالة الضوضاء (DDPM) التي قدمها جوناثان هو، وأجاي جاين، وبايتر أبييل، نموذجًا قائمًا على الانتشار يحمل الاسم نفسه. في سياق مكتبة 🤗 Diffusers، يشير DDPM إلى جدولة إزالة الضوضاء المنفصلة الواردة في الورقة البحثية، وكذلك إلى خط المعالجة (pipeline).
ملخص الورقة البحثية هو:
نقدّم نتائج عالية الجودة لتوليد الصور باستخدام نماذج الاحتمالية الانتشارية، وهي فئة من نماذج المتغيرات الكامنة مستوحاة من اعتبارات في الديناميكا الحرارية غير المتوازنة. نحصل على أفضل نتائجنا من خلال التدريب على حدّ تقريبي مرجّح مصمَّم وفق ارتباط جديد بين النماذج الاحتمالية الانتشارية ومطابقة درجات إزالة الضوضاء مع ديناميكا لانجفين، وتقبل نماذجنا بشكل طبيعي مخططًا تدريجيًا لفك الضغط مع فقدان يمكن تفسيره كتعميم لفك الترميز الذاتي التتابعي. على مجموعة بيانات CIFAR10 غير الشرطية، نحصل على درجة Inception تبلغ 9.46 ودرجة FID متقدمة تبلغ 3.17. على LSUN بدقة 256x256، نحصل على جودة عينات مماثلة لتلك التي يقدمها ProgressiveGAN. تتوفر تنفيعتنا على هذا الرابط.
DDPMScheduler
فئة diffusers.DDPMScheduler
< source >( num_train_timesteps: int = 1000beta_start: float = 0.0001beta_end: float = 0.02beta_schedule: typing.Literal['linear', 'scaled_linear', 'squaredcos_cap_v2', 'sigmoid'] = 'linear'trained_betas: numpy.ndarray | list[float] | None = Nonevariance_type: typing.Literal['fixed_small', 'fixed_small_log', 'fixed_large', 'fixed_large_log', 'learned', 'learned_range'] = 'fixed_small'clip_sample: bool = Trueprediction_type: typing.Literal['epsilon', 'sample', 'v_prediction'] = 'epsilon'thresholding: bool = Falsedynamic_thresholding_ratio: float = 0.995clip_sample_range: float = 1.0sample_max_value: float = 1.0timestep_spacing: typing.Literal['linspace', 'leading', 'trailing'] = 'leading'steps_offset: int = 0rescale_betas_zero_snr: bool = False )
المعاملات
- num_train_timesteps (
int، القيمة الافتراضية1000) — عدد خطوات الانتشار لتدريب النموذج. - beta_start (
float، القيمة الافتراضية0.0001) — قيمةbetaالابتدائية للاستدلال. - beta_end (
float، القيمة الافتراضية0.02) — القيمة النهائية لـbeta. - beta_schedule (
"linear"،"scaled_linear"،"squaredcos_cap_v2"، أو"sigmoid"، الافتراضي هو"linear") — جدول بيتا، وهو إسقاط من نطاق بيتا إلى تسلسل من قيم بيتا لخطوات النموذج. - trained_betas (
np.ndarray، اختياري) — مصفوفة من قيم بيتا تُمرَّر مباشرةً إلى منشئ الكائن دون استخدامbeta_startوbeta_end. - variance_type (
"fixed_small"،"fixed_small_log"،"fixed_large"،"fixed_large_log"،"learned"، أو"learned_range"، الافتراضي هو"fixed_small") — قصّ التباين عند إضافة الضوضاء إلى العينة المُزالة الضوضاء. - clip_sample (
bool، القيمة الافتراضيةTrue) — يقوم بقص العينة المتوقعة من أجل الاستقرار العددي. - clip_sample_range (
float، القيمة الافتراضية1.0) — الحد الأقصى لحجم قصّ العينة. صالح فقط عندما يكونclip_sample=True. - prediction_type (
"epsilon","sample", or"v_prediction", defaults to"epsilon") — Prediction type of the scheduler function; can beepsilon(predicts the noise of the diffusion process),sample(directly predicts the noisy sample) orv_prediction` (see section 2.4 of Imagen Video paper). - thresholding (
bool، الافتراضيFalse) — ما إذا كان سيتم استخدام طريقة “العتبة الديناميكية”. هذه الطريقة غير مناسبة لنماذج الانتشار في الفضاء الكامن مثل Stable Diffusion. - dynamic_thresholding_ratio (
float، القيمة الافتراضية0.995) — النسبة المستخدمة في طريقة العتبة الديناميكية. تكون صالحة فقط عندما يكونthresholding=True. - sample_max_value (
float، القيمة الافتراضية1.0) — قيمة العتبة الخاصة بالتعتيم الديناميكي. صالحة فقط عندما يكونthresholding=True. - timestep_spacing (
"linspace","leading", or"trailing", defaults to"leading") — The way the timesteps should be scaled. Refer to Table 2 of the Common Diffusion Noise Schedules and Sample Steps are Flawed for more information. - steps_offset (
int، القيمة الافتراضية0) — إزاحة تُضاف إلى خطوات الاستدلال، كما تتطلبها بعض عائلات النماذج. - rescale_betas_zero_snr (
bool، القيمة الافتراضيةFalse) — ما إذا كان يجب إعادة مقياس معاملات بيتا (betas) بحيث تكون نسبة الإشارة إلى الضوضاء النهائية (terminal SNR) صفرًا. يتيح هذا للنموذج توليد عينات ساطعة جدًا ومظلمة جدًا بدلاً من تقييده بتوليد عينات بإضاءة متوسطة. يرتبط ارتباطًا فضفاضًا بـ--offset_noise.
DDPMScheduler يستكشف الروابط بين مطابقة درجة إزالة الضوضاء وعينة ديناميكيات لانجفين.
يرث هذا النموذج من SchedulerMixin و ConfigMixin. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع مجدوليات الوقت مثل التحميل والحفظ.
add_noise
< source >( original_samples: Tensornoise: Tensortimesteps: IntTensor ) → torch.Tensor
أضف الضوضاء إلى العينات الأصلية وفقًا لحجم الضوضاء في كل خطوة زمنية (وهذا هو عملية الانتشار الأمامية).
get_velocity
< source >( sample: Tensornoise: Tensortimesteps: IntTensor ) → torch.Tensor
احسب تنبؤ السرعة من العينة والضوضاء وفقًا لصيغة السرعة.
previous_timestep
< source >( timestep: int ) → int or torch.Tensor
احسب خطوة الزمن السابقة في سلسلة الانتشار.
scale_model_input
< source >( sample: Tensortimestep: int | None = None ) → torch.Tensor
يضمن قابلية الاستبدال مع المجدولات التي تحتاج إلى تحجيم مدخلات نموذج إزالة الضوضاء اعتمادًا على خطوة الزمن الحالية.
set_timesteps
< source >( num_inference_steps: int = Nonedevice: typing.Union[str, torch.device] = Nonetimesteps: list[int] | None = None )
المعاملات
- num_inference_steps (
int, اختياري) — عدد خطوات الانتشار المستخدمة عند توليد العينات باستخدام نموذج مُدرَّب مسبقًا. إذا تم استخدامه، يجب أن يكونtimestepsبقيمةNone. - device (
strأوtorch.device، اختياري) — الجهاز الذي يجب نقل خطوات الزمن (timesteps) إليه. إذا كانNone، فلن يتم نقل خطوات الزمن. - timesteps (
list[int]، اختياري) — خطوات زمنية مخصصة تُستخدم لدعم تباعد تعسفي بين الخطوات الزمنية. إذا كانتNone، فسيتم استخدام استراتيجية التباعد الافتراضية للخطوات الزمنية، وهي التباعد المتساوي بينها. إذا تم تمريرtimesteps، فيجب أن تكونnum_inference_stepsهيNone.
يحدد الخطوات الزمنية المنفصلة المستخدمة لسلسلة الانتشار (لتُنفَّذ قبل الاستدلال).
خطوة
< source >( model_output: Tensortimestep: intsample: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → DDPMSchedulerOutput or tuple
المعاملات
- model_output (
torch.Tensor) — المخرجات المباشرة من نموذج الانتشار المُتعلَّم. - timestep (
int) — خطوة الزمن المنفصلة الحالية في سلسلة الانتشار. - sample (
torch.Tensor) — نسخة حالية من العينة التي أنشأها عملية الانتشار. - generator (
torch.Generator، اختياري) — مولّد أرقام عشوائية. - return_dict (
bool، القيمة الافتراضيةTrue) — ما إذا كان يجب إرجاع DDPMSchedulerOutput أوtuple.
يعيد
DDPMSchedulerOutput أو tuple
If return_dict is True, DDPMSchedulerOutput is returned, otherwise a
tuple is returned where the first element is the sample tensor.
تنبّأ بالعيّنة من الخطوة الزمنية السابقة عن طريق عكس عملية المعادلة التفاضلية العشوائية (SDE). تنقل هذه الدالة عملية الانتشار من مخرجات النموذج المُتعلَّم (والتي تكون في الغالب الضوضاء المتنبَّأ بها).
DDPMSchedulerOutput
فئة diffusers.schedulers.scheduling_ddpm.DDPMSchedulerOutput
< source >( 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 الخاصة بالجدول الزمني.