Buckets:
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]]
diffusers.DiTPipeline[[diffusers.DiTPipeline]]
diffusers.DiTPipeline(transformer: DiTTransformer2DModel, vae: AutoencoderKL, scheduler: KarrasDiffusionSchedulers, id2label: dict[int, str] | None = None)
المعاملات:
transformer (DiTTransformer2DModel) : فئة DiTTransformer2DModel مشروطة لإزالة الضوضاء من كامنات الصورة المُرمّزة. نُشرت في الأصل باسم Transformer2DModel في الإعدادات، لكن يمكن تجاهل هذا الاختلاف.
vae (AutoencoderKL) : نموذج الترميز التحويلي التبايني (VAE) لتشفير وفك تشفير الصور إلى تمثيلات كامنة ومنها.
scheduler (DDIMScheduler) : مُجدول يُستخدم بالاقتران مع transformer لإزالة الضوضاء من كامنات الصورة المُرمّزة.
خط أنابيب لتوليد الصور يعتمد على هيكل Transformer بدلاً من UNet.
يرث هذا النموذج من DiffusionPipeline. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة المُنفَّذة لجميع خطوط الأنابيب (التنزيل، الحفظ، التشغيل على جهاز معين، إلخ).
call[[diffusers.DiTPipeline.call]]
__call__(class_labels: list[int], guidance_scale: float = 4.0, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, num_inference_steps: int = 50, output_type: str | None = 'pil', return_dict: bool = True)
المعاملات:
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[[diffusers.DiTPipeline.get_label_ids]]
get_label_ids(label: str | list[str])
المعاملات:
label (str أو dict من str) : نصوص التسميات التي سيتم تعيينها إلى معرّفات الفئات.
يعيد: list من int
معرفات الفئات التي ستعالجها خط المعالجة.
خريطة نصوص التسميات من ImageNet إلى معرفات الفئات المقابلة.
ImagePipelineOutput[[diffusers.ImagePipelineOutput]]
diffusers.ImagePipelineOutput[[diffusers.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).
فئة الإخراج لخطوط أنابيب الصور.
Xet Storage Details
- Size:
- 8.26 kB
- Xet hash:
- a93bb2ed61b44a94ba76e88444b556f129885693d00d61be6dea9bdd66e4297e
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.