以下内容,均在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文件夹改名,或是去改写训练代码。