基于Kitti数据集实现MMDetection3D点云物体检测训练

贵在坚持!

-----------------------------------------------------------------------------------------------

MMDetection3D环境安装可以参考之前的博文:Ubuntu 系统 cuda12.2 安装 MMDetection3D-CSDN博客

1、系统配置

Ubuntu 系统 
cuda12.2 

2、数据集准备

KITTI数据集由德国卡尔斯鲁厄理工学院和丰田美国技术研究院联合创办,是目前国际上最大的自动驾驶场景下的计算机视觉算法评测数据集。 因为完整的数据集太大,为了更好的点云检测训练流程,将原数据集抽取部分。用于模型训练调试。

数据下载地址:mini-KITTI无人驾驶数据集资源-CSDN文库

解压后,数据集路径为(注意:velodyne_reduced 文件夹是执行训练数据集脚本后生成的。):

3、训练数据集制作

运行指令:

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

输出log如下:

Generate info. this may take several minutes.
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] 57/57, 20.0 task/s, elapsed: 3s, ETA:     0s
Kitti info train file is saved to data/kitti/kitti_infos_train.pkl
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] 43/43, 139.9 task/s, elapsed: 0s, ETA:     0s
Kitti info val file is saved to data/kitti/kitti_infos_val.pkl
Kitti info trainval file is saved to data/kitti/kitti_infos_trainval.pkl
Kitti info test file is saved to data/kitti/kitti_infos_test.pkl
create reduced point cloud for training set
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] 57/57, 221.1 task/s, elapsed: 0s, ETA:     0s
create reduced point cloud for validation set
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] 43/43, 221.5 task/s, elapsed: 0s, ETA:     0s
create reduced point cloud for testing set
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] 100/100, 220.3 task/s, elapsed: 0s, ETA:     0s
./data/kitti/kitti_infos_train.pkl will be modified.
Warning, you may overwriting the original data ./data/kitti/kitti_infos_train.pkl.
Reading from input file: ./data/kitti/kitti_infos_train.pkl.
Start updating:
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] 57/57, 94.6 task/s, elapsed: 1s, ETA:     0ss
Writing to output file: ./data/kitti/kitti_infos_train.pkl.
ignore classes: {'DontCare'}
./data/kitti/kitti_infos_val.pkl will be modified.
Warning, you may overwriting the original data ./data/kitti/kitti_infos_val.pkl.
Reading from input file: ./data/kitti/kitti_infos_val.pkl.
Start updating:
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] 43/43, 104.0 task/s, elapsed: 0s, ETA:     0s
Writing to output file: ./data/kitti/kitti_infos_val.pkl.
ignore classes: {'DontCare'}
./data/kitti/kitti_infos_trainval.pkl will be modified.
Warning, you may overwriting the original data ./data/kitti/kitti_infos_trainval.pkl.
Reading from input file: ./data/kitti/kitti_infos_trainval.pkl.
Start updating:
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] 100/100, 98.9 task/s, elapsed: 1s, ETA:     0s
Writing to output file: ./data/kitti/kitti_infos_trainval.pkl.
ignore classes: {'DontCare'}
./data/kitti/kitti_infos_test.pkl will be modified.
Warning, you may overwriting the original data ./data/kitti/kitti_infos_test.pkl.
Reading from input file: ./data/kitti/kitti_infos_test.pkl.
Start updating:
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] 100/100, 4638.5 task/s, elapsed: 0s, ETA:     0s
Writing to output file: ./data/kitti/kitti_infos_test.pkl.
ignore classes: set()
Create GT Database of KittiDataset
02/17 13:39:02 - mmengine - INFO - ------------------------------
02/17 13:39:02 - mmengine - INFO - The length of training dataset: 57
02/17 13:39:02 - mmengine - INFO - The number of instances per category in the dataset:
+----------------+--------+
| category       | number |
+----------------+--------+
| Pedestrian     | 24     |
| Cyclist        | 9      |
| Car            | 188    |
| Van            | 19     |
| Truck          | 8      |
| Person_sitting | 0      |
| Tram           | 6      |
| Misc           | 2      |
+----------------+--------+
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] 57/57, 57.9 task/s, elapsed: 1s, ETA:     0s
load 24 Pedestrian database infos
load 188 Car database infos
load 9 Cyclist database infos
load 19 Van database infos
load 8 Truck database infos
load 6 Tram database infos
load 2 Misc database infos

4、训练

1)修改配置文件 configs/pointpillars/pointpillars_hv_secfpn_8xb6-160e_kitti-3d-3class.py
因为数据集没有加入地平面信息,所以将 use_ground_plane=False,如下图。

2)执行训练脚本如下:

python tools/train.py configs/pointpillars/pointpillars_hv_secfpn_8xb6-160e_kitti-3d-3class.py

可能异常报错如下:

aise AttributeError("module {!r} has no attribute "
AttributeError: module 'numpy' has no attribute 'long'

修改方法:进入对应的报错脚本进行如下修改:

将 numpy.long 改为 numpy.int64
或
将 np.long 改为 np.int64

接着运行训练脚本。

成功运行如下图:

助力快速掌握数据集的信息和使用方式。

数据可以如此美好!