يحتوي هذا المستودع على مدونة المصدر لـ Prismer و Prismerz من الورقة ، Prismer: نموذج باللغة الرؤية مع خبراء متعدد المهام. تحقق من العرض التجريبي الرسمي في Aggingface Space وتوضيح الطرف الثالث في النسخ المتماثل.

transformers المحدثة. يعتمد التنفيذ على PyTorch 1.13 ، ومتكامل للغاية مع مجموعة أدوات Aggingface accelerate للتدريب المتعدد GPU القابل للقراءة والمحسّنة.
أولاً ، دعنا نثبت جميع تبعيات الحزمة عن طريق التشغيل
pip install -r requirements.txt ثم نقوم بإنشاء تكوين accelerate المقابل بناءً على تكوين خادم التدريب الخاص بك. لكل من تدريب متعدد GPU متعدد العقدة وتدريب متعدد GPU ، ما عليك سوى تشغيل واتبع الإرشادات مع ،
accelerate configنحن نقوم قبل تدريب PRISMER/PRISMERZ مع مجموعة من خمسة مجموعات بيانات الصور/النصية المستخدمة على نطاق واسع ، مع قوائم بيانات مسبقًا منصوص عليها أدناه.
تتكون مجموعات بيانات الويب (CC3M ، SGU ، CC12M) مع عناوين URL للصور. يوصى بشدة باستخدام IMG2DatAset ، مجموعة أدوات محسّنة للغاية لتجريف الويب على نطاق واسع لتنزيل هذه الصور. مثال على ذلك نصي bash لاستخدام img2dataset لتنزيل مجموعة بيانات cc12m أدناه.
img2dataset --url_list filtered_cc12m.json --input_format " json " --url_col " url " --caption_col " caption " --output_folder cc12m --processes_count 16 --thread_count 64 --image_size 256ملاحظة: من المتوقع أن يكون عدد الصور التي تم تنزيلها أقل من عدد الصور في ملف JSON ، لأن بعض عناوين URL قد لا تكون صالحة أو تتطلب وقت تحميل طويل.
نقوم بتقييم أداء التسمية التوضيحية للصور على مجموعتين من البيانات ، COCO 2014 و NOCAPS ؛ وأداء VQA على مجموعة بيانات VQAV2. في مهام VQA ، نقوم بالإضافة إلى ذلك بزيادة بيانات التدريب مع الجينوم المرئي QA ، بعد Blip. مرة أخرى ، قمنا بإعداد وتنظيم قوائم بيانات التدريب والتقييم الواردة أدناه.
قبل البدء في أي تجارب مع Prismer ، نحتاج أولاً إلى تحديد ملصقات خبراء الطريقة ، لذلك قد نقوم ببناء مجموعة بيانات متعددة العلامات. في مجلد experts ، قمنا بتضمين جميع الخبراء الستة الذين قدمناهم في ورقتنا. لقد قمنا بتنظيم قاعدة بيانات كل خبير مع واجهة برمجة تطبيقات مشتركة وبسيطة.
ملاحظة: على وجه التحديد لخبراء التجزئة ، يرجى أولاً تثبيت عمليات الالتفاف القابلة للتشوه من قبل cd experts/segmentation/mask2former/modeling/pixel_decoder/ops وتشغيل sh make.sh
لتنزيل خبراء طريقة ما قبل المدربين ، قم بتشغيل
python download_checkpoints.py --download_experts=True لإنشاء ملصقات الخبراء ، ما عليك سوى تحرير configs/experts.yaml مع مسارات البيانات المقابلة ، وتشغيلها
export PYTHONPATH=.
accelerate launch experts/generate_{EXPERT_NAME}.pyملاحظة: إن توليد ملصقات الخبراء مطلوب فقط لنماذج بريمسر ، وليس لنماذج بريزيرز.
لقد قدمنا كلاً من Prismer و Prismerz لنقاط التفتيش التي تم تدريبها مسبقًا (لتسمية الصورة الصفرية) ، بالإضافة إلى نقاط تفتيش تم ضبطها على مجموعات بيانات VQAV2 و Coco. مع نقاط التفتيش هذه ، يجب أن يتوقع إعادة إنتاج الأداء الدقيق المذكور أدناه.
| نموذج | تم تدريبه مسبقًا [Zero-Shot] | كوكو [ضبطه] | Vqav2 [ضبطها] |
|---|---|---|---|
| Prismerz-base | عصير التفاح الكوكو [109.6] | عصير التفاح الكوكو [133.7] | Test-Dev [76.58] |
| prismer-base | عصير التفاح الكوكو [122.6] | عصير التفاح الكوكو [135.1] | اختبار DEV [76.84] |
| بريزيرز large | عصير التفاح الكوكو [124.8] | عصير التفاح الكوكو [135.7] | اختبار DEV [77.49] |
| Prismer-large | عصير التفاح الكوكو [129.7] | عصير التفاح الكوكو [136.5] | اختبار DEV [78.42] |
لتنزيل نقاط التفتيش التي تم تدريبها مسبقًا/تم تغريمها ، قم بتشغيل
# to download all model checkpoints (12 models in total)
python download_checkpoints.py --download_models=True
# to download specific checkpoints (Prismer-Base for fine-tuned VQA) in this example
python download_checkpoints.py --download_models= " vqa_prismer_base " ملاحظة: تذكر تثبيت Java عبر sudo apt-get install default-jre المطلوب لتشغيل نصوص تقييم COCO الرسمية.
لتقييم نقاط التفتيش النموذجية ، يرجى التشغيل
# zero-shot image captioning (remember to remove caption prefix in the config files)
accelerate launch train_caption.py --exp_name {MODEL_NAME} --evaluate
# fine-tuned image captioning
accelerate launch train_caption.py --exp_name {MODEL_NAME} --from_checkpoint --evaluate
# fine-tuned VQA
accelerate launch train_vqa.py --exp_name {MODEL_NAME} --from_checkpoint --evaluateلتدريب أو ضبط أي نموذج مع أو بدون نقاط تفتيش ، يرجى التشغيل
# to train/fine-tuning from scratch
accelerate launch train_{TASK}.py --exp_name {MODEL_NAME}
# to train/fine-tuning from the latest checkpoints (saved every epoch)
accelerate launch train_{TASK}.py --exp_name {MODEL_NAME} --from_checkpoint لقد قمنا أيضًا بتضمين Sharding Model في البرنامج النصي التدريبي الحالي عبر المكون الإضافي الرسمي لـ Pytorch's FSDP. مع نفس أوامر التدريب ، بالإضافة إلى ذلك ، أضف- --shard_grad_op لـ Zero-2 Sharding (تدرجات + حالات Optimiser) ، أو- --full_shard لارتفاع صفر 3 (معلمات الشبكة Zero-2 +).
ملاحظة: يجب أن تتوقع نطاق الخطأ لـ VQAV2 ACC. أن تكون أقل من 0.1 ؛ لدرجة COCO/NOCAPS Cider لتكون أقل من 1.0.
أخيرًا ، قدمنا مثالًا أدنى لأداء تسميات توضيحية للصورة في وحدة معالجة الرسومات الواحدة من خلال نقطة تفتيش Prismer/Prismerz التي تم ضبطها. ما عليك سوى وضع صورك تحت helpers/images (دعم .jpg و .jpeg و .png ) ، وتشغيل
python demo.py --exp_name {MODEL_NAME} يمكنك بعد ذلك رؤية جميع ملصقات خبراء Modality التي تم إنشاؤها في مجلد helpers/labels وتسميات توضيحية تم إنشاؤها في مجلد helpers/images .
على وجه الخصوص بالنسبة لنماذج Prismer ، قدمنا أيضًا نصًا بسيطًا لتوضيح ملصقات الخبراء التي تم إنشاؤها. لتخليص وتصور ملصقات الخبراء وكذلك التسميات التوضيحية المتوقعة ، قم بتشغيل
python demo_vis.py ملاحظة: تذكر إعداد التكوين المقابل في القسم التجريبي configs/caption.yaml . تكوين النموذج التجريبي الافتراضي مخصص لقاعدة Prismer.
إذا وجدت هذا الرمز/العمل مفيدًا في بحثك ، فيرجى التفكير في الإشارة إلى ما يلي:
@article { liu2024prismer ,
title = { Prismer: A Vision-Language Model with Multi-Task Experts } ,
author = { Liu, Shikun and Fan, Linxi and Johns, Edward and Yu, Zhiding and Xiao, Chaowei and Anandkumar, Anima } ,
journal = { Transactions on Machine Learning Research } ,
year = { 2024 }
}حقوق الطبع والنشر © 2023 ، Nvidia Corporation. جميع الحقوق محفوظة.
يتم توفير هذا العمل بموجب ترخيص رمز المصدر NVIDIA.
تتم مشاركة نقاط التفتيش النموذجية ضمن CC-BY-NC-SA-4.0. إذا قمت بإعادة تنظيم المواد أو تحويلها أو بناءها على المادة ، فيجب عليك توزيع مساهماتك تحت نفس الترخيص مثل الأصل.
للاستفسارات التجارية ، يرجى زيارة موقعنا على الويب وتقديم النموذج: ترخيص NVIDIA Research.
نود أن نشكر جميع الباحثين الذين يفتحون أعمالهم لجعل هذا المشروع ممكنًا. bjoernpl للمساهمة في برنامج تنزيل نقطة تفتيش آلية.
إذا كان لديك أي أسئلة ، يرجى الاتصال [email protected] .