目录
1.前言
2. 数据集简介
2.1采集区域
2.2采集平台
3. 激光雷达数据位置
4. 激光雷达数据标签含义
5. 数据预处理与训练
5.1配置openpcdet
5.2数据预处理
5.2.1数据集目录整理
5.2.2数据集格式转化
5.3训练
1.前言
做激光雷达感知相关工作离不开数据集,激光雷达数据标注价格较高,可选的开源数据集不多,由于牵涉传感器众多,理清楚KITTI数据集的脉络有助于对该数据集的使用。本文整合该数据集的资料,包括标注含义、训练案例等,持续更新。
2. 数据集简介
KITTI数据集是由德国卡尔斯鲁厄理工学院和丰田美国技术研究院联合创办,利用组装的设备齐全的采集车辆对实际交通场景进行数据采集获得的公开数据集。该数据集包含丰富多样的传感器数据(有双目相机、64线激光雷达、GPS/IMU组合导航定位系统,基本满足对图像、点云和定位数据的需求)、大量的标定真值(包括检测2D和3D包围框、跟踪轨迹tracklet)和官方提供的一些开发工具等。
2.1采集区域
数据采集自德国卡尔斯鲁厄,采集范围示意图如下:
2.2采集平台
采集平台示意图如下:
从图中可以看出gps/imu以及激光雷达都以相机坐标系为基准,所以不难理解后面的标注文件中目标的XYZ为什么说是以相机坐标系为基准。
3. 激光雷达数据位置
数据存放在training和testing目录下的velodyne文件夹下(bin格式),标注文件存放在training和testing目录下的label_2文件夹下。calib文件下存放的是标定文件,因为激光雷达和相机等其他传感器的数据存在坐标转换关系。其他文件夹存放的数据可以不使用(如果仅仅使用激光雷达数据的话)。
小贴士:如果训练自己的kitti格式数据集的话,有时候点云数据以pcd格式存储,pcd转bin文件代码参考之前的博文
(131条消息) pcd格式点云转bin格式点云_NukaCC的博客-CSDN博客https://blog.csdn.net/weixin_52514564/article/details/129208482
4. 激光雷达数据标签含义
标签文件在 数据集目录/traing/label_2 文件夹下,以txt格式存储标注信息,打开第一个标注文件,内容如下所示。
第1列(字符串):代表物体类别(type)总共有9类,分别是:Car、Van、Truck、Pedestrian、Person_sitting、Cyclist、Tram、Misc、DontCare。其中DontCare标签表示该区域没有被标注,比如由于目标物体距离激光雷达太远。为了防止在评估过程中(主要是计算precision),将本来是目标物体但是因为某些原因而没有标注的区域统计为假阳性(false positives),评估脚本会自动忽略DontCare区域的预测结果。
第2列(浮点数):代表物体是否被截断(truncated),数值在0(非截断)到1(截断)之间浮动,数字表示指离开图像边界对象的程度。
第3列(整数):代表物体是否被遮挡(occluded),整数0、1、2、3分别表示被遮挡的程度。
第4列(弧度数):物体的观察角度(alpha)取值范围为:-pi ~ pi(单位:rad),它表示在相机坐标系下,以相机原点为中心,相机原点到物体中心的连线为半径,将物体绕相机y轴旋转至相机z轴,此时物体方向与相机x轴的夹角,如图所示。
第5~8列(浮点数):物体的2D边界框大小(bbox)四个数分别是xmin、ymin、xmax、ymax(单位:pixel),表示2维边界框的左上角和右下角的坐标。
第9~11列(浮点数):3D物体的尺寸(dimensions)分别是高、宽、长(单位:米)。
第12-14列(整数):3D物体的位置(location)分别是x、y、z(单位:米),特别注意的是,这里的xyz是在相机坐标系下3D物体的中心点位置。
第15列(弧度数):3D物体的空间方向(rotation_y)取值范围为:-pi ~ pi(单位:rad),它表示,在照相机坐标系下,物体的全局方向角(物体前进方向与相机坐标系x轴的夹角),如上图所示。
第16列(整数):检测的置信度(score),第一次看时,发现数据只有15列,训练集里没有该数字,应该只有测试集有,毕竟标注时候置信度也没法人为判断。
5. 数据预处理与训练
5.1配置openpcdet
本文使用openpcdet框架作为案例,这是一个开源库,整合了很多3d检测算法。
#下载openpcdet库
git clone https://github.com/open-mmlab/OpenPCDet.git
#安装环境
python setup.py develop
5.2数据预处理
5.2.1数据集目录整理
按照如下格式进行数据集整理。
OpenPCDet
├── data
│ ├── kitti
│ │ │── ImageSets
│ │ │── training
│ │ │ ├──calib & velodyne & label_2 & image_2 & (optional: planes) & (optional: depth_2)
│ │ │── testing
│ │ │ ├──calib & velodyne & image_2
├── pcdet
├── tools
5.2.2数据集格式转化
数据集不能直接用,openpcdet要求先将数据转化到固定的格式,所以先执行如下指令。文章来源:https://www.toymoban.com/news/detail-490805.html
python -m pcdet.datasets.kitti.kitti_dataset create_kitti_infos tools/cfgs/dataset_configs/kitti_dataset.yaml
5.3训练
首先在openpcdet文件夹中挑选你想要的模型。文章来源地址https://www.toymoban.com/news/detail-490805.html
#执行训练,后面的xxx.yaml为模型的配置文件
python train.py --cfg_file cfgs/kitti_models/xxx.yaml
到了这里,关于使用KITTI数据集的激光雷达数据(数据预处理+数据集制作+训练)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!