使用KITTI数据集的激光雷达数据(数据预处理+数据集制作+训练)

这篇具有很好参考价值的文章主要介绍了使用KITTI数据集的激光雷达数据(数据预处理+数据集制作+训练)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

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采集区域

数据采集自德国卡尔斯鲁厄,采集范围示意图如下:

使用KITTI数据集的激光雷达数据(数据预处理+数据集制作+训练)

2.2采集平台

采集平台示意图如下:

使用KITTI数据集的激光雷达数据(数据预处理+数据集制作+训练)

使用KITTI数据集的激光雷达数据(数据预处理+数据集制作+训练)

从图中可以看出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格式存储标注信息,打开第一个标注文件,内容如下所示。

使用KITTI数据集的激光雷达数据(数据预处理+数据集制作+训练)

第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轴的夹角,如图所示。

使用KITTI数据集的激光雷达数据(数据预处理+数据集制作+训练)

第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要求先将数据转化到固定的格式,所以先执行如下指令。

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模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 大数据采集技术与预处理学习一:大数据概念、数据预处理、网络数据采集

    目录 大数据概念: 1.数据采集过程中会采集哪些类型的数据? 2.非结构化数据采集的特点是什么? 3.请阐述传统的数据采集与大数据采集的区别? ​​​​​​​ ​​​​​​​4.大数据采集的数据源有哪些?针对不同的数据源,我们可以采用哪些不同的方法和工具? 数据

    2024年01月25日
    浏览(52)
  • 数据预处理之数据规约

    目录 一、前言 二、PCA的主要参数: 三、数据归约任务1 四、数据规约任务2 PCA(Principal Component Analysis),即主成分分析方法,是一种使用最广泛的数据降维算法。PCA的主要思想是将n维特征映射到k维上,这k维是全新的正交特征也被称为主成分,是在原有n维特征的基础上重新构

    2024年02月12日
    浏览(42)
  • 数据分析--数据预处理

    本文主要是个人的学习笔记总结,数据预处理的基本思路和方法,包括一些方法的使用示例和参数解释,具体的数据预处理案例case详见其他文章。如有错误之处还请指正! 目录 数据的质量评定 数据处理步骤 缺失值的处理 标记缺失值 删除 缺失值 填充 缺失值 重复值处理 异

    2024年02月04日
    浏览(55)
  • python数据预处理

    输出结果如下: 观察可知,【销量】存在一个缺失值,本例将缺失值所在行进行删除处理 输出结果如下: 输出结果如下: 观察可知,箱线图上下边缘存在异常值,本例通过四分位法对异常值进行处理,即:超出上边缘的异常值让其落在上边缘,低于下边缘的异常值让其落在

    2024年02月13日
    浏览(41)
  • 数据预处理matlab

    1.1 从Excel中获取 使用readtable() 例1: 使用 spreadsheetImportOptions(Name,Value) 初步确定导入信息, 再用 opts.Name=Value 的格式添加。 例2: 先初始化 spreadsheetImportOptions 对象, 再用 opts.Name=Value 的格式逐个添加。 例3: 将导入信息存到变量里, 再使用 spreadsheetImportOptions(Name,Value)

    2024年02月07日
    浏览(53)
  • 数据清洗和预处理

    预计更新 一、 爬虫技术概述 1.1 什么是爬虫技术 1.2 爬虫技术的应用领域 1.3 爬虫技术的工作原理 二、 网络协议和HTTP协议 2.1 网络协议概述 2.2 HTTP协议介绍 2.3 HTTP请求和响应 三、 Python基础 3.1 Python语言概述 3.2 Python的基本数据类型 3.3 Python的流程控制语句 3.4 Python的函数和模

    2024年02月07日
    浏览(51)
  • 十七、数据预处理(一)

    一、缺失值处理 缺失值就是由某些原因导致部分数据为空,对于为空的这部分数据我们一般有两种处理方式,一种是删除,即把含有缺失值的数据删除,另一种是填充,即把确实的那部分数据用某个值代替。 1、缺失值查看 对缺失值进行处理,首先要把缺失值找出来,也就是

    2024年02月11日
    浏览(47)
  • 数据挖掘(2)数据预处理

    数据预处理的重要性 杂乱性:如命名规则。 重复性:同一客观事再 不完整性: 噪声数据:数据中存在错误或异常的现象。 数据预处理的常见方法 数据清洗:去掉数据中的噪声,纠正不一致。 数据集成:将多个数据源合成一致的数据存储 数据变换(转换):对数据的格式

    2024年02月07日
    浏览(42)
  • 头歌:数据预处理之数据清洗

    本关任务:完成泰坦尼克号遇难数据的清洗。   案例背景 泰坦尼克号遭遇的灾难震惊世界,如何避免灾难甚至预测灾难呢? 要实现首先要做好泰坦尼克号的损失数据统计,才能为数据分析打下基础。 编程要求 根据提示,你需要完成: 缺失值填充 离群点检测

    2024年02月11日
    浏览(41)
  • 【数学建模】数据预处理

    数学建模是将实际问题转化为数学模型来解决的过程,而数据预处理是数学建模中非常重要的一步。以下是为什么要进行数据预处理的几个原因: 数据质量:原始数据往往存在噪声、异常值、缺失值等问题,这些问题会对建模结果产生负面影响。通过数据预处理,可以去除噪

    2024年02月09日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包