Buckets:
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]]
diffusers.RePaintScheduler[[diffusers.RePaintScheduler]]
diffusers.RePaintScheduler(num_train_timesteps: int = 1000, beta_start: float = 0.0001, beta_end: float = 0.02, beta_schedule: str = 'linear', eta: float = 0.0, trained_betas: numpy.ndarray | None = None, clip_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[[diffusers.RePaintScheduler.add_noise]]
add_noise(original_samples: Tensor, noise: Tensor, timesteps: IntTensor)
المعاملات:
original_samples (torch.Tensor) : العينات الأصلية التي يُضاف إليها الضوضاء.
noise (torch.Tensor) : الضوضاء التي ستُضاف إلى العينات.
timesteps (torch.IntTensor) : الخطوات الزمنية التي تحدد مستوى الضوضاء لكل عينة.
يرفع: NotImplementedError
NotImplementedError-- يجب أن يستخدم تدريب RePaint DDPMScheduler.add_noise() بدلاً من ذلك.
أظهر أن إضافة الضوضاء لتدريب RePaint غير مدعومة بواسطة مُجدول المهام هذا.
scale_model_input[[diffusers.RePaintScheduler.scale_model_input]]
scale_model_input(sample: Tensor, timestep: int | None = None)
المعاملات:
sample (torch.Tensor) : العينة المدخلة.
timestep (int، اختياري) : الخطوة الزمنية الحالية في سلسلة الانتشار.
يعيد: torch.Tensor
عينة إدخال مُقيّمة.
يضمن قابلية الاستبدال مع المجدولات التي تحتاج إلى تحجيم مدخلات نموذج إزالة الضوضاء اعتمادًا على خطوة الزمن الحالية.
set_timesteps[[diffusers.RePaintScheduler.set_timesteps]]
set_timesteps(num_inference_steps: int, jump_length: int = 10, jump_n_sample: int = 10, device: 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، فلن يتم نقل خطوات الزمن.
يحدد الخطوات الزمنية المنفصلة المستخدمة لسلسلة الانتشار (لتُنفَّذ قبل الاستدلال).
خطوة[[diffusers.RePaintScheduler.step]]
step(model_output: Tensor, timestep: int, sample: Tensor, original_image: Tensor, mask: Tensor, generator: typing.Optional[torch.Generator] = None, return_dict: bool = True)
المعاملات:
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]
إذا كانت قيمة return_dict هي True، يُعاد RePaintSchedulerOutput، وإلا يُعاد tuple حيث العنصر الأول هو العينة السابقة والعنصر الثاني هو العينة الأصلية المتوقعة.
تنبّأ بالعيّنة من الخطوة الزمنية السابقة عن طريق عكس عملية المعادلة التفاضلية العشوائية (SDE). تنقل هذه الدالة عملية الانتشار من مخرجات النموذج المُتعلَّم (والتي تكون في الغالب الضوضاء المتنبَّأ بها).
undo_step[[diffusers.RePaintScheduler.undo_step]]
undo_step(sample: Tensor, timestep: int, generator: typing.Optional[torch.Generator] = None)
المعاملات:
sample (torch.Tensor) : العينة التي يُضاف إليها الضوضاء.
timestep (int) : الخطوة الزمنية المنفصلة الحالية في سلسلة الانتشار.
generator (torch.Generator، اختياري) : مولّد أرقام عشوائية.
يعيد: torch.Tensor
العينة عند خطوة الزمن التالية في سلسلة الانتشار.
أضف ضوضاء إلى عينة لتحريكها خطوة انتشار واحدة إلى الأمام.
RePaintSchedulerOutput[[diffusers.schedulers.scheduling_repaint.RePaintSchedulerOutput]]
diffusers.schedulers.scheduling_repaint.RePaintSchedulerOutput[[diffusers.schedulers.scheduling_repaint.RePaintSchedulerOutput]]
diffusers.schedulers.scheduling_repaint.RePaintSchedulerOutput(prev_sample: Tensor, pred_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 لمعاينة التقدم أو للإرشاد.
فئة الإخراج لدالة خطوة المجدول.
Xet Storage Details
- Size:
- 12.4 kB
- Xet hash:
- 9821ddcdb1e678895a223a6d244915933b7172b38c197656a6959dd757094213
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.