Mmdetection3d集成了大量3D深度学习算法,其中很大一部分可以在智能驾驶nuScenes数据集上运行。在算法应用nuScenes数据之前,mmdetection3d提供了相应的预处理程序。关于nuScenes的详细介绍请参考本博客之前的文章nuScenes数据集详细介绍_Coding的叶子的博客-CSDN博客。部分介绍内容会持续更新和补充。
1 Mmdetection3d nuScenes目录结构
Mmdetection3d nuScenes数据集处理介绍官方地址为“https://mmdetection3d.readthedocs.io/en/latest/data_preparation.html”,具体介绍位于Data Preparation栏目。NuScenes的目录结构如下所示,包括maps、samples、sweeps、v1.0-test和v1.0-trainval。
图1 mmdetection3d nuScenes文件结构
上述文件结构来源于完整版的nuScenes,但是Mini版nuScene的目录为maps、samples、sweeps和v1.0-mini,数据集详细介绍请参考本专栏之前博文:nuScenes数据集详细介绍_Coding的叶子的博客-CSDN博客。在进行算法实验或学习时,我们通常下载的是Mini版本,直接运行mmdetection3d nuScenes默认处理程序时会出错。为了能够在Mini nuScenes运行算法,我们需要进行以下两处修改。此外,mmdetection3d也提供Mini 版nuScenes的处理程序,不需要对数据目录结构进行修改,相应的处理比例见下一节。
- 把v1.0-mini文件夹重命名为v1.0-trainval。
- 注释掉tools/create_data.py中处理nuScenes测试集部分,如下所示。
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)
'''
2 Mmdetection3d nuScenes预处理
Mmdetection3d nuScenes预处理命令如下。
python tools/create_data.py nuscenes --root-path ./data/nuscenes --out-dir ./data/nuscenes --extra-tag nuscenes
针对Mini nuScenes数据集,相应的预处理命令如下,需要指定版本号为v1.0-mini。
python tools/create_data.py nuscenes --version v1.0-mini --root-path ./data/nuscenes --out-dir ./data/nuscenes --extra-tag nuscenes
预处理命令运行成功后,nuscenes文件夹下会新增nuscenes_dbinfos_train.pkl、nuscenes_infos_train.pkl、nuscenes_infos_train_mono3d.coco.json、 nuscenes_infos_val.pkl、nuscenes_infos_val_mono3d.coco.json和nuscenes_gt_database文件夹。命令运行过程如下图所示。
图2 mmdetection3d nuScenes预处理程序运行过程
图3 预处理后文件结构