Diffusers documentation
DiT
DiT
نماذج الانتشار القابلة للتوسع باستخدام التحويلات (DiT) من تأليف ويليام بيبلس وسانيغ شيي.
ملخص الورقة البحثية هو:
نستكشف فئة جديدة من نماذج الانتشار (Diffusion) مبنية على معمارية الترانسفورمر. نقوم بتدريب نماذج انتشار كامنة (Latent) للصور، حيث نستبدل العمود الفقري U-Net الشائع الاستخدام بترانسفورمر يعمل على بقع كامنة (Latent patches). نحلل قابلية التوسع لنماذج الانتشار الترانسفورمرية (DiTs) من خلال عدسة تعقيد المرور الأمامي (Forward pass) كما يُقاس بوحدة Gflops. وجدنا أن نماذج DiTs ذات قيم Gflops أعلى — سواء من خلال زيادة عمق/عرض الترانسفورمر أو زيادة عدد الرموز المدخلة — تمتلك بشكل متسق قيمة FID أدنى. بالإضافة إلى امتلاكها خصائص توسع جيدة، تتفوق أكبر نماذجنا DiT-XL/2 على جميع نماذج الانتشار السابقة في معايير ImageNet الشرطية على الفئة (Class-conditional) بدقة 512x512 و256x256، محققةً قيمة FID متقدمة تبلغ 2.27 في الحالة الأخيرة.
يمكن العثور على قاعدة الكود الأصلية في facebookresearch/dit.
تأكد من الاطلاع على دليل المجدولين لمعرفة كيفية استكشاف التوازن بين سرعة المجدول وجودة النتائج، واطّلع على قسم إعادة استخدام المكونات عبر خطوط الأنابيب لمعرفة كيفية تحميل نفس المكونات بكفاءة في خطوط أنابيب متعددة.
DiTPipeline
فئة diffusers.DiTPipeline
< source >( transformer: DiTTransformer2DModelvae: AutoencoderKLscheduler: KarrasDiffusionSchedulersid2label: dict[int, str] | None = None )
المعاملات
- transformer (DiTTransformer2DModel) —
فئة
DiTTransformer2DModelمشروطة لإزالة الضوضاء من كامنات الصورة المُرمّزة. نُشرت في الأصل باسمTransformer2DModelفي الإعدادات، لكن يمكن تجاهل عدم التطابق. - vae (AutoencoderKL) — نموذج الترميز التبايني التلقائي (VAE) لتشفير وفك تشفير الصور إلى تمثيلات كامنة ومنها.
- scheduler (DDIMScheduler) —
جدول زمني يُستخدم بالاقتران مع
transformerلإزالة الضوضاء من كامنات الصورة المُرمّزة.
خط أنابيب لتوليد الصور يعتمد على هيكل Transformer بدلاً من UNet.
يرث هذا النموذج من DiffusionPipeline. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة المُنفَّذة لجميع خطوط الأنابيب (التنزيل، الحفظ، التشغيل على جهاز معين، إلخ).
__call__
< source >( class_labels: listguidance_scale: float = 4.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonenum_inference_steps: int = 50output_type: str | None = 'pil'return_dict: bool = True ) → ImagePipelineOutput or tuple
المعاملات
- class_labels (list[int]) — قائمة بتسميات فئات ImageNet للصور التي سيتم توليدها.
- guidance_scale (
float, اختياري، القيمة الافتراضية 4.0) — تشجع قيمة أعلى لمقياس التوجيه النموذج على توليد صور مرتبطة ارتباطًا وثيقًا بنصpromptعلى حساب انخفاض جودة الصورة. يتم تفعيل مقياس التوجيه عندما يكونguidance_scale > 1. - generator (
torch.Generator، اختياري) —torch.Generatorلجعل التوليد حتميًا. - num_inference_steps (
int، اختياري، القيمة الافتراضية 250) — عدد خطوات إزالة الضوضاء. تؤدي زيادة عدد خطوات إزالة الضوضاء عادةً إلى صورة بجودة أعلى على حساب بطء الاستدلال. - 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 DiTPipeline, DPMSolverMultistepScheduler
>>> import torch
>>> pipe = DiTPipeline.from_pretrained("facebook/DiT-XL-2-256", torch_dtype=torch.float16)
>>> pipe.scheduler = DPMSolverMultistepScheduler.from_config(pipe.scheduler.config)
>>> pipe = pipe.to("cuda")
>>> # pick words from Imagenet class labels
>>> pipe.labels # to print all available words
>>> # pick words that exist in ImageNet
>>> words = ["white shark", "umbrella"]
>>> class_ids = pipe.get_label_ids(words)
>>> generator = torch.manual_seed(33)
>>> output = pipe(class_labels=class_ids, num_inference_steps=25, generator=generator)
>>> image = output.images[0] # label 'white shark'get_label_ids
< source >( label: str | list[str] ) → list of int
خريطة نصوص التسميات من ImageNet إلى معرفات الفئات المقابلة.
ImagePipelineOutput
فئة diffusers.ImagePipelineOutput
< source >( images: list[PIL.Image.Image] | numpy.ndarray )
فئة الإخراج لخطوط أنابيب الصور.