(2024/5) BEVFusion diintegrasikan ke dalam NVIDIA DeepStream untuk fusi sensor.
(2023/5) NVIDIA menyediakan solusi penerapan TensorRT BEVFusion, yang mencapai 25 FPS pada Jetson Orin.
(2023/4) BEVFusion menempati peringkat pertama pada papan peringkat deteksi objek 3D Argoverse di antara semua solusi.
(2023/1) BEVFusion diintegrasikan ke dalam MMDetection3D.
(2023/1) BEVFusion diterima di ICRA 2023!
(2022/8) BEVFusion menempati peringkat pertama pada papan peringkat deteksi objek 3D Waymo di antara semua solusi.
(2022/6) BEVFusion menempati peringkat pertama pada papan peringkat deteksi objek 3D nuScenes di antara semua solusi.
(2022/6) BEVFusion menempati peringkat pertama pada papan peringkat deteksi objek 3D nuScenes di antara semua solusi.
Fusi multi-sensor sangat penting untuk sistem penggerak otonom yang akurat dan andal. Pendekatan terbaru didasarkan pada fusi tingkat titik: menambah cloud titik LiDAR dengan fitur kamera. Namun, proyeksi kamera-ke-LiDAR menghilangkan kepadatan semantik fitur kamera, sehingga menghambat efektivitas metode tersebut, terutama untuk tugas-tugas berorientasi semantik (seperti segmentasi pemandangan 3D). Dalam makalah ini, kami mematahkan konvensi yang mengakar ini dengan BEVFusion, kerangka kerja fusi multi-sensor multi-tugas yang efisien dan umum. Ini menyatukan fitur multi-modal dalam ruang representasi pandangan mata burung (BEV), yang dengan baik mempertahankan informasi geometris dan semantik. Untuk mencapai hal ini, kami mendiagnosis dan menghilangkan hambatan efisiensi utama dalam transformasi tampilan dengan pengumpulan BEV yang dioptimalkan, sehingga mengurangi latensi lebih dari 40x . BEVFusion pada dasarnya bersifat agnostik terhadap tugas dan secara mulus mendukung berbagai tugas persepsi 3D dengan hampir tanpa perubahan arsitektur. Teknologi ini menghadirkan kecanggihan baru pada benchmark nuScenes, mencapai mAP dan NDS 1,3% lebih tinggi pada deteksi objek 3D dan mIoU 13,6% lebih tinggi pada segmentasi peta BEV, dengan biaya komputasi 1,9x lebih rendah.
Model | peta-L1 | peta-L1 | peta-L2 | peta-L2 |
---|---|---|---|---|
BEVFusion | 82.72 | 81.35 | 77.65 | 76.33 |
BEVFusion-TTA | 86.04 | 84,76 | 81.22 | 79,97 |
Di sini, BEVFusion hanya menggunakan satu model tanpa penambahan waktu pengujian. BEVFusion-TTA menggunakan model tunggal dengan augmentasi waktu pengujian dan tidak ada ensembling model yang diterapkan.
Model | Pengandaian | peta | NDS |
---|---|---|---|
BEVFusion-e | C+L | 74,99 | 76.09 |
BEVFusion | C+L | 70.23 | 72.88 |
BEVFusion-basis* | C+L | 71.72 | 73.83 |
*: Kami meningkatkan MAC model agar sesuai dengan biaya komputasi pekerjaan bersamaan.
Model | Pengandaian | peta | NDS | Pos pemeriksaan |
---|---|---|---|---|
BEVFusion | C+L | 68.52 | 71.38 | Link |
Garis Dasar Khusus Kamera | C | 35.56 | 41.21 | Link |
Garis Dasar Khusus LiDAR | L | 64.68 | 69.28 | Link |
Catatan : Garis dasar deteksi objek khusus kamera adalah varian BEVDet-Tiny dengan trafo tampilan yang jauh lebih berat dan perbedaan hyperparameter lainnya. Berkat operator pengumpulan BEV kami yang efisien, model ini berjalan cepat dan memiliki peta lebih tinggi daripada BEVDet-Tiny dengan resolusi input yang sama. Silakan merujuk ke repo BEVDet untuk implementasi BEVDet-Tiny yang asli. Garis dasar khusus LiDAR adalah TransFusion-L.
Model | Pengandaian | mIoU | Pos pemeriksaan |
---|---|---|---|
BEVFusion | C+L | 62,95 | Link |
Garis Dasar Khusus Kamera | C | 57.09 | Link |
Garis Dasar Khusus LiDAR | L | 48.56 | Link |
Kode ini dibangun dengan perpustakaan berikut:
Python >= 3.8, <3.9
OpenMPI = 4.0.4 dan mpi4py = 3.0.3 (Diperlukan untuk torchpack)
Bantal = 8.4.0 (lihat di sini)
PyTorch >= 1.9, <= 1.10.2
tqdm
paket obor
mmcv = 1.4.0
deteksi mm = 2.20.0
nuscenes-dev-kit
Setelah menginstal dependensi ini, jalankan perintah ini untuk menginstal basis kode:
python setup.py berkembang
Kami juga menyediakan Dockerfile untuk memudahkan pengaturan lingkungan. Untuk memulai dengan buruh pelabuhan, pastikan nvidia-docker
diinstal pada mesin Anda. Setelah itu, silakan jalankan perintah berikut untuk membangun image buruh pelabuhan:
cd buruh pelabuhan && buruh pelabuhan membangun . -t kebingungan
Kami kemudian dapat menjalankan buruh pelabuhan dengan perintah berikut:
nvidia-docker run -it -v `pwd`/../data:/dataset --shm-size 16g bevfusion /bin/bash
Kami menyarankan pengguna untuk menjalankan persiapan data (instruksi tersedia di bagian selanjutnya) di luar buruh pelabuhan jika memungkinkan. Perhatikan bahwa direktori kumpulan data harus berupa jalur absolut. Di dalam buruh pelabuhan, jalankan perintah berikut untuk mengkloning repo kami dan menginstal ekstensi CUDA khusus:
cd beranda && git clone https://github.com/mit-han-lab/bevfusion && cd bevfusion python setup.py berkembang
Anda kemudian dapat membuat data
tautan simbolik ke direktori /dataset
di buruh pelabuhan.
Silakan ikuti instruksi dari sini untuk mengunduh dan memproses dataset nuScenes terlebih dahulu. Harap ingat untuk mengunduh kumpulan data deteksi dan ekstensi peta (untuk segmentasi peta BEV). Setelah persiapan data, Anda akan dapat melihat struktur direktori berikut (seperti yang ditunjukkan dalam 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
Kami juga memberikan instruksi untuk mengevaluasi model terlatih kami. Silakan unduh pos pemeriksaan menggunakan skrip berikut:
./tools/download_pretrained.sh
Kemudian, Anda akan dapat menjalankan:
torchpack dist-run -np [jumlah GPU] alat python/test.py [jalur file konfigurasi] dilatih sebelumnya/[nama pos pemeriksaan].pth --eval [tipe evaluasi]
Misalnya, jika Anda ingin mengevaluasi varian deteksi BEVFusion, Anda dapat mencoba:
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
Sedangkan untuk varian segmentasi BEVFusion, perintah ini akan berguna:
torchpack dist-run -np 8 python tools/test.py configs/nuscenes/seg/fusion-bev256d2-lss.yaml pretrained/bevfusion-seg.pth --eval map
Kami memberikan instruksi untuk mereproduksi hasil kami di nuScenes.
Misalnya, jika Anda ingin melatih varian kamera saja untuk deteksi objek, jalankan:
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 yang telah dilatih sebelumnya/swint-nuimages -terlatih.pth
Untuk model segmentasi BEV khusus kamera, jalankan:
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
Untuk detektor khusus LiDAR, jalankan:
torchpack dist-run -np 8 alat python/train.py configs/nuscenes/det/transfusion/secfpn/lidar/voxelnet_0p075.yaml
Untuk model segmentasi BEV khusus LiDAR, jalankan:
torchpack dist-run -np 8 alat python/train.py configs/nuscenes/seg/lidar-centerpoint-bev128.yaml
Untuk model deteksi BEVFusion, jalankan:
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 terlatih/lidar-only-det.pth
Untuk model segmentasi BEVFusion, jalankan:
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
Catatan: jalankan tools/test.py
secara terpisah setelah pelatihan untuk mendapatkan metrik evaluasi akhir.
CUDA-BEVFusion: Praktik terbaik untuk TensorRT, yang menyediakan solusi akselerasi INT8 dan mencapai 25fps di ORIN.
T: Bisakah kami langsung menggunakan file info yang disiapkan oleh mmdetection3d?
J: Kami merekomendasikan pembuatan ulang file info menggunakan basis kode ini karena kami melakukan fork mmdetection3d sebelum sistem koordinatnya melakukan pemfaktoran ulang.
BEVFusion didasarkan pada mmdetection3d. Hal ini juga sangat terinspirasi oleh kontribusi luar biasa berikut ini kepada komunitas sumber terbuka: LSS, BEVDet, TransFusion, CenterPoint, MVP, FUTR3D, CVT dan DETR3D.
Silakan periksa juga makalah terkait di komunitas persepsi 3D khusus kamera seperti BEVDet4D, BEVerse, BEVFormer, M2BEV, PETR dan PETRv2, yang mungkin merupakan perpanjangan masa depan BEVFusion yang menarik.
Jika BEVFusion berguna atau relevan dengan penelitian Anda, mohon penghargaan atas kontribusi kami dengan mengutip makalah kami:
@inproceedings{liu2022bevfusion, title={BEVFusion: Penggabungan Multi-Sensor Multi-Tugas dengan Representasi Pandangan Luas Terpadu}, author={Liu, Zhijian dan Tang, Haotian dan Amini, Alexander dan Yang, Xingyu dan Mao, Huizi dan Rus , Daniela dan Han, Song}, booktitle={IEEE International Conference on Robotics and Automation (ICRA)}, tahun={2023}}