論文地址:https://arxiv.org/abs/2112.11790
專案地址:https://github.com/HuangJunJie2017/BEVDet
在anaconda中建立虛擬環境並啟動
conda create bevdet_ckpt python=3.7 -y
進入虛擬環境
conda activate bevdet_ckpt
閱讀論文,想要復現BEVDet的Tiny版本,在原作者的Github最新branch分支中,./configs/bevdet下已經沒有tiny的py檔案了。檢視另外5個brach發現,在checkpoint和master分支下還保留了tiny檔案。
透過git進行clone為dev3.0的最新分支,所以透過zip下載。
https://github.com/HuangJunJie2017/BEVDet/archive/refs/heads/checkpoint.zip
解壓後進入bevdet-checkpoint資料夾。
安裝相關依賴
pip install -c pytorch pytorch torchvision -y
pip install mmcv-full==1.3.13
pip install mmdet==2.14.0
pip install mmsegmentation==0.14.1
pip install -v -e .
進入nuscenes官網註冊賬號登陸後https://www.nuscenes.org/nuscenes#download下載mini資料集
將mini dataset下載後的v1.0-mini.tgz解壓出來可得到名為v1.0-mini的資料夾,改名為nuscenes,並移動到專案根目錄下的./data
資料夾中;
Map expansion下載解壓後將檔案移動到nuscenes解壓出來的Map資料夾中,作為地圖擴充套件;
對nuscenes中的v1.0-mini複製一份並改名為v1.0-trainval
預處理nuscenes資料集
python tools/create_data.py nuscenes --version v1.0-mini --root-path ./data/nuscenes --out-dir ./data/nuscenes --extra-tag nuscenes
如果資料集不在data資料夾下,需要替換--root-path為相應檔案路徑,並且在後續訓練測試時需要修改config檔案。
直接開始訓練
# single-gpu
python tools/train.py ${CONFIG_FILE} [optional arguments]
# multi-gpu
./tools/dist_train.sh ${CONFIG_FILE} ${GPU_NUM} [optional arguments]
單gpu和多gpu分別使用上面的命令;本次復現透過單gpu進行測試:
python tools/train.py ./configs/bevdet/bevdet-sttiny.py
如果資料集並不在./data/nuscenes
中,需要修改bevdet-sttiny.py中的相關程式碼為資料集路徑:
執行後出現報錯,查詢相關解決方案:
透過執行pip install yapf==0.40.1
解決,並重新進行訓練,繼續出現報錯,查詢相關解決方案:
透過執行pip install setuptools==59.5.0
解決,並重新進行訓練。
測試如下:
# single-gpu testing
python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} [--out ${RESULT_FILE}] [--eval ${EVAL_METRICS}] [--show] [--show-dir ${SHOW_DIR}]
# multi-gpu testing
./tools/dist_test.sh ${CONFIG_FILE} ${CHECKPOINT_FILE} ${GPU_NUM} [--out ${RESULT_FILE}] [--eval ${EVAL_METRICS}]
使用單gpu進行測試:
python tools/test.py ./configs/bevdet/bevdet-sttiny.py work_dirs/bevdet-sstiny/latest.pth --eval mAP
測試結果
視覺化:
因為checkpoint分支下的./tools/analysis_tools
中沒有vis.py檔案,所以從別的分支中下載vis.py檔案並移動至./tools/analysis_tools
中。
https://github.com/HuangJunJie2017/BEVDet/raw/refs/heads/master/tools/analysis_tools/vis.py
視覺化前需要得到json檔案,所以重新執行:
python ./tools/test.py ./configs/bevdet/bevdet-sttiny.py work_dirs/bevdet-sttiny/latest.pth --format-only --eval-options jsonfile_prefix=$savepath
在./pts_bbox
中得到results_nusc.json
執行
python tools/analysis_tools/vis.py ./pts_bbox/results_nusc.json
在根目錄下出現vis資料夾,裡面為mp4影片檔案