MMdetection3D学习系列(二)——KITTI数据集训练测试及可视化

安装完环境以后,就可以进行测试了,这里我使用的是KITTI数据集进行测试。关于KITTI数据集,网上有很多介绍了,这里简单说一下在mmdet3d中它需要的文件层级样式吧。主要是针对RGB和点云数据进行检测。
在这里插入图片描述
一般来说采用其中一侧的彩色摄像头的数据作为RGB数据输入即可。
但是这个数据集比较大,也需要挂梯子下载,所以我这边弄了一个500的小数据集,也已经按照mmdet3d的格式整理好了,后续我会将它发上来。
KITTI小数据集百度网盘链接
提取码:2pel
不过在mmdet3d中,还需要对数据进行进一步处理,将它处理为更易读取的pkl文件,这里mmdet3d也提供了处理工具

python tools/create_data.py kitti --root-path ./data/kitti --out-dir ./data/kitti --extra-tag kitti

训练的话其实和mmdet2d类似,也是通过配置config文件就可以了,我是基于‘configs/pointpillars/hv_pointpillars_secfpn_6x8_160e_kitti-3d-3class.py’进行修改的。即新建一个py文件,命名为myconfig.py,里面编写如下:

_base_ =[configs/pointpillars/hv_pointpillars_secfpn_6x8_160e_kitti-3d-3class.py]

data = dict(
	samples_per_gpu=4,
	workers_per_gpu=1,
	persistent_workers=True,
)
optimizer = dict(type='Adamw', lr=0.001, betas=(0.950.99),weight_decay=0.01)
lr_config = None
momentum_config = None
runner = dict(max_epochs=5)
checkpoint_config = dict(interval=5)
evaluation = dict(interval=5)
log_config = dict(interval=5)

load_from = 'checkpoints/hy_pointpillars_secfon_6x8_160e_kitti-3d-3class_20220301_150306-37dc2420.pth'

如果基于预训练模型进行训练,记得要下载对应的checkpoints文件(load_from部分)
其实这边也可以直接像我之前弄的mmdet2d或者mmcls教程里那样,直接修改对应的config下对应的模型文件参数(即类似我所写代码的第一行的文件)。然后直接运行,会在work-dir下面生成本次训练的完整版的config文件,想修改的话直接ctrl+c终止然后修改,之后再次运行的话,就用这个config文件即可。切记不要直接在原config文件下进行修改,不然以后再次用到的时候容易出问题。另外,如果使用自己的数据集,我建议是直接将其整理成kitti或者其他常用的数据集格式,这样就免得去修改datasets部分的设置了,不然还挺麻烦感觉。

训练:

比较简单,直接在terminal里面输入这个即可,workdir什么的想改可以加进去,反正除了config其他非必要

python ./tools/train.py myconfig.py

测试:

python ./tools/test.py myconfig.py ./work_dirs/myconfig/latest.pth --show --show-dir

这时候是对training下的val部分进行测试及可视化,即对training_val的可视化
也可以使用mmdet3d自带的可视化工具来实现:
可视化工具:

 python ./tools/misc/browse_dataset.py myconfig.py --task det --output-dir tmp --online

如果使用mmdet3d的可视化工具,则是对training下的train部分,即training_train部分的可视化,因此需要将自己的config文件里的training部分改为和val一样的

_base_ =[configs/pointpillars/hv_pointpillars_secfpn_6x8_160e_kitti-3d-3class.py]

data = dict(
	samples_per_gpu=4,
	workers_per_gpu=1,
	persistent_workers=True,
	##################################################################################
	# 添加该行
	train=dict(dataset=dict(ann file='data/kitti/kitti_infos_val.pkl'))
	##################################################################################
)
optimizer = dict(type='Adamw', lr=0.001, betas=(0.950.99),weight_decay=0.01)
lr_config = None
momentum_config = None
runner = dict(max_epochs=5)
checkpoint_config = dict(interval=5)
evaluation = dict(interval=5)
log_config = dict(interval=5)

load_from = 'checkpoints/hy_pointpillars_secfon_6x8_160e_kitti-3d-3class_20220301_150306-37dc2420.pth'

具体结果的话,忘记拍照了…将就着看吧,如果有不懂的地方可以直接评论问,这样大家也都能看见。也欢迎大佬批评指正!

猜你喜欢

转载自blog.csdn.net/onepunch_k/article/details/129322518
今日推荐