Diffusers documentation
RePaintScheduler
RePaintScheduler
RePaintScheduler هو مُجدول لإصلاح الصور (inpainting) يعتمد على DDPM، مخصص لإصلاح الصور غير المُشرَف عليها باستخدام أقنعة متطرفة. صُمم ليُستخدم مع RePaintPipeline، وهو مبني على ورقة RePaint: Inpainting using Denoising Diffusion Probabilistic Models التي كتبها Andreas Lugmayr وآخرون.
ملخص الورقة البحثية هو:
إعادة رسم الصور بحرية (Free-form inpainting) هي مهمة إضافة محتوى جديد إلى صورة في المناطق المحددة بواسطة قناع ثنائي (binary mask) عشوائي. معظم الأساليب الحالية تُدرَّب على توزيع معين للأقنعة، مما يحدّ من قدرتها على التعميم إلى أنواع أقنعة غير مرئية. علاوة على ذلك، يؤدي التدريب باستخدام الخسائر البكسلية (pixel-wise) والإدراكية (perceptual) غالبًا إلى تمديدات نصية بسيطة نحو المناطق المفقودة بدلاً من توليد ذي معنى دلالي. في هذا العمل، نقترح RePaint: نهج لإعادة رسم الصور يعتمد على نموذج الاحتمالي الانتشاري لإزالة الضوضاء (DDPM) وهو قابل للتطبيق حتى على الأقنعة المتطرفة. نستخدم DDPM غير مشروط مُدرَّب مسبقًا كسابق توليدي (generative prior). لتكييف عملية التوليد، نعدّل فقط تكرارات الانتشار العكسي عن طريق أخذ عينات من المناطق غير المقنعة باستخدام معلومات الصورة المعطاة. وبما أن هذه التقنية لا تعدّل أو تشترط شبكة DDPM الأصلية نفسها، فإن النموذج ينتج صورًا عالية الجودة ومتنوعة لأي شكل من أشكال إعادة الرسم. نتحقق من منهجيتنا لكل من إعادة رسم الوجوه وإعادة رسم الصور العامة باستخدام أقنعة قياسية ومتطرفة. يتفوق RePaint على أحدث الأساليب التلقائية (Autoregressive) وأساليب GAN في خمس على الأقل من أصل ستة توزيعات للأقنعة. مستودع GitHub: this http URL.
يمكن العثور على التنفيذ الأصلي في andreas128/RePaint.
RePaintScheduler
فئة diffusers.RePaintScheduler
< source >( num_train_timesteps: int = 1000beta_start: float = 0.0001beta_end: float = 0.02beta_schedule: str = 'linear'eta: float = 0.0trained_betas: numpy.ndarray | None = Noneclip_sample: bool = True )
المعاملات
- num_train_timesteps (
int، القيمة الافتراضية1000) — عدد خطوات الانتشار لتدريب النموذج. - beta_start (
float، القيمة الافتراضية0.0001) — قيمةbetaالابتدائية للاستدلال. - beta_end (
float، القيمة الافتراضية0.02) — القيمة النهائية لـbeta. - beta_schedule (
str، القيمة الافتراضية"linear") — جدول بيتا، وهو إسقاط من نطاق بيتا إلى تسلسل من قيم بيتا لخطوات النموذج. اختر من بينlinear،scaled_linear،squaredcos_cap_v2، أوsigmoid. - eta (
float، القيمة الافتراضية0.0) — وزن الضوضاء المضافة أثناء خطوة الانتشار. القيمة0.0تقابل DDIM والقيمة1.0تقابل DDPM. - trained_betas (
np.ndarray، اختياري) — مرر مصفوفة من قيم بيتا مباشرةً إلى منشئ الكائن لتجاوزbeta_startوbeta_end. - clip_sample (
bool، القيمة الافتراضيةTrue) — يقوم بقصّ العينة المتنبأ بها بين -1 و 1 من أجل الاستقرار العددي.
RePaintScheduler هو مُجدول لتعبئة الصور (Inpainting) باستخدام DDPM داخل قناع محدد.
يرث هذا النموذج من SchedulerMixin و ConfigMixin. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع مجدوليات الوقت مثل التحميل والحفظ.
add_noise
< source >( original_samples: Tensornoise: Tensortimesteps: IntTensor )
المعاملات
- original_samples (
torch.Tensor) — العينات الأصلية التي يُضاف إليها الضوضاء. - noise (
torch.Tensor) — الضوضاء التي ستُضاف إلى العينات. - timesteps (
torch.IntTensor) — خطوات الزمن التي تحدد مستوى الضوضاء لكل عينة.
يرفع
NotImplementedError
NotImplementedError— يجب أن يستخدم تدريب RePaint DDPMScheduler.add_noise() بدلاً من ذلك.
أظهر أن إضافة الضوضاء لتدريب RePaint غير مدعومة بواسطة مُجدول المهام هذا.
scale_model_input
< source >( sample: Tensortimestep: int | None = None ) → torch.Tensor
يضمن قابلية الاستبدال مع المجدولات التي تحتاج إلى تحجيم مدخلات نموذج إزالة الضوضاء اعتمادًا على خطوة الزمن الحالية.
set_timesteps
< source >( num_inference_steps: intjump_length: int = 10jump_n_sample: int = 10device: typing.Union[str, torch.device, NoneType] = None )
المعاملات
- num_inference_steps (
int) — عدد خطوات الانتشار المستخدمة عند توليد العينات باستخدام نموذج مُدرَّب مسبقًا. - jump_length (
int، القيمة الافتراضية10) — عدد الخطوات المتقدمة في الزمن قبل الرجوع إلى الوراء في الزمن لقفزة واحدة (الحرف “j” في ورقة RePaint). راجع الشكلين 9 و10 في الورقة. - jump_n_sample (
int، القيمة الافتراضية10) — عدد مرات إجراء قفزة زمنية للأمام لعينة زمنية محددة. راجع الشكلين 9 و10 في الورقة البحثية. - device (
strأوtorch.device، اختياري) — الجهاز الذي يجب نقل خطوات الزمن (timesteps) إليه. إذا كانNone، فلن يتم نقل خطوات الزمن.
يحدد الخطوات الزمنية المنفصلة المستخدمة لسلسلة الانتشار (لتُنفَّذ قبل الاستدلال).
خطوة
< source >( model_output: Tensortimestep: intsample: Tensororiginal_image: Tensormask: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → RePaintSchedulerOutput or tuple[torch.Tensor, torch.Tensor]
المعاملات
- model_output (
torch.Tensor) — المخرجات المباشرة من نموذج الانتشار المُتعلَّم. - timestep (
int) — خطوة الزمن المنفصلة الحالية في سلسلة الانتشار. - sample (
torch.Tensor) — نسخة حالية من العينة التي أنشأها عملية الانتشار. - original_image (
torch.Tensor) — الصورة الأصلية التي سيتم إجراء عملية inpaint عليها. - mask (
torch.Tensor) — القناع الذي تشير القيمة 0.0 فيه إلى الجزء من الصورة الأصلية الذي يجب إعادة رسمه. - generator (
torch.Generator، اختياري) — مولّد أرقام عشوائية. - return_dict (
bool، القيمة الافتراضيةTrue) — ما إذا كان يجب إرجاع RePaintSchedulerOutput بدلاً من tuple.
يعيد
RePaintSchedulerOutput أو tuple[torch.Tensor, torch.Tensor]
إذا كانت True هي قيمة return_dict، يُعاد RePaintSchedulerOutput، وإلا يُعاد tuple حيث العنصر الأول هو العينة السابقة والعنصر الثاني هو العينة الأصلية المتوقعة.
تنبّأ بالعيّنة من الخطوة الزمنية السابقة عن طريق عكس عملية المعادلة التفاضلية العشوائية (SDE). تنقل هذه الدالة عملية الانتشار من مخرجات النموذج المُتعلَّم (والتي تكون في الغالب الضوضاء المتنبَّأ بها).
undo_step
< source >( sample: Tensortimestep: intgenerator: typing.Optional[torch.Generator] = None ) → torch.Tensor
أضف ضوضاء إلى عينة لتحريكها خطوة انتشار واحدة إلى الأمام.
RePaintSchedulerOutput
فئة diffusers.schedulers.scheduling_repaint.RePaintSchedulerOutput
< source >( prev_sample: Tensorpred_original_sample: Tensor )
المعاملات
- 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لمعاينة التقدم أو للتوجيه.
فئة الإخراج لدالة خطوة المجدول.