Diffusers documentation

DiT

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

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

< >

( transformer: DiTTransformer2DModelvae: AutoencoderKLscheduler: KarrasDiffusionSchedulersid2label: dict[int, str] | None = None )

المعاملات

  • transformer (DiTTransformer2DModel) — فئة DiTTransformer2DModel مشروطة لإزالة الضوضاء من كامنات الصورة المُرمّزة. نُشرت في الأصل باسم Transformer2DModel في الإعدادات، لكن يمكن تجاهل عدم التطابق.
  • vae (AutoencoderKL) — نموذج الترميز التبايني التلقائي (VAE) لتشفير وفك تشفير الصور إلى تمثيلات كامنة ومنها.
  • scheduler (DDIMScheduler) — جدول زمني يُستخدم بالاقتران مع transformer لإزالة الضوضاء من كامنات الصورة المُرمّزة.

خط أنابيب لتوليد الصور يعتمد على هيكل Transformer بدلاً من UNet.

يرث هذا النموذج من DiffusionPipeline. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة المُنفَّذة لجميع خطوط الأنابيب (التنزيل، الحفظ، التشغيل على جهاز معين، إلخ).

__call__

< >

( 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

< >

( label: str | list[str] ) → list of int

المعاملات

  • label (str أو dict من str) — نصوص التسميات التي سيتم تعيينها إلى معرّفات الفئات.

يعيد

list من int

معرفات الفئات التي ستعالجها خط المعالجة.

خريطة نصوص التسميات من ImageNet إلى معرفات الفئات المقابلة.

ImagePipelineOutput

فئة diffusers.ImagePipelineOutput

< >

( images: list[PIL.Image.Image] | numpy.ndarray )

المعاملات

  • images (List[PIL.Image.Image] أو np.ndarray) — قائمة من صور PIL منزوعة الضوضاء بطول batch_size أو مصفوفة NumPy بأبعاد (batch_size, height, width, num_channels).

فئة الإخراج لخطوط أنابيب الصور.

Update on GitHub