3D目标检测——使用OpenPCDet训练kitti数据集

以下内容,均在linux系统上进行。

下载OpenPCDet-master项目

配好环境之后,首先使用python setup.py develop 调用编译代码进行编译

训练

1.按照pcdet规定的格式放好kitti数据集

OpenPCDet
├── data
│   ├── kitti
│   │   │── ImageSets
│   │   │── training
│   │   │   ├──calib & velodyne & label_2 & image_2 & (optional: planes)
│   │   │── testing
│   │   │   ├──calib & velodyne & image_2
├── pcdet
├── tools
 

注:括号中的是可选数据,也就是说放不放都可以。optional: planes是点云的平面信息

1.1也就是说在项目中,找到data下的kitti文件夹,最开始里面只有一个imageSets,里面的数据是train,test,val三组数据的编号。

你会发现这些编号对应了完整的kitti数据集。当然,如果想只用一部分的kitti数据集训练,就把这里面的编号改成与数据对应的编号。

1.2至于training和testing文件夹,我们要自己创建

│   │   │── training
│   │   │   ├──calib & velodyne & label_2 & image_2 & (optional: planes)
│   │   │── testing
│   │   │   ├──calib & velodyne & image_2

由于规定的格式和kitti数据集数据存放的格式有些区别,我们不能把整个kitti数据集直接放进来,而是要自己在training下新建calib 、 velodyne 、 label_2 、 image_2,在testing下新建calib 、 velodyne 、 image_2这几个文件夹,然后在kitti数据集中找到对应的数据放进去。

1.3推荐使用软连接

软连接是一种连接文件夹的方式,让我们可以在任意地方引用其他文件夹中的文件,而无需将它复制或移动过去,类似于快捷方式。

用法:

ln -s /path/to/target /path/to/link

第一个路径是源文件所在路径,第二个路径是目标路径,即发起连接的路径        注意空格

坑1:注意,软连接是对文件夹发起的,连接后会在制定的目录下生成与源文件夹同名的文件夹,就像快捷方式一样,可以改名。所以我们需要在training和testing下把文件夹连接过来,然后改名成calib 、 velodyne...

坑2:文件夹名字不能有空格

2.生成数据集文件

2.1在pcdet中,进行训练之前需要生成数据集文件,包括数据对应的pkl文件,以及一个get_database文件夹,如下

需要在项目路径下运行这一行命令:

python -m pcdet.datasets.kitti.kitti_dataset create_kitti_infos tools/cfgs/dataset_configs/kitti_dataset.yaml

命令调用了kitti_dataset程序中的create_kitti_infos函数,传参tools/cfgs/dataset_configs/kitti_dataset.yaml

如果没有改代码,数据集的名字也是kitti,直接执行是没有问题的。

2.2需要注意的点

如果数据集的名字不是kitti,而是别的

就需要在pcdet/datasets/kitti.kitti_dataset中修改代码

修改主函数中的data_path和save_path,改成自己命名的数据集的名字

这应对的是有多组kitti的数据需要训练的情况

因为全部的kitti数据是很大的,有时要只用其中的一部分训练,而kitti_dataset的代码中规定了输入数据的文件夹为data/kitti,可是只能有一个名叫kitti的文件夹,如果直接改数据集的名字的话,编译器会重新检索索引,非常耗时,所以就需要改代码里的数据集路径。

3.调用train.py进行训练

在生成了数据集信息之后,就可以进行训练了。

进入到项目的tools路径下

单GPU训练:

CUDA_VISIBLE_DEVICES=0 python train.py --cfg_file cfgs/kitti_models/pv_rcnn.yaml 

CPU训练(未测试):

python train.py --cfg_file=cfgs/kitti_models/pointpillar.yaml 

训练完之后,项目目录下会生成一个叫output的文件夹,里面存放这次训练的结果和数据。

但这里有个坑,第二次训练时,如果存在output文件夹,就无法开训练,显示Wait 30 seconds for next check (progress: 2.0 / 0 minutes): /home/user/myProject/OpenPCDet-master/output/kitti_models/pv_rcnn/default/ckpt 

这时需要把output文件夹改名,或是去改写训练代码。

  • 25
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值