BEVformer训练nusenes-mini数据集
github链接:https://github.com/fundamentalvision/BEVFormer
一、环境配置
在公司服务器上配置:ubuntu18.04, python-3.8, torch-0.9.1, cuda-11.1,
具体安装步骤如下:
# 1、创建虚拟环境
conda create -n BEV python=3.8 -y
conda activate BEV# 2、安装torch、torchvision
pip install torch==1.9.1+cu111 torchvision==0.11.0+cu111 torchaudio==0.10.0 -f https://download.pytorch.org/whl/torch_stable.html# 3、安装mmcv
pip install mmcv-full==1.4.0 -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html -i https://pypi.tuna.tsinghua.edu.cn/simple/# 4、安装mmdet和mmsegmentation
pip install mmdet==2.15.0 -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install mmsegmentation==0.14.1 -i https://pypi.tuna.tsinghua.edu.cn/simple/# 5、源码安装mmdet3d
github下载:https://github.com/open-mmlab/mmdetection3d
注意,一定要下载0.17.0版本,其他版本不兼容。
然后解压:
cd mmdetection3d
python3 setup.py install# 6、安装 Detectron2 and Timm:
pip install einops fvcore seaborn iopath==0.1.9 timm==0.6.13 typing-extensions==4.5.0 pylint ipython==8.12 numpy==1.19.5 matplotlib==3.5.2 numba==0.48.0 pandas==1.4.4 scikit-image==0.19.3 setuptools==59.5.0
python -m pip install 'git+https://github.com/facebookresearch/detectron2.git'
二、nusenes-mini数据集准备
nuscenes.org/downloadhttps://www.nuscenes.org/download1、登陆后下载CANBUS和V1.0-mini版本:
下载至BEVformer根目录的data文件夹后解压,按如下目录放置:
data
├── can_bus ├──...
└── nuscenes├── maps├── samples├── sweeps└── v1.0-mini
2、生成训练需要的数据集格式:
python tools/create_data.py nuscenes --root-path ./data/nuscenes --out-dir ./data/nuscenes --extra-tag nuscenes --version v1.0-mini --canbus ./data
会报如下错误:
ModuleNotFoundError: No module named “tools.data converter‘
解决方法:
在tools文件夹下添加一个空的__init__.py文件,原因:缺少__init__.py,无法把这个目录视为包含package的模块;另外,将create_data.py头文件引入部分中,data_converter前面的tools去掉。
运行后会在data/nuscenes/
目录下生成2
个 pkl
和 2
个 json
文件如下:
三、训练、测试
1、训练
采用bevformer-tiny训练,预训练权重可以提前下载,也可以训练时下载,提前下载的话,记得修改配置文件:projects/configs/bevformer_tiny.py
执行训练命令:
./tools/dist_train.sh ./projects/configs/bevformer/bevformer_tiny.py 1
或
./tools/fp16/dist_train.sh ./projects/configs/bevformer_fp16/bevformer_tiny_fp16.py 1
报错1:-bash: ./tools/dist_train.sh: 权限不够:
解决方法:tools和tools/fp16目录下执行:chmod u+x *.sh
报错2:TypeError: FormatCode() got an unexpected keyword argument ‘verify‘
解决方法:降低yapf版本至0.40.1,pip install yapf==0.40.1
然后即可训练:
训练5轮后的指标:
训练后的指标含义解析,参考如下链接:
https://blog.csdn.net/wenquantongxin/article/details/143824403
2、测试并可视化
运行如下脚本检测:
./tools/dist_test.sh ./projects/configs/bevformer/bevformer_tiny.py work_dirs/bevformer_tiny/latest.pth 1
results_nusc.json为检测结果。
可视化:
# 修改1、
nusc = NuScenes(version='v1.0-trainval', dataroot='./data/nuscenes', verbose=True)
# 修改为:
nusc = NuScenes(version='v1.0-mini', dataroot='./data/nuscenes', verbose=True)# 修改2、
bevformer_results = mmcv.load('test/bevformer_base/Thu_Jun__9_16_22_37_2022/pts_bbox/results_nusc.json')
修改为自己的路径# 修改3、
注释下面两行代码if verbose:plt.show()# 修改4、
添加保存路径代码:# 添加result目录save_dir = "result"if not os.path.exists(save_dir):os.mkdir(save_dir)sample_token_list = list(bevformer_results['results'].keys())
之后运行:
python tools/analysis_tools/visual.py
训练5轮的模型预测效果图如下:
注释: