Diffusers documentation
DDIM
DDIM
نماذج الانتشار الضمنية غير الضجيج (DDIM) من تأليف جيامينغ سونغ وتشينلين منغ وستيفانو إيرمون.
ملخص الورقة البحثية هو:
حققت نماذج الانتشار الاحتمالية لإزالة الضوضاء (DDPMs) توليد صور عالية الجودة دون تدريب عدائي، لكنها تتطلب محاكاة سلسلة ماركوف لعدد كبير من الخطوات لإنتاج عينة. لتسريع عملية أخذ العينات، نقدم نماذج الانتشار الضمنية لإزالة الضوضاء (DDIMs)، وهي فئة أكثر كفاءة من النماذج الاحتمالية الضمنية التكرارية التي تتبع نفس إجراء التدريب المستخدم في DDPMs. في نماذج DDPMs، يُعرَّف العملية التوليدية على أنها عكس عملية انتشار ماركوفية. نبني فئة من عمليات الانتشار غير الماركوفية التي تؤدي إلى هدف تدريب متطابق، لكن عملية العكس فيها يمكن أن تكون أسرع بكثير في أخذ العينات. نُظهر تجريبيًا أن نماذج DDIMs يمكنها إنتاج عينات عالية الجودة أسرع بمقدار 10 إلى 50 مرة من حيث الوقت الفعلي مقارنةً بنماذج DDPMs، وتتيح لنا الموازنة بين الحساب وجودة العينة، كما يمكنها تنفيذ استيفاء دلالي ذي معنى للصور مباشرةً في الفضاء الكامن.
يمكن العثور على قاعدة الكود الأصلية في ermongroup/ddim.
DDIMPipeline
فئة diffusers.DDIMPipeline
< source >( unet: UNet2DModelscheduler: DDIMScheduler )
المعاملات
- unet (UNet2DModel) —
نموذج
UNet2DModelلإزالة الضوضاء من الكامنات المُرمّزة للصورة. - scheduler (SchedulerMixin) —
مجدول يُستخدم بالاقتران مع
unetلإزالة الضوضاء من الصورة المُرمّزة. يمكن أن يكون أحد DDPMScheduler، أو DDIMScheduler.
خط أنابيب لتوليد الصور.
يرث هذا النموذج من DiffusionPipeline. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة المُنفَّذة لجميع خطوط الأنابيب (التنزيل، الحفظ، التشغيل على جهاز معين، إلخ).
__call__
< source >( batch_size: int = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Noneeta: float = 0.0num_inference_steps: int = 50use_clipped_model_output: bool | None = Noneoutput_type: str | None = 'pil'return_dict: bool = True ) → ImagePipelineOutput or tuple
المعاملات
- batch_size (
int، اختياري، القيمة الافتراضية 1) — عدد الصور التي سيتم توليدها. - generator (
torch.Generator، اختياري) —torch.Generatorلجعل التوليد حتميًا. - eta (
float، اختياري، القيمة الافتراضية 0.0) — يتوافق مع المعامل eta (η) من ورقة DDIM. ينطبق فقط على DDIMScheduler، ويُتجاهل في المجدولين الآخرين. القيمة0تتوافق مع DDIM والقيمة1تتوافق مع DDPM. - num_inference_steps (
int، اختياري، القيمة الافتراضية 50) — عدد خطوات إزالة الضوضاء. تؤدي زيادة عدد خطوات إزالة الضوضاء عادةً إلى صورة بجودة أعلى على حساب بطء الاستدلال. - use_clipped_model_output (
bool، اختياري، القيمة الافتراضيةNone) — إذا كانتTrueأوFalse، راجع التوثيق الخاص بـ DDIMScheduler.step(). إذا كانتNone، لن يتم تمرير أي شيء إلى الجدول الزمني (المجدول) في المراحل اللاحقة (استخدمNoneللمجدولات التي لا تدعم هذا الحُجّة). - output_type (
str، اختياري، الافتراضي"pil") — تنسيق الصورة المولّدة. اختر بين"pil"(PIL.Image) أو"np"(np.array) أو"pt"(torch.Tensor). - return_dict (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب إرجاع ImagePipelineOutput بدلاً من tuple عادي.
يعيد
ImagePipelineOutput أو tuple
إذا كان return_dict هو True، يُعاد ImagePipelineOutput، وإلا يُعاد tuple يكون عنصره الأول قائمة بالصور المولّدة
دالة الاستدعاء call لخط الأنابيب pipeline الخاص بالتوليد.
مثال:
>>> from diffusers import DDIMPipeline
>>> import PIL.Image
>>> import numpy as np
>>> # load model and scheduler
>>> pipe = DDIMPipeline.from_pretrained("fusing/ddim-lsun-bedroom")
>>> # run pipeline in inference (sample random noise and denoise)
>>> image = pipe(eta=0.0, num_inference_steps=50)
>>> # process image to PIL
>>> image_processed = image.cpu().permute(0, 2, 3, 1)
>>> image_processed = (image_processed + 1.0) * 127.5
>>> image_processed = image_processed.numpy().astype(np.uint8)
>>> image_pil = PIL.Image.fromarray(image_processed[0])
>>> # save image
>>> image_pil.save("test.png")ImagePipelineOutput
فئة diffusers.ImagePipelineOutput
< source >( images: list[PIL.Image.Image] | numpy.ndarray )
فئة الإخراج لخطوط أنابيب الصور.