هذا هو المستودع الرسمي الذي يتضمن تطبيق PyTorch لـ LW-DETR: بديل المحول لـ YOLO للكشف في الوقت الفعلي.
☀️ إذا وجدت هذا العمل مفيدًا لبحثك، فيرجى التفضل بتمييز الريبو الخاص بنا والاستشهاد بمقالتنا! ☀️
قم بإصدار سلسلة من نماذج الكشف في الوقت الفعلي في LW-DETR، بما في ذلك LW-DETR-tiny وLW-DETR-small وLW-DETR-medium وLW-DETR-large وLW-DETR-xlarge، المسماة
أطلق سلسلة من النماذج المدربة مسبقًا في LW-DETR. يرجى الرجوع إلى معانقة الوجه للتحميل.
[2024/7/15] نقدم OVLW-DETR، وهو كاشف فعال للمفردات المفتوحة يتميز بأداء متميز وزمن وصول منخفض، مبني على LW-DETR. إنه يتفوق على أجهزة كشف المفردات المفتوحة الموجودة في الوقت الحقيقي وفقًا لمعيار Zero-Shot LVIS القياسي. سيتم توفير الكود المصدري والنموذج المُدرب مسبقًا قريبًا، يرجى متابعة أخبارنا!
1. مقدمة
2. التثبيت
3. التحضير
4. القطار
5. التقييم
6. النشر
7. النتائج الرئيسية
8. المراجع
9. الاقتباس
LW-DETR عبارة عن محول كشف خفيف الوزن، يتفوق في الأداء على YOLOs للكشف عن الأشياء في الوقت الفعلي. الهندسة المعمارية عبارة عن مجموعة بسيطة من جهاز تشفير ViT وجهاز عرض ووحدة فك ترميز DETR الضحلة. يستفيد LW-DETR من التقنيات المتقدمة الحديثة، مثل تقنيات التدريب الفعالة، على سبيل المثال، تحسين الخسارة والتدريب المسبق، والنافذة المتداخلة والاهتمامات العالمية لتقليل تعقيد تشفير ViT. يعمل LW-DETR على تحسين مشفر ViT من خلال تجميع خرائط الميزات متعددة المستويات، وخرائط الميزات المتوسطة والنهائية في مشفر ViT، وتشكيل خرائط ميزات أكثر ثراءً، ويقدم تنظيم خريطة الميزات الرئيسية للنافذة لتحسين كفاءة حساب الانتباه المشذر. يحقق LW-DETR أداءً متفوقًا مقارنة بأجهزة الكشف في الوقت الفعلي الحالية، على سبيل المثال، YOLO ومتغيراته، على COCO ومجموعات البيانات المعيارية الأخرى.
تم تطوير الكود والتحقق من صحته تحت python=3.8.19, pytorch=1.13.0, cuda=11.6,TensorRT-8.6.1.6
. قد تكون الإصدارات الأعلى متاحة أيضًا.
أنشئ بيئة Python الخاصة بك باستخدام Anaconda.
conda create -n lwdetr python=3.8.19 كوندا تفعيل lwdetr
استنساخ هذا الريبو.
استنساخ بوابة https://github.com/Atten4Vis/LW-DETR.gitcd LW-DETR
قم بتثبيت PyTorch وtorchvision.
اتبع التعليمات الموجودة على https://pytorch.org/get-started/locally/.
# مثال:conda install pytorch==1.13.0 torchvision==0.14.0 pytorch-cuda=11.6 -c pytorch -c nvidia
تثبيت الحزم المطلوبة.
للتدريب والتقييم:
تثبيت النقطة -r متطلبات.txt
للنشر:
يرجى الرجوع إلى NVIDIA للحصول على تعليمات تثبيت TensorRT
تثبيت النقطة -r نشر/requirements.txt
تجميع مشغلي CUDA
نماذج الأقراص المضغوطة / العمليات python setup.py build install# اختبار الوحدة (يجب أن يرى أن كل عمليات التحقق صحيحة)python test.pycd ../..
بالنسبة لمجموعة بيانات MS COCO ، يرجى تنزيل واستخراج صور قطار COCO 2017 وval مع التعليقات التوضيحية من http://cocodataset.org. نتوقع أن يكون هيكل الدليل على النحو التالي:
COCODIR/ ├── train2017/ ├── val2017/ └── annotations/ ├── instances_train2017.json └── instances_val2017.json
بالنسبة لمجموعة بيانات Objects365 للتدريب المسبق، يرجى تنزيل صور Objects365 مع التعليقات التوضيحية من https://www.objects365.org/overview.html.
يمكن العثور على جميع نقاط التفتيش في Hugging Face.
التدريب المسبق على Object365.
تم تدريب ViT مسبقًا.
نقوم بتدريب ViT مسبقًا على مجموعة البيانات Objects365 باستخدام طريقة MIM، CAE v2، استنادًا إلى النماذج المُدربة مسبقًا. يرجى الرجوع إلى الرابط التالي لتنزيل النماذج التي تم تدريبها مسبقًا ووضعها في pretrain_weights/
.
نموذج | تعليق |
---|---|
caev2_tiny_300e_objects365 | نموذج ViT مُدرب مسبقًا على object365 لـ LW-DETR-tiny/small باستخدام CAE v2 |
caev2_tiny_300e_objects365 | نموذج ViT مُدرب مسبقًا على Objects365 لـ LW-DETR-medium/large باستخدام CAE v2 |
caev2_tiny_300e_objects365 | نموذج ViT مُدرب مسبقًا على Objects365 لـ LW-DETR-xlarge باستخدام CAE v2 |
LW-DETR مُدرب مسبقًا.
نقوم بإعادة تدريب جهاز التشفير وتدريب جهاز العرض ووحدة فك التشفير على Objects365 بطريقة إشرافية. يرجى الرجوع إلى الرابط التالي لتنزيل النماذج التي تم تدريبها مسبقًا ووضعها في pretrain_weights/
.
نموذج | تعليق |
---|---|
LWDETR_tiny_30e_objects365 | نموذج LW-DETR صغير الحجم تم تدريبه مسبقًا على الكائنات 365 |
LWDETR_small_30e_objects365 | نموذج LW-DETR صغير مُدرب مسبقًا على الكائنات 365 |
LWDETR_medium_30e_objects365 | نموذج متوسط LW-DETR مُدرب مسبقًا على الكائنات 365 |
LWDETR_large_30e_objects365 | نموذج LW-DETR كبير مُدرب مسبقًا على الكائنات 365 |
LWDETR_xlarge_30e_objects365 | نموذج LW-DETR-xlarge المدرّب مسبقًا على الكائنات 365 |
ضبط دقيق على COCO. نقوم بضبط النموذج المُدرب مسبقًا على COCO. إذا كنت ترغب في إعادة تنفيذ الريبو الخاص بنا، يرجى تخطي هذه الخطوة. إذا كنت ترغب في تقييم نماذجنا المدربة بشكل مباشر، فيرجى الرجوع إلى الرابط التالي لتنزيل النماذج الدقيقة ووضعها في output/
.
نموذج | تعليق |
---|---|
LWDETR_tiny_60e_coco | نموذج LW-DETR صغير الحجم تم ضبطه على COCO |
LWDETR_small_60e_coco | نموذج LW-DETR صغير الحجم تم ضبطه على COCO |
LWDETR_medium_60e_coco | نموذج LW-DETR متوسط الحجم تم ضبطه على COCO |
LWDETR_large_60e_coco | نموذج LW-DETR كبير الحجم تم ضبطه على COCO |
LWDETR_xlarge_60e_coco | طراز LW-DETR-xlarge المضبوط على COCO |
يمكنك تشغيل ملف scripts/lwdetr_
مباشرة لعملية التدريب على مجموعة بيانات coco.
sh scripts/lwdetr_tiny_coco_train.sh /path/to/your/COCODIR
sh scripts/lwdetr_small_coco_train.sh /path/to/your/COCODIR
sh scripts/lwdetr_medium_coco_train.sh /path/to/your/COCODIR
sh scripts/lwdetr_large_coco_train.sh /path/to/your/COCODIR
sh scripts/lwdetr_xlarge_coco_train.sh /path/to/your/COCODIR
يمكنك تشغيل ملف scripts/lwdetr_
مباشرة لعملية التقييم على مجموعة بيانات coco. يرجى الرجوع إلى 3. التحضير لتنزيل سلسلة من نماذج LW-DETR.
sh scripts/lwdetr_tiny_coco_eval.sh /path/to/your/COCODIR /path/to/your/checkpoint
sh scripts/lwdetr_small_coco_eval.sh /path/to/your/COCODIR /path/to/your/checkpoint
sh scripts/lwdetr_medium_coco_eval.sh /path/to/your/COCODIR /path/to/your/checkpoint
sh scripts/lwdetr_large_coco_eval.sh /path/to/your/COCODIR /path/to/your/checkpoint
sh scripts/lwdetr_xlarge_coco_eval.sh /path/to/your/COCODIR /path/to/your/checkpoint
يمكنك تشغيل ملف scripts/lwdetr_
لتصدير النماذج للتطوير. قبل التنفيذ، يرجى التأكد من تعيين متغيرات البيئة TensorRT وcuDNN بشكل صحيح.
# تصدير نصوص نماذج ONNX/lwdetr_tiny_coco_export.sh /path/to/your/COCODIR /path/to/your/checkpoint# تحويل النموذج من محرك ONNX إلى محرك TensorRT كنصوص برمجية Wellsh/lwdetr_tiny_coco_export.sh /path/to/your/COCODIR /path /to/your/checkpoint --trt
# تصدير نصوص نماذج ONNX/lwdetr_small_coco_export.sh /path/to/your/COCODIR /path/to/your/checkpoint# تحويل النموذج من محرك ONNX إلى محرك TensorRT كنصوص برمجية Wellsh/lwdetr_small_coco_export.sh /path/to/your/COCODIR /path /to/your/checkpoint --trt
# تصدير نصوص نماذج ONNX/lwdetr_medium_coco_export.sh /path/to/your/COCODIR /path/to/your/checkpoint# تحويل النموذج من محرك ONNX إلى TensorRT كنصوص برمجية Wellsh/lwdetr_medium_coco_export.sh /path/to/your/COCODIR /path /to/your/checkpoint --trt
# تصدير نصوص نماذج ONNX/lwdetr_large_coco_export.sh /path/to/your/COCODIR /path/to/your/checkpoint# تحويل النموذج من محرك ONNX إلى محرك TensorRT كنصوص برمجية Wellsh/lwdetr_large_coco_export.sh /path/to/your/COCODIR /path /to/your/checkpoint --trt
# تصدير نصوص نماذج ONNX/lwdetr_xlarge_coco_export.sh /path/to/your/COCODIR /path/to/your/checkpoint# تحويل النموذج من محرك ONNX إلى محرك TensorRT كنصوص برمجية Wellsh/lwdetr_xlarge_coco_export.sh /path/to/your/COCODIR /path /to/your/checkpoint --trt
يمكنك استخدام أداة deploy/benchmark.py
لتشغيل معايير زمن الوصول للاستدلال.
# تقييم وقياس زمن الوصول على onnx modelpython Deploy/benchmark.py --path=/path/to/your/onnxmodel --coco_path=/path/to/your/COCODIR --run_benchmark # تقييم وقياس زمن الوصول على TensorRT Enginepython Deploy/benchmark.py --path=/path/to/your/trtengine --coco_path=/path/to/your/COCODIR --run_benchmark
النتائج الرئيسية على مجموعة بيانات كوكو. نقوم بالإبلاغ عن خطة عمل البحر المتوسط كما ورد في الورقة الأصلية، بالإضافة إلى خطة عمل البحر المتوسط التي تم الحصول عليها من إعادة التنفيذ.
طريقة | التدريب المسبق | بارامس (م) | يتخبط (ز) | زمن وصول النموذج (ملي ثانية) | الكمون الإجمالي (ملي ثانية) | رسم خريطة | تحميل |
---|---|---|---|---|---|---|---|
LW-DETR-tiny | ✔ | 12.1 | 11.2 | 2.0 | 2.0 | 42.6 (42.9) | وصلة |
LW-DETR-small | ✔ | 14.6 | 16.6 | 2.9 | 2.9 | 48.0 (48.1) | وصلة |
LW-DETR-medium | ✔ | 28.2 | 42.8 | 5.6 | 5.6 | 52.5 (52.6) | وصلة |
LW-DETR-large | ✔ | 46.8 | 71.6 | 8.8 | 8.8 | 56.1 (56.1) | وصلة |
LW-DETR-xlarge | ✔ | 118.0 | 174.2 | 19.1 | 19.1 | 58.3 (58.3) | وصلة |
يتم تنفيذ مشروعنا بناءً على الورقة العامة التالية مع الكود:
مجموعة ديتر
ViTDet
ديتر قابل للتشوه
DETR المشروط
YOLov8
محاذاةDETR
CAE v2
CAE
إذا وجدت هذا الكود مفيدًا في بحثك، فيرجى مراعاة الاستشهاد بمقالتنا:
@article{chen2024lw,title={LW-DETR: استبدال محول لـ YOLO للكشف في الوقت الفعلي},author={Chen, Qiang and Su, Xiangbo and Zhang, Xinyu and Wang, Jian and Chen, Jiahui and Shen, Yunpeng وهان وتشوتشو وتشن وزيليانج وشو وويكسيانج ولي وفانرونج وآخرون},journal={arXiv preprint arXiv:2406.03459},year={2024}}