(2024/5) تم دمج BEVFusion في NVIDIA DeepStream لدمج المستشعر.
(2023/5) توفر NVIDIA حل نشر TensorRT لـ BEVFusion، مما يحقق 25 إطارًا في الثانية على Jetson Orin.
(2023/4) يحتل BEVFusion المرتبة الأولى في لوحة المتصدرين للكشف عن الكائنات ثلاثية الأبعاد Argoverse بين جميع الحلول.
(2023/1) تم دمج BEVFusion في MMDetection3D.
(2023/1) تم قبول BEVFusion في ICRA 2023!
(2022/8) يحتل BEVFusion المرتبة الأولى في لوحة المتصدرين للكشف عن الكائنات ثلاثية الأبعاد من Waymo بين جميع الحلول.
(2022/6) يحتل BEVFusion المرتبة الأولى في قائمة المتصدرين للكشف عن الكائنات ثلاثية الأبعاد من nuScenes بين جميع الحلول.
(2022/6) يحتل BEVFusion المرتبة الأولى في قائمة المتصدرين للكشف عن الكائنات ثلاثية الأبعاد من nuScenes بين جميع الحلول.
يعد دمج أجهزة الاستشعار المتعددة أمرًا ضروريًا لنظام قيادة مستقل دقيق وموثوق. تعتمد الأساليب الحديثة على الدمج على مستوى النقطة: زيادة سحابة نقاط LiDAR بميزات الكاميرا. ومع ذلك، فإن عرض الكاميرا إلى LiDAR يتخلص من الكثافة الدلالية لميزات الكاميرا، مما يعيق فعالية هذه الأساليب، خاصة بالنسبة للمهام ذات التوجه الدلالي (مثل تجزئة المشهد ثلاثي الأبعاد). في هذه الورقة، قمنا بكسر هذا التقليد المتجذر باستخدام BEVFusion، وهو إطار عمل اندماجي متعدد أجهزة الاستشعار يتسم بالكفاءة والعمومية ومتعدد المهام. فهو يوحد الميزات متعددة الوسائط في مساحة تمثيل الرؤية الشاملة (BEV) المشتركة، والتي تحافظ بشكل جيد على كل من المعلومات الهندسية والدلالية. ولتحقيق ذلك، نقوم بتشخيص وإزالة اختناقات الكفاءة الرئيسية في تحويل العرض من خلال التجميع الأمثل لـ BEV، مما يقلل زمن الوصول بأكثر من 40 مرة . BEVFusion هو في الأساس حيادي للمهام ويدعم بسلاسة مهام الإدراك ثلاثي الأبعاد المختلفة دون أي تغييرات معمارية تقريبًا. إنه يؤسس لحالة جديدة من التقدم على معيار nuScenes، محققًا أعلى بنسبة 1.3% من MAP وNDS عند اكتشاف الكائنات ثلاثية الأبعاد و 13.6% أعلى من mIoU عند تجزئة خريطة BEV، مع تكلفة حسابية أقل بمقدار 1.9 مرة .
نموذج | ماب-L1 | ماف-L1 | ماب-L2 | ماف-L2 |
---|---|---|---|---|
BEVFusion | 82.72 | 81.35 | 77.65 | 76.33 |
BEVFusion-TTA | 86.04 | 84.76 | 81.22 | 79.97 |
هنا، يستخدم BEVFusion نموذجًا واحدًا فقط دون أي زيادة في وقت الاختبار. يستخدم BEVFusion-TTA نموذجًا واحدًا مع زيادة وقت الاختبار ولا يتم تطبيق أي تجميع للنموذج.
نموذج | الطريقة | رسم خريطة | NDS |
---|---|---|---|
BEVFusion-e | ج+ل | 74.99 | 76.09 |
BEVFusion | ج+ل | 70.23 | 72.88 |
BEVقاعدة الاندماج* | ج+ل | 71.72 | 73.83 |
*: قمنا بتوسيع نطاق أجهزة MAC الخاصة بالنموذج لتتناسب مع تكلفة حساب العمل المتزامن.
نموذج | الطريقة | رسم خريطة | NDS | نقطة تفتيش |
---|---|---|---|---|
BEVFusion | ج+ل | 68.52 | 71.38 | وصلة |
الكاميرا فقط خط الأساس | ج | 35.56 | 41.21 | وصلة |
خط الأساس LiDAR فقط | ل | 64.68 | 69.28 | وصلة |
ملاحظة : يعد خط الأساس لاكتشاف الكائنات بالكاميرا فقط أحد أشكال BEVDet-Tiny مع محول عرض أثقل بكثير واختلافات أخرى في المعلمات الفائقة. بفضل مشغل تجميع BEV الفعال لدينا، يعمل هذا الطراز بسرعة ويحتوي على خريطة أعلى من BEVDet-Tiny تحت نفس دقة الإدخال. يرجى الرجوع إلى BEVDet repo لتطبيق BEVDet-Tiny الأصلي. خط الأساس لـ LiDAR فقط هو TransFusion-L.
نموذج | الطريقة | mIoU | نقطة تفتيش |
---|---|---|---|
BEVFusion | ج+ل | 62.95 | وصلة |
الكاميرا فقط خط الأساس | ج | 57.09 | وصلة |
خط الأساس LiDAR فقط | ل | 48.56 | وصلة |
تم إنشاء الكود باستخدام المكتبات التالية:
بايثون >= 3.8، <3.9
OpenMPI = 4.0.4 وmpi4py = 3.0.3 (مطلوب لحزمة الشعلة)
الوسادة = 8.4.0 (انظر هنا)
باي تورش >= 1.9، <= 1.10.2
تقدم
torchpack
ملمكف = 1.4.0
كشف ملم = 2.20.0
nuscenes-dev-kit
بعد تثبيت هذه التبعيات، يرجى تشغيل هذا الأمر لتثبيت قاعدة التعليمات البرمجية:
تطوير بيثون setup.py
نحن نوفر أيضًا ملف Dockerfile لتسهيل إعداد البيئة. لبدء استخدام docker، يرجى التأكد من تثبيت nvidia-docker
على جهازك. بعد ذلك، يرجى تنفيذ الأمر التالي لإنشاء صورة عامل الإرساء:
بناء القرص المضغوط && عامل الإرساء . -t التشويش
يمكننا بعد ذلك تشغيل عامل الإرساء باستخدام الأمر التالي:
nvidia-docker run -it -v `pwd`/../data:/dataset --shm-size 16g bevfusion /bin/bash
نوصي المستخدمين بتشغيل إعداد البيانات (تتوفر التعليمات في القسم التالي) خارج عامل الإرساء إن أمكن. لاحظ أن دليل مجموعة البيانات يجب أن يكون مسارًا مطلقًا. داخل عامل الإرساء، يرجى تشغيل الأمر التالي لاستنساخ الريبو الخاص بنا وتثبيت ملحقات CUDA المخصصة:
cd home && git clone https://github.com/mit-han-lab/bevfusion && cd bevfusion تطوير بيثون setup.py
يمكنك بعد ذلك إنشاء data
رابط رمزي إلى دليل /dataset
في عامل الإرساء.
يرجى اتباع التعليمات الواردة هنا لتنزيل مجموعة بيانات nuScenes ومعالجتها مسبقًا. يرجى تذكر تنزيل كل من مجموعة بيانات الكشف وامتداد الخريطة (لتجزئة خريطة BEV). بعد إعداد البيانات، ستتمكن من رؤية بنية الدليل التالية (كما هو موضح في mmdetection3d):
mmdetection3d ├── mmdet3d ├── tools ├── configs ├── data │ ├── nuscenes │ │ ├── maps │ │ ├── samples │ │ ├── sweeps │ │ ├── v1.0-test | | ├── v1.0-trainval │ │ ├── nuscenes_database │ │ ├── nuscenes_infos_train.pkl │ │ ├── nuscenes_infos_val.pkl │ │ ├── nuscenes_infos_test.pkl │ │ ├── nuscenes_dbinfos_train.pkl
كما نقدم أيضًا تعليمات لتقييم نماذجنا المُدربة مسبقًا. يرجى تنزيل نقاط التفتيش باستخدام البرنامج النصي التالي:
./tools/download_pretrained.sh
بعد ذلك، سوف تكون قادرا على تشغيل:
torchpack dist-run -np [عدد وحدات معالجة الرسومات] أدوات بايثون/test.py [مسار ملف التكوين] مدرب مسبقًا/[اسم نقطة التحقق].pth --التقييم [نوع التقييم]
على سبيل المثال، إذا كنت تريد تقييم متغير الكشف لـ BEVFusion، فيمكنك تجربة:
torchpack dist-run -np 8 python Tools/test.py configs/nuscenes/det/transfusion/secfpn/camera+lidar/swint_v0p075/convfuser.yaml pretrained/bevfusion-det.pth --eval bbox
بينما بالنسبة لمتغير التجزئة لـ BEVFusion، سيكون هذا الأمر مفيدًا:
torchpack dist-run -np 8 python Tools/test.py configs/nuscenes/seg/fusion-bev256d2-lss.yaml pretrained/bevfusion-seg.pth - خريطة التقييم
نحن نقدم تعليمات لإعادة إنتاج نتائجنا على nuScenes.
على سبيل المثال، إذا كنت تريد تدريب متغير الكاميرا فقط لاكتشاف الكائنات، فيرجى تشغيل:
torchpack dist-run -np 8 python Tools/train.py configs/nuscenes/det/centerhead/lssfpn/camera/256x704/swint/default.yaml --model.encoders.camera.backbone.init_cfg.checkpoint pretrained/swint-nuimages -متدرب مسبقًا.pth
بالنسبة لنموذج تجزئة BEV للكاميرا فقط، يرجى تشغيل:
torchpack dist-run -np 8 python Tools/train.py configs/nuscenes/seg/camera-bev256d2.yaml --model.encoders.camera.backbone.init_cfg.checkpoint pretrained/swint-nuimages-pretrained.pth
بالنسبة إلى كاشف LiDAR فقط، يرجى تشغيل:
torchpack dist-run -np 8 python Tools/train.py configs/nuscenes/det/transfusion/secfpn/lidar/voxelnet_0p075.yaml
بالنسبة لنموذج تجزئة BEV المزود بتقنية LiDAR فقط، يرجى تشغيل:
torchpack dist-run -np 8 python Tools/train.py configs/nuscenes/seg/lidar-centerpoint-bev128.yaml
بالنسبة لنموذج اكتشاف BEVFusion، يرجى تشغيل:
torchpack dist-run -np 8 python Tools/train.py configs/nuscenes/det/transfusion/secfpn/camera+lidar/swint_v0p075/convfuser.yaml --model.encoders.camera.backbone.init_cfg.checkpoint pretrained/swint-nuimages -pretrained.pth --load_from مُدرب مسبقًا/lidar-only-det.pth
بالنسبة لنموذج تجزئة BEVFusion، يرجى تشغيل:
torchpack dist-run -np 8 python Tools/train.py configs/nuscenes/seg/fusion-bev256d2-lss.yaml --model.encoders.camera.backbone.init_cfg.checkpoint pretrained/swint-nuimages-pretrained.pth
ملاحظة: يرجى تشغيل tools/test.py
بشكل منفصل بعد التدريب للحصول على مقاييس التقييم النهائية.
CUDA-BEVFusion: أفضل ممارسة لـ TensorRT، الذي يوفر حلول تسريع INT8 ويحقق 25 إطارًا في الثانية على ORIN.
س: هل يمكننا استخدام ملفات المعلومات التي أعدتها mmdetection3d مباشرة؟
ج: نوصي بإعادة إنشاء ملفات المعلومات باستخدام قاعدة التعليمات البرمجية هذه نظرًا لأننا قمنا بتكوين mmdetection3d قبل إعادة هيكلة النظام الإحداثي الخاص بها.
يعتمد BEVFusion على mmdetection3d. كما أنها مستوحاة بشكل كبير من المساهمات البارزة التالية في مجتمع المصادر المفتوحة: LSS، وBEVDet، وTransFusion، وCentrePoint، وMVP، وFUTR3D، وCVT، وDETR3D.
يرجى أيضًا الاطلاع على الأبحاث ذات الصلة في مجتمع الإدراك ثلاثي الأبعاد للكاميرا فقط مثل BEVDet4D وBEVerse وBEVFormer وM2BEV وPETR وPETRv2، والتي قد تكون امتدادات مستقبلية مثيرة للاهتمام لـ BEVFusion.
إذا كان BEVFusion مفيدًا أو ذا صلة ببحثك، فيرجى التكرم بالاعتراف بمساهماتنا من خلال الاستشهاد بورقتنا البحثية:
@inproceedings{liu2022bevfusion, title={BEVFusion: اندماج أجهزة استشعار متعددة المهام مع تمثيل عرض عين الطير الموحد}، المؤلف={Liu, Zhijian and Tang, Haotian and Amini, Alexander and Yang, Xingyu and Mao, Huizi and Rus , دانييلا وهان، سونغ}، عنوان الكتاب = {مؤتمر IEEE الدولي حول الروبوتات والأتمتة (ICRA)}، السنة={2023}}