无人驾驶之KITTI数据集介绍与应用(一)——数据组织方式介绍

本系列博客旨在介绍无人驾驶领域中颇负盛名的KITTI公开数据集,首先整体介绍该数据集的由来、数据组织方式、官方开发工具的使用,重点详细介绍其中对于Object、Tracking和raw data的数据使用,主要分享了我在使用这些数据集时开发的一些工具,也介绍了Gihub上一些开源工具的使用,帮助大家在没有真实无人驾驶车辆时如何利用好KITTI数据集来实现和验证自己的算法。

【文章列表】
无人驾驶之KITTI数据集介绍与应用(一)——数据组织方式介绍
无人驾驶之KITTI数据集介绍与应用(二)——官方matlab代码使用与解读

KITTI数据集是由德国卡尔斯鲁厄理工学院和丰田美国技术研究院联合创办,利用组装的设备齐全的采集车辆对实际交通场景进行数据采集获得的公开数据集。该数据集包含丰富多样的传感器数据(有双目相机、64线激光雷达、GPS/IMU组合导航定位系统,基本满足对图像、点云和定位数据的需求)、大量的标定真值(包括检测2D和3D包围框、跟踪轨迹tracklet)和官方提供的一些开发工具等。

1. 采集平台介绍

此部分主要参考KITTI官网setup部分内容。

如图1所示,KITTI数据集所采用的采集车为经过改装过的大众帕萨特B6,使用8核i7计算机,运行在Ubuntu系统下进行数据录制,采集平台包含如下传感器:

  • 1个惯性导航系统(GPS/IMU):OXTS RT 3003
  • 1个激光扫描仪:Velodyne HDL-64E
  • 2个灰度相机,140万像素:Point Grey Flea 2(FL2-14S3M-C)
  • 2个彩色相机,140万像素:Point Grey Flea 2(FL2-14S3C-C)
  • 4个变焦镜头,4-8mm:Edmund Optics NT59-917
    激光雷达扫描频率为10帧/s,相机基本上和地平面保持水平,图像采集尺寸被裁减为1382x512像素,在经过校正后,图像可能会进一步变小,相机的采集频率也保持在10HZ并且在激光雷达朝向正前方时释放快门,传感器的整体布置图如图2所示。
图1 KITTI数据集采集平台
图2 传感器布置俯视图

从图1和图2中可以看到不同传感器的坐标系定义(上下左右以驾驶员为基准):
相机:x轴——向右,y轴——向下,z轴——向前;
激光雷达:x轴——向前,y轴——向左,z轴——向上;
组合导航:同激光雷达。
注: 此处坐标系的定义对后续数据的可视化和分析,以及标定矩阵的理解和使用至关重要,需要熟悉。

2. 数据组织方式

此部分主要参考KITTI官方发表的论文:
1、Are we ready for Autonomous Driving? The KITTI Vision Benchmark Suite
2、Vision meets Robotics: The KITTI Dataset
建议想对KITTI数据有深入了解或者想从宏观上了解整个无人驾驶系统的硬件构成的读者可以认真阅读一下这两篇论文。

KITTI数据集针对不同的用途,将数据集分为如下部分:stereo、flow、sceneflow、depth、odometry、object、tracking、road、semantics和raw data,不同部分的数据包含不同的人为标注的真值数据,但其实针对不同用途的数据也基本上是从raw data数据中分离出来的,为此主要介绍raw data中数据的组织方式,此外也介绍一下object和tracking数据的组织方式。

2.1 raw data组织方式

raw data数据集按照类别被分为Road、City、Residential、Campus和Person。如图3所示,对于每一个序列,都提供了传感器原始数据,相机视野范围内的目标3D包围盒tracklets文件和一个传感器标定文件,

图3 raw data数据文件组织结构图

其中"date"和"drive"是占位符,根据当时采集的日期命名,"image_0x"指的是4个相机序列。

所有数据都是同步采集的,按照激光雷达的频率(10hz)采集,所有传感器的数据序列都是以image_00作为同步参考系。
包括:

  • 原始的(没有同步和没有矫正的)和处理过的(同步和矫正过)的双目灰度图像序列(50万像素、png格式)
  • 原始的(没有同步和没有矫正的)和处理过的(同步和矫正过)的双目彩色图像序列(50万像素、png格式)
  • 3D激光雷达数据(每帧10万+个点,.bin格式float矩阵存储)
  • 标定文件(相机与相机之间、相机与GPS/IMU之间、相机与激光雷达之间,txt文本文件存储)
  • 3D目标跟踪标签(汽车、卡车、火车、行人、自行车人,xml文件)

此处的非同步和非矫正的含义是指原始的带有畸变并且没有同步的数据,而同步和矫正的图片是指经过消除畸变并经过双目矫正的图片,并且图片序列也是和其他传感器对应好的。所有的数据都提供时间戳。一般我们用的是同步和矫正的数据(synced+rectified data)。

例如我们下载2011_09_26_drive_0005这个数据序列,最终解压得到的文件夹如下图所示:在这里插入图片描述

image_00:左侧灰度相机图像序列
image_01:右侧灰度相机图像序列
image_02:左侧彩色相机图像序列
image_03:右侧彩色相机图像序列
oxts:GPS/IMU位姿相关信息序列
velodyne_points:激光雷达数据序列

2.2 object数据组织方式

object数据集主要用于验证无人驾驶中有关目标检测算法而设置的数据集,该数据集包含“2D Object Detection”、“3D Object Detection”和“Bird’s Eye View”三部分数据,分别用于验证2D图像检测框、3D图像或者激光雷达包围盒和鸟瞰图检测算法的优劣。
该部分数据可以针对你所开发检测算法的具体需求,选择下载图像或者雷达等数据,每个数据下载解压之后都包含trainingtesting两个文件夹,分别用于检测算法中作为训练数据和测试数据,其中训练数据包含有标注文件。需要注意的是对于object数据集,其数据并不是严格连续采集的数据,即都是单帧结果,只用于检测算法使用。

2.3 tracking数据组织方式

tracking数据集主要用于验证无人驾驶中有关目标跟踪算法而设置的数据集,其数据组织方式与object数据集类似,最大的区别在于tracking数据集每个数据序列是连续的。

3. 小结

本博文主要简单介绍下整个KITTI数据集的构建和文件组织方式,熟悉了不同文件的含义之后,接下来熟悉一下KITTI官方提供的有关该数据集的开发工具和程序,见下一篇博客。

写博客不易,各位看官觉得对您有所帮助,麻烦点赞转载,转载请注明博客来源,多谢!

END
下一篇:无人驾驶之KITTI数据集介绍与应用(二): 介绍使用KITTI数据集相关代码

你可能感兴趣的:(无人驾驶)