(5/2024) BEVFusion ถูกรวมเข้ากับ NVIDIA DeepStream เพื่อการรวมเซ็นเซอร์
(5/2566) NVIDIA มอบโซลูชันการปรับใช้ TensorRT ของ BEVFusion โดยบรรลุ 25 FPS บน Jetson Orin
(4/2566) BEVFusion ครองอันดับหนึ่งในกระดานผู้นำการตรวจจับวัตถุ Argoverse 3D ในบรรดาโซลูชันทั้งหมด
(1/2023) BEVFusion ถูกรวมเข้ากับ MMDetection3D
(2023/1) BEVFusion ได้รับการยอมรับจาก ICRA 2023!
(8/2022) BEVFusion ครองอันดับหนึ่งในกระดานผู้นำการตรวจจับวัตถุ Waymo 3D ในบรรดาโซลูชันทั้งหมด
(6/2565) BEVFusion ครองอันดับหนึ่งในกระดานผู้นำการตรวจจับวัตถุ nuScenes 3D ในบรรดาโซลูชันทั้งหมด
(6/2565) BEVFusion ครองอันดับหนึ่งในกระดานผู้นำการตรวจจับวัตถุ nuScenes 3D ในบรรดาโซลูชันทั้งหมด
การรวมเซ็นเซอร์หลายตัวถือเป็นสิ่งสำคัญสำหรับระบบขับเคลื่อนอัตโนมัติที่แม่นยำและเชื่อถือได้ แนวทางล่าสุดอิงตามการรวมระดับจุด: การเพิ่มพอยต์คลาวด์ LiDAR ด้วยคุณสมบัติของกล้อง อย่างไรก็ตาม การฉายภาพจากกล้องสู่ LiDAR จะขจัดความหนาแน่นของความหมายของคุณลักษณะต่างๆ ของกล้องออกไป ซึ่งขัดขวางประสิทธิภาพของวิธีการดังกล่าว โดยเฉพาะอย่างยิ่งสำหรับงานที่เน้นความหมาย (เช่น การแบ่งส่วนฉาก 3 มิติ) ในบทความนี้ เราทำลายแบบแผนที่หยั่งรากลึกนี้ด้วย BEVFusion ซึ่งเป็นเฟรมเวิร์กฟิวชั่นหลายเซ็นเซอร์แบบมัลติทาสก์ทั่วไปที่มีประสิทธิภาพและทั่วไป มันรวมคุณสมบัติหลายรูปแบบเข้าด้วยกันในพื้นที่การแสดงมุมมองแบบมุมสูง (BEV) ที่ใช้ร่วมกัน ซึ่งรักษาข้อมูลทั้งทางเรขาคณิตและความหมายไว้อย่างสวยงาม เพื่อให้บรรลุเป้าหมายนี้ เราได้วินิจฉัยและขจัดปัญหาคอขวดของประสิทธิภาพหลักในการเปลี่ยนแปลงมุมมองด้วยการรวม BEV ที่ปรับให้เหมาะสม ซึ่งช่วยลดเวลาแฝงได้มากกว่า 40 เท่า BEVFusion เป็นพื้นฐานที่ไม่เชื่อเรื่องงาน และรองรับงานการรับรู้ 3D ต่างๆ ได้อย่างราบรื่น โดยแทบไม่มีการเปลี่ยนแปลงทางสถาปัตยกรรมเลย โดยสร้างความก้าวหน้าครั้งใหม่บนเกณฑ์มาตรฐาน nuScenes โดยได้รับ mAP และ NDS ที่สูงขึ้น 1.3% ในการตรวจจับวัตถุ 3 มิติ และ mIoU ที่สูงขึ้น 13.6% ในการแบ่งส่วนแผนที่ BEV โดยมีต้นทุนการคำนวณลดลง 1.9 เท่า
แบบอย่าง | เอ็มเอพี-L1 | เอ็มพีเอช-L1 | เอ็มเอพี-L2 | เอ็มพีเอช-L2 |
---|---|---|---|---|
บีอีวีฟิวชั่น | 82.72 | 81.35 | 77.65 | 76.33 |
บีฟฟิวชั่น-TTA | 86.04 | 84.76 | 81.22 | 79.97 |
ในที่นี้ BEVFusion ใช้รุ่นเดียวเท่านั้นโดยไม่มีการเพิ่มเวลาทดสอบใดๆ BEVFusion-TTA ใช้โมเดลเดี่ยวที่มีการเพิ่มเวลาทดสอบ และไม่มีการนำโมเดลมาประกอบกัน
แบบอย่าง | กิริยา | แผนที่ | นดีเอส |
---|---|---|---|
BEVFusion-e | ซี+แอล | 74.99 | 76.09 |
บีอีวีฟิวชั่น | ซี+แอล | 70.23 | 72.88 |
BEVฟิวชั่นฐาน* | ซี+แอล | 71.72 | 73.83 |
*: เราปรับขนาด MAC ของโมเดลให้ตรงกับต้นทุนการคำนวณของงานที่เกิดขึ้นพร้อมกัน
แบบอย่าง | กิริยา | แผนที่ | นดีเอส | ด่าน |
---|---|---|---|---|
บีอีวีฟิวชั่น | ซี+แอล | 68.52 | 71.38 | ลิงค์ |
ข้อมูลพื้นฐานสำหรับกล้องเท่านั้น | ค | 35.56 | 41.21 | ลิงค์ |
พื้นฐาน LiDAR เท่านั้น | ล | 64.68 | 69.28 | ลิงค์ |
หมายเหตุ : เส้นฐานการตรวจจับวัตถุเพียงอย่างเดียวของกล้องคือ BEVDet-Tiny ที่แตกต่างจาก BEVDet-Tiny ซึ่งมีตัวแปลงมุมมองที่หนักกว่ามากและความแตกต่างอื่นๆ ในไฮเปอร์พารามิเตอร์ ด้วยตัวดำเนินการรวบรวม BEV ที่มีประสิทธิภาพของเรา โมเดลนี้จึงทำงานได้เร็วและมี mAP สูงกว่า BEVDet-Tiny ภายใต้ความละเอียดอินพุตเดียวกัน โปรดดูที่ BEVDet repo สำหรับการใช้งาน BEVDet-Tiny ดั้งเดิม บรรทัดฐาน LiDAR เท่านั้นคือ TransFusion-L
แบบอย่าง | กิริยา | มิวยู | ด่าน |
---|---|---|---|
บีอีวีฟิวชั่น | ซี+แอล | 62.95 | ลิงค์ |
ข้อมูลพื้นฐานสำหรับกล้องเท่านั้น | ค | 57.09 | ลิงค์ |
พื้นฐาน LiDAR เท่านั้น | ล | 48.56 | ลิงค์ |
รหัสถูกสร้างขึ้นด้วยไลบรารีต่อไปนี้:
หลาม >= 3.8, <3.9
OpenMPI = 4.0.4 และ mpi4py = 3.0.3 (จำเป็นสำหรับ torchpack)
หมอน = 8.4.0 (ดูที่นี่)
ไพทอร์ช >= 1.9, <= 1.10.2
ทีคิวดีเอ็ม
คบเพลิง
mmcv = 1.4.0
มิลลิเมตรการตรวจจับ = 2.20.0
nuscenes-dev-kit
หลังจากติดตั้งการขึ้นต่อกันเหล่านี้แล้ว โปรดรันคำสั่งนี้เพื่อติดตั้งโค้ดเบส:
หลาม setup.py พัฒนา
นอกจากนี้เรายังมี Dockerfile เพื่อความสะดวกในการตั้งค่าสภาพแวดล้อม ในการเริ่มต้นใช้งาน docker โปรดตรวจสอบให้แน่ใจว่าได้ติดตั้ง nvidia-docker
บนเครื่องของคุณแล้ว หลังจากนั้น โปรดดำเนินการคำสั่งต่อไปนี้เพื่อสร้างอิมเมจนักเทียบท่า:
ซีดีนักเทียบท่า && นักเทียบท่าสร้าง -t bevfusion
จากนั้นเราสามารถรัน docker ด้วยคำสั่งต่อไปนี้:
nvidia-docker run -it -v `pwd`/../data:/dataset --shm-size 16g bevfusion /bin/bash
เราขอแนะนำให้ผู้ใช้เรียกใช้การเตรียมข้อมูล (คำแนะนำมีอยู่ในส่วนถัดไป) นอกนักเทียบท่าหากเป็นไปได้ โปรดทราบว่าไดเรกทอรีชุดข้อมูลควรเป็นเส้นทางที่แน่นอน ภายในนักเทียบท่า โปรดเรียกใช้คำสั่งต่อไปนี้เพื่อโคลน repo ของเราและติดตั้งส่วนขยาย CUDA แบบกำหนดเอง:
บ้านซีดี && git clone https://github.com/mit-han-lab/bevfusion && cd bevfusion หลาม setup.py พัฒนา
จากนั้นคุณสามารถสร้าง data
ลิงก์สัญลักษณ์ไปยังไดเร็กทอรี /dataset
ใน docker ได้
โปรดปฏิบัติตามคำแนะนำจากที่นี่เพื่อดาวน์โหลดและประมวลผลชุดข้อมูล 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 [จำนวน gpus] python tools/test.py [config file path] pretrained/[ชื่อจุดตรวจสอบ].pth --eval [ประเภทการประเมิน]
ตัวอย่างเช่น หากคุณต้องการประเมินตัวแปรการตรวจจับของ BEVFusion คุณสามารถลอง:
torchpack dist-run -np 8 python tools/test.py configs/nuscenes/det/transfusion/secfpn/cam+lidar/swint_v0p075/convfuser.yaml ฝึกอบรมล่วงหน้า/bevfusion-det.pth --eval bbox
ในขณะที่ตัวแปรการแบ่งเซ็กเมนต์ของ BEVFusion คำสั่งนี้จะมีประโยชน์:
torchpack dist-run -np 8 python tools/test.py configs/nuscenes/seg/fusion-bev256d2-lss.yaml ฝึกอบรมล่วงหน้า / bevfusion-seg.pth --eval map
เราให้คำแนะนำในการทำซ้ำผลลัพธ์ของเราบน nuScenes
ตัวอย่างเช่น หากคุณต้องการฝึกตัวแปรเฉพาะกล้องสำหรับการตรวจจับวัตถุ โปรดเรียกใช้:
torchpack dist-run -np 8 python tools/train.py configs/nuscenes/det/centerhead/lssfpn/cam/256x704/swint/default.yaml --model.encoders.camera.backbone.init_cfg.checkpoint ฝึกอบรมล่วงหน้า / swint-nuimages -pretrained.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/train.py configs/nuscenes/seg/lidar-centerpoint-bev128.yaml
สำหรับโมเดลการตรวจจับ BEVFusion โปรดเรียกใช้:
torchpack dist-run -np 8 python tools/train.py configs/nuscenes/det/transfusion/secfpn/cam+lidar/swint_v0p075/convfuser.yaml --model.encoders.camera.backbone.init_cfg.checkpoint ฝึกอบรมล่วงหน้า / 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 และบรรลุ 25fps บน ORIN
ถาม: เราสามารถใช้ไฟล์ข้อมูลที่จัดทำโดย mmdetection3d ได้โดยตรงหรือไม่
ตอบ: เราขอแนะนำให้สร้างไฟล์ข้อมูลใหม่โดยใช้โค้ดเบสนี้ เนื่องจากเราแยก mmdetection3d ก่อนที่จะปรับโครงสร้างระบบพิกัดใหม่
BEVFusion ขึ้นอยู่กับ mmdetection3d นอกจากนี้ยังได้รับแรงบันดาลใจอย่างมากจากการมีส่วนร่วมที่โดดเด่นต่อไปนี้ในชุมชนโอเพ่นซอร์ส: LSS, BEVDet, TransFusion, CenterPoint, MVP, FUTR3D, CVT และ DETR3D
โปรดตรวจสอบเอกสารที่เกี่ยวข้องในชุมชนการรับรู้ 3 มิติที่ใช้กล้องเท่านั้น เช่น BEVDet4D, BEVerse, BEVFormer, M2BEV, PETR และ PETRv2 ซึ่งอาจเป็นส่วนขยายที่น่าสนใจของ BEVFusion ในอนาคต
หาก BEVFusion มีประโยชน์หรือเกี่ยวข้องกับการวิจัยของคุณ โปรดยกย่องการมีส่วนร่วมของเราโดยอ้างถึงรายงานของเรา:
@inproceedings{liu2022bevfusion, title={BEVFusion: Multi-Task Multi-Sensor Fusion with Unified Bird's-Eye View Representation}, ผู้แต่ง={Liu, Zhijian และ Tang, Haotian และ Amini, Alexander และ Yang, Xingyu และ Mao, Huizi และ Rus , Daniela และ Han, Song}, booktitle={IEEE International Conference on Robotics and Automation (ICRA)}, ปี={2023}}