Diffusers documentation

RePaintScheduler

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

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

< >

( 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

< >

( original_samples: Tensornoise: Tensortimesteps: IntTensor )

المعاملات

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

يرفع

NotImplementedError

أظهر أن إضافة الضوضاء لتدريب RePaint غير مدعومة بواسطة مُجدول المهام هذا.

scale_model_input

< >

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

المعاملات

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

يعيد

torch.Tensor

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

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

set_timesteps

< >

( 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، فلن يتم نقل خطوات الزمن.

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

خطوة

< >

( 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

< >

( sample: Tensortimestep: intgenerator: typing.Optional[torch.Generator] = None ) → torch.Tensor

المعاملات

  • sample (torch.Tensor) — العينة التي يُضاف إليها الضوضاء.
  • timestep (int) — خطوة الزمن المنفصلة الحالية في سلسلة الانتشار.
  • generator (torch.Generator، اختياري) — مولّد أرقام عشوائية.

يعيد

torch.Tensor

العينة عند خطوة الزمن التالية في سلسلة الانتشار.

أضف ضوضاء إلى عينة لتحريكها خطوة انتشار واحدة إلى الأمام.

RePaintSchedulerOutput

فئة diffusers.schedulers.scheduling_repaint.RePaintSchedulerOutput

< >

( 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 لمعاينة التقدم أو للتوجيه.

فئة الإخراج لدالة خطوة المجدول.

Update on GitHub