环境配置(Linux)
创建虚拟环境
conda create -n open-mmlab python=3.8 -y
激活环境
conda activate open-mmlab
安装pytorch
pip install torch==1.8.0+cu111 torchvision==0.9.0+cu111 torchaudio==0.8.0 -f https://download.pytorch.org/whl/torch_stable.html
安装MMdetection3D
pip install openmim
mim install mmcv-full
mim install mmdet
mim install mmsegmentation
mim install mmengine
克隆编译MMdetection3D
git clone https://github.com/open-mmlab/mmdetection3d.git
cd mmdetection3d
pip install -e .
nuscenes数据准备,这里用的是mini版本
cd mmdetection3d/data/
mkdir nuscenes
cd nuscenes
wget https://www.nuscenes.org/data/v1.0-mini.tgz
tar -xf v1.0-mini.tgz
pip install nuscenes-devkit &> /dev/null
生成的数据格式如下
mmdetection3d
├── mmdet3d
├── tools
├── configs
├── data
│ ├── nuscenes-mini
│ │ ├── maps
│ │ ├── samples
│ │ ├── sweep
| | ├── v1.0-mini
然后将v1.0-mini重命名为v1.0-trainval。
数据转换,生成pkl文件
首先将mmdetection3d/tools/create_data.py文件的内容注释如下
elif args.dataset == 'nuscenes' and args.version != 'v1.0-mini':
train_version = f'{args.version}-trainval'
nuscenes_data_prep(
root_path=args.root_path,
info_prefix=args.extra_tag,
version=train_version,
dataset_name='NuScenesDataset',
out_dir=args.out_dir,
max_sweeps=args.max_sweeps)
"""
test_version = f'{args.version}-test'
nuscenes_data_prep(
root_path=args.root_path,
info_prefix=args.extra_tag,
version=test_version,
dataset_name='NuScenesDataset',
out_dir=args.out_dir,
max_sweeps=args.max_sweeps)
"""
然后运行下面的命令,生成pkl文件
python tools/create_data.py nuscenes --root-path ./data/nuscenes --out-dir ./data/nuscenes --extra-tag nuscenes --workers 20
模型训练
# 多卡训练
CUDA_VISIBLE_DEVICES=0,1 tools/dist_train.sh configs/fcos3d/fcos3d_r101-caffe-dcn_fpn_head-gn_8xb2-1x_nus-mono3d.py 2
# 单卡训练
CUDA_VISIBLE_DEVICES=0 tools/dist_train.sh configs/fcos3d/fcos3d_r101-caffe-dcn_fpn_head-gn_8xb2-1x_nus-mono3d.py 1
训练文件默认保存至 /mmdetection3d/work_dirs/fcos3d_r101-caffe-dcn_fpn_head-gn_8xb2-1x_nus-mono3d文件夹中。
模型测试
python tools/test.py configs/fcos3d/fcos3d_r101-caffe-dcn_fpn_head-gn_8xb2-1x_nus-mono3d.py work_dirs/fcos3d_r101-caffe-dcn_fpn_head-gn_8xb2-1x_nus-mono3d/epoch_12.pth --show --show-dir ./outputs/fcos3d/
注:可能是因为mini数据集准备的时候没有test数据,所以最后的测试结果没有输出,也请各位大佬多多指点!(环境配置部分没有问题,把数据集替换成nuscenes数据集完整版也是通用的,最后的结果也是可以输出的。需要把前面的注释bu'f)
参考资料
【MMDetection3D】基于单目(Monocular)的3D目标检测入门实战