(2024/5) BEVFusion はセンサー フュージョンのために NVIDIA DeepStream に統合されました。
(2023/5) NVIDIA、BEVFusion の TensorRT 導入ソリューションを提供、Jetson Orin で 25 FPS を実現。
(2023/4) BEVFusion は、Argoverse 3D オブジェクト検出リーダーボードですべてのソリューションの中で 1 位にランクされています。
(2023/1) BEVFusion が MMDetection3D に統合されました。
(2023/1) BEVFusionがICRA 2023に採択されました!
(2022/8) BEVFusion は、Waymo 3D 物体検出リーダーボードですべてのソリューションの中で 1 位にランクされています。
(2022/6) BEVFusion は、nuScenes 3D オブジェクト検出リーダーボードですべてのソリューションの中で 1 位にランクされています。
(2022/6) BEVFusion は、nuScenes 3D オブジェクト検出リーダーボードですべてのソリューションの中で 1 位にランクされています。
マルチセンサー フュージョンは、正確で信頼性の高い自動運転システムに不可欠です。最近のアプローチはポイントレベルの融合に基づいており、LiDAR ポイントクラウドをカメラ機能で強化しています。ただし、カメラから LiDAR への投影では、カメラ機能のセマンティック密度が無視され、特にセマンティック指向のタスク (3D シーン セグメンテーションなど) では、そのような方法の有効性が妨げられます。この論文では、効率的で汎用的なマルチタスク マルチセンサー フュージョン フレームワークである BEVFusion を使用して、この根深い慣習を打ち破ります。これは、共有鳥瞰図 (BEV) 表現空間でマルチモーダル機能を統合し、幾何学的情報と意味情報の両方を適切に保存します。これを達成するために、最適化された BEV プーリングを使用してビュー変換における重要な効率のボトルネックを診断して解消し、レイテンシーを40 分の 1 以上削減します。 BEVFusion は基本的にタスクに依存せず、アーキテクチャをほとんど変更することなく、さまざまな 3D 認識タスクをシームレスにサポートします。 nuScenes ベンチマークで新たな最先端技術を確立し、 1.9 倍低い計算コストで、3D オブジェクト検出で1.3%高い mAP と NDS、BEV マップ セグメンテーションで13.6%高い mIoU を達成します。
モデル | mAP-L1 | マPH-L1 | mAP-L2 | mAPH-L2 |
---|---|---|---|---|
BEVフュージョン | 82.72 | 81.35 | 77.65 | 76.33 |
BEVFusion-TTA | 86.04 | 84.76 | 81.22 | 79.97 |
ここで、BEVFusion はテスト時間を拡張せずに単一のモデルのみを使用します。 BEVFusion-TTA は、テスト時の拡張機能を備えた単一モデルを使用し、モデル アンサンブルは適用されません。
モデル | モダリティ | 地図 | NDS |
---|---|---|---|
BEVFusion-e | C+L | 74.99 | 76.09 |
BEVフュージョン | C+L | 70.23 | 72.88 |
BEVFusion ベース* | C+L | 71.72 | 73.83 |
*: 同時作業の計算コストに合わせてモデルの MAC をスケールアップしました。
モデル | モダリティ | 地図 | NDS | チェックポイント |
---|---|---|---|---|
BEVフュージョン | C+L | 68.52 | 71.38 | リンク |
カメラのみのベースライン | C | 35.56 | 41.21 | リンク |
LiDAR のみのベースライン | L | 64.68 | 69.28 | リンク |
注: カメラのみのオブジェクト検出ベースラインは、はるかに重いビュー トランスフォーマーとハイパーパラメータのその他の違いを備えた BEVDet-Tiny のバリアントです。効率的な BEV プーリング オペレーターのおかげで、このモデルは高速に動作し、同じ入力解像度の下で BEVDet-Tiny よりも高い mAP を備えています。オリジナルの BEVDet-Tiny 実装については、BEVDet リポジトリを参照してください。 LiDAR 専用のベースラインは TransFusion-L です。
モデル | モダリティ | ミオ | チェックポイント |
---|---|---|---|
BEVフュージョン | C+L | 62.95 | リンク |
カメラのみのベースライン | C | 57.09 | リンク |
LiDAR のみのベースライン | L | 48.56 | リンク |
コードは次のライブラリを使用して構築されます。
Python >= 3.8、<3.9
OpenMPI = 4.0.4 および mpi4py = 3.0.3 (torchpack に必要)
枕 = 8.4.0 (ここを参照)
PyTorch >= 1.9、<= 1.10.2
tqdm
たいまつ
mmcv = 1.4.0
mm検出 = 2.20.0
ヌシーン開発キット
これらの依存関係をインストールした後、次のコマンドを実行してコードベースをインストールしてください。
Python setup.py 開発
環境セットアップを容易にする Dockerfile も提供しています。 docker を使い始めるには、 nvidia-docker
がマシンにインストールされていることを確認してください。その後、次のコマンドを実行して docker イメージをビルドしてください。
cd docker && docker build 。 -t ベブフュージョン
次に、次のコマンドを使用して Docker を実行できます。
nvidia-docker run -it -v `pwd`/../data:/dataset --shm-size 16g bevfusion /bin/bash
可能であれば、Docker の外部でデータ準備を実行することをお勧めします (手順は次のセクションで説明します)。データセット ディレクトリは絶対パスである必要があることに注意してください。 Docker 内で次のコマンドを実行してリポジトリのクローンを作成し、カスタム CUDA 拡張機能をインストールしてください。
cd ホーム && git クローン https://github.com/mit-han-lab/bevfusion && cd bevfusion Python setup.py 開発
その後、Docker の/dataset
ディレクトリへのシンボリック リンクdata
を作成できます。
ここの手順に従って、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 [GPU の数] python tools/test.py [設定ファイルのパス] pretrained/[チェックポイント名].pth --eval [評価タイプ]
たとえば、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 --eval map
結果を 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 -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
LiDAR のみの BEV セグメンテーション モデルの場合は、次を実行してください。
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 pretrained/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 アクセラレーション ソリューションを提供し、ORIN で 25fps を達成します。
Q: mmdetection3d で用意された情報ファイルを直接使用できますか?
A: 座標系のリファクタリングの前に mmdetection3d をフォークしたため、このコードベースを使用して情報ファイルを再生成することをお勧めします。
BEVFusion は mmdetection3d に基づいています。また、オープンソース コミュニティへの次のような傑出した貢献にも大きく影響を受けています: LSS、BEVDet、TransFusion、CenterPoint、MVP、FUTR3D、CVT、DETR3D。
BEVDet4D、BEVerse、BEVFormer、M2BEV、PETR、PETRv2 などのカメラ専用 3D 認識コミュニティの関連文書もチェックしてください。これらは、BEVFusion の将来の興味深い拡張機能となる可能性があります。
BEVFusion があなたの研究に役立つ、または関連性がある場合は、私たちの論文を引用して私たちの貢献を認めてください。
@inproceedings{liu2022bevfusion, title={BEVFusion: 統合鳥瞰図表現によるマルチタスク マルチセンサー フュージョン}, author={Liu、Zhijian と Tang、Haotian と Amini、Alexander と Yang、Xingyu と Mao、Huizi と Rus 、ダニエラとハン、ソング}、booktitle={IEEE ロボティクスとオートメーションに関する国際会議 (ICRA)}、年={2023}}