3D目标检测实战 | 图解KITTI数据集与数据格式
KITTI 数据集摘要
KITTI 数据集是一个广泛应用在自动驾驶和计算机视觉领域的公开数据集。它由德国卡尔斯鲁厄理工学院和丰田美国技术研究院共同创建并提供支持。该数据集旨在支持3D目标检测任务的研究与开发,并广泛用于评估自动驾驶算法的表现。
传感器坐标系
KITTI 数据集中使用了多种传感器设备,包括灰度相机、彩色相机、激光雷达以及惯性导航系统(INS)。这些传感器的数据通过特定的坐标系进行转换与整合:
摄像头位置高度约为1.4米
激光雷达距离地面约120米
惯性导航系统(INS)位于车体上方约0.5米高处
数据集下载与组织
用户可以通过以下路径下载KITTI数据集:
.kit.tgz ├── train │ ├── calib/ │ ├── image_2/ │ │ └── *.png │ ├── label_2/ │ ├── planes/ │ └── velodyne/ ├── test └── val
其中train目录用于训练模型,“val”用于验证模型,“test”则用于测试模型性能。
数据内容说明
calib:存储各传感器校正参数(内参矩阵、旋转平移矩阵等),用于不同坐标系间的转换。
image_2:左侧彩色相机捕捉的真实世界图像。
velodyne:激光雷达生成的三维点云数据。
label_2:标注文件,记录物体类别及其三维尺寸等信息。
planes(可选):生成的道路平面方程系数矩阵。
该数据集中共有14999张图像、7481组点云以及对应的标注信息。其中包括9种物体类别(Car, Van, Truck等),每张图像对应一个点云,并附有详细的三维边界框参数及置信度评分。
通过该数据集的学习与训练,在3D目标检测方面取得了显著的研究进展,并成为相关领域的重要基准之一。
目录
- 1 数据集概述
- 2 传感器坐标参考系
- 3 数据集获取与整理流程
- 4 数据内容解析说明
-
- 4.1 标定文件calib
- 4.2 视觉图像文件image
- 4.3 三维点云 velodyne
- 4.4 标注信息 label
- 4.5 地面平面信息 plane
- 4.1 标定文件calib
1 数据集简介
KITTI数据集 是一个 被广泛应用 在自动驾驶技术和计算机视觉应用领域的 公开数据集 。 该 数据集 由 德国卡尔斯鲁厄理工学院 和 丰田美国技术研究院 共同 创建 ,旨在 提供 富于挑战性的 场景 和 多种类型的 传感器数据 , 包括 立体摄像头 、 激光雷达 和 GPS/IMU 定位 。 这种 数据集 的主要作用 是为了 进行 相关 技术 的评估
- 立体视觉(stereo vision)
- 光学流(optical flow)
- 视觉定位(visual odometry)
- 三维物体检测(object detection in 3D)
- 目标跟踪(target tracking)
- …
评估计算机视觉技术在车载环境下运行效率的表现形式
3D目标检测主要致力于通过传感器数据精确地定位并识别三维空间中的物体 。KITTI数据集包含了针对3D目标检测任务的大量图像和点云数据。其中7481组图像用于训练模型,而7518组则用于验证和测试。对场景中的汽车、行人、自行车三种物体进行了详细标注,并总计标记了80256个对象。
KITTI数据集的广泛应用促进了3D目标检测技术的进步,在自动驾驶技术的进步中发挥了重要作用。此外,该数据集已成为研究人员交流与评估算法性能的标准基准,在促进该领域研究的深入与创新方面发挥了积极作用。
2 传感器坐标系
该系统采用KITTI数据集作为其核心数据来源,并通过集成多种传感器进行实时采集与处理。该示意图呈现了各传感器间的变换关系及其与车体位置信息的具体关联。

其中的传感器配置为
该系统配备了两个具有14百万像素分辨率的Point Gray Flea 2灰度相机与两个同样规格的彩色相机。其中主站采用高精度Velodyne激光雷达配置(标称分辨率为每秒约一百三十万个点),具备广域水平视场(360°)和较小垂直视场(仅约26.8°),可稳定检测至约120米远的目标物。此外系统还集成Edmund品牌的四块光学镜片组件(总水平视野达97度),确保较大的工作空间与良好的成像效果。最后搭载OXTS RT 3003系列惯性导航系统(支持GPS/IMU组合),提供高精度定位追踪能力。
核心传感器的坐标系定义具体说明如下,在对车辆信息进行采集和处理时,按照所设定的空间坐标系进行数据转换。

3 数据集下载与组织
主要下载资源如下

下载完成主要的数据集后,可以按训练集和测试集组织为如下格式
.data
└── kitti
├── test
│ ├── calib
│ ├── image_2
│ └── velodyne
└── train
├── calib
├── image_2
├── label_2
├── planes
└── velodyne
AI助手
4 数据内容说明
4.1 矫正文件calib
calib记录了相机、雷达以及惯导系统中的校正参数和坐标转换参数,并参考了位于'data/training/train/calib/000000.txt'目录下的相关数据
P0: 7.215377000000e+02 0.000000000000e+00 6.095593000000e+02 0.000000000000e+00 0.000000000000e+00 7.215377000000e+02 1.728540000000e+02 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 1.000000000000e+00 0.000000000000e+00
P1: 7.215377000000e+02 0.000000000000e+00 6.095593000000e+02 -3.875744000000e+02 0.000000000000e+00 7.215377000000e+02 1.728540000000e+02 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 1.000000000000e+00 0.000000000000e+00
P2: 7.215377000000e+02 0.000000000000e+00 6.095593000000e+02 4.485728000000e+01 0.000000000000e+00 7.215377000000e+02 1.728540000000e+02 2.163791000000e-01 0.000000000000e+00 0.000000000000e+00 1.000000000000e+00 2.745884000000e-03
P3: 7.215377000000e+02 0.000000000000e+00 6.095593000000e+02 -3.395242000000e+02 0.000000000000e+00 7.215377000000e+02 1.728540000000e+02 2.199936000000e+00 0.000000000000e+00 0.000000000000e+00 1.000000000000e+00 2.729905000000e-03
R0_rect: 9.999239000000e-01 9.837760000000e-03 -7.445048000000e-03 -9.869795000000e-03 9.999421000000e-01 -4.278459000000e-03 7.402527000000e-03 4.351614000000e-03 9.999631000000e-01
Tr_velo_to_cam: 7.533745000000e-03 -9.999714000000e-01 -6.166020000000e-04 -4.069766000000e-03 1.480249000000e-02 7.280733000000e-04 -9.998902000000e-01 -7.631618000000e-02 9.998621000000e-01 7.523790000000e-03 1.480755000000e-02 -2.717806000000e-01
Tr_imu_to_velo: 9.999976000000e-01 7.553071000000e-04 -2.035826000000e-03 -8.086759000000e-01 -7.854027000000e-04 9.998898000000e-01 -1.482298000000e-02 3.195559000000e-01 2.024406000000e-03 1.482454000000e-02 9.998881000000e-01 -7.997231000000e-01
AI助手
其中数据的含义是:
在相机内参矩阵\mathbb{R} ^{3\times 4}范围内(即从符号P_0至P_4)中定义了一系列投影矩阵\left{ P_i \right}$(i=1,2,3,4)。每个投影矩阵的具体形式如下:
P_i=\begin{bmatrix} f_{u}^{i} & 0 & c_{u}^{i} & -f_{u}^{i}b_i \\ 0 & f_{v}^{i} & c_{v}^{i} & 0 \\ 0 & 0 & 1 & 0 \end{bmatrix}
其中,
- 参数$c_u, c_v用于中心校正过程——将光轴与归一化成像面的交点(即成像面中心点)映射到像素平面中心;
- 参数$f_u, f_v负责归一化处理——将矩形传感器阵列映射为正方形;
- 参数b_i表示第i个相机在$x轴方向相对于0号相机的位置偏移量。
各符号含义如下:
| 序号 | 相机 |
|---|---|
| 0 | 左边灰度相机 |
| 1 | 右边灰度相机 |
| 2 | 左边彩色相机 |
| 3 | 右边彩色相机 |
R^{rect}_0:具有三维空间矩陣特性的立体矫正矩阵\mathbb{R} ^{3\times 3},在计算过程中附加一个全零向量至第四行和第四列以扩展为4x4矩阵.R^{rect}_0用于实现相机图像平面化,请参考计算机视觉教程6-1:图解双目视觉系统与立体校正原理详细了解相关内容

- Tr_{\mathrm{{lidar\_to\_cam}}}:激光雷达至第零号相机的旋转-平移矩阵属于\mathbb{{R}}^{3\times 4}类型,在实际计算过程中,则需补充附加行向量[0,\ 0,\ 0,\ 1]以使其成为齐次坐标系下的\mathbb{{R}}^{4 \times 4}矩阵。
- Tr_{\mathrm{{imu\_to\_lidar}}}:由惯性导航系统或GPS装置至雷达设备的旋转-平移变换关系同样遵循上述处理方法。
通过所提及的矩阵体系可实现各坐标系统间的相互转换;即可完成雷达坐标系中的点x映射至左侧彩色相机的任务。
y=P_2\cdot R^{rect}_0 \cdot Tr_{\mathrm{velo\_to\_cam}} \cdot x
即为将变量x从当前状态切换至第零号摄像头进行处理;随后对第零号摄像头实施立体校正过程;最后将其映射至第二个摄像头,并确定其为左部彩色摄像头。
4.2 图像文件image
image是以8位PNG格式存储的图像文件,以train/image_2/000000.png为例

4.3 点云文件velodyne
velodyne 是一种以浮点二进制格式存储的激光雷达点云文件。每个文件行均包含8个浮点数值(即8个十进制数字),这些数值分别由四位十六进制数字编码,并通过空格分隔开。值得注意的是,在此系统中,“ velodyne”通常指代一种特定类型的激光雷达系统。“ point cloud data”则指的是完整记录的一组三维空间信息。“ point cloud data set”则包含了多个独立采集的时间片段或空间位置的数据记录。“ x, y, z, r”分别代表了三维坐标轴和回波强度测量值(其中x, y, z轴为三维空间坐标参数,“ r”则代表光线反射强度)。例如,在训练目录下的一份文件中可以看到 train/velodyne/000012.bin 的具体示例
8D97 9241 39B4 483D | 5839 543F 0000 0000
83C0 9241 8716 D93D | 5839 543F 0000 0000
2D32 4D42 AE47 013F | FED4 F83F 0000 0000
3789 9241 D34D 623E | 5839 543F 0000 0000
E5D0 9241 1283 803E | E17A 543F EC51 B83D
...
AI助手
4.4 标签文件label
label是标签文件,以train/label_2/000000.txt为例
Pedestrian 0.00 0 -0.20 712.40 143.00 810.73 307.92 1.89 0.48 1.20 1.84 1.47 8.41 0.01
AI助手
训练数据共15列,每列的含义如下
- 第1列 字符串:表示物体类别(包括Car、Van、Truck、Pedestrian、Person_sitting、Cyclist、Tram、Misc和DontCare)。其中DontCare表示未被标注区域(例如目标物体距离激光雷达过远)。在评估系统中(主要为计算精确度precision),系统会自动忽略DontCare区域的预测结果以避免误判。
- 第2列 浮点数:指示物体是否被截断(truncated),取值范围为0至1之间的实数,默认情况下取值为0表明未被截断;数值越接近1表示偏离图像边界的程度越高。
- 第3列 整数:记录物体遮挡情况(occluded),采用离散值进行编码,默认情况下取值为0表明未发生遮挡现象;数值越大则意味着发生遮挡现象的可能性越大。
- 第4列 弧度:记录物体观察角度α(alpha),其取值范围限定在[-\pi, \pi]区间内,默认情况下取值为0表明正对相机中心;该角度是以弧度单位衡量的物理量。

- 第5~8列 浮点数:二维边界框尺寸(bbox),由xmin, ymin, xmax, ymax四个数值组成(单位:像素),分别代表左上角与右下角的位置坐标
- 第9~11列 浮点数:三维物体尺寸(dimensions),包含高度值, 宽度值与长度值(单位:米)
- 第12-14列 浮点数:三维物体位置信息(location),由x,y,z三个变量表示(单位:米)。特别注意的是,在此定义中x,y,z分别代表了相机坐标系中该三维物体重心坐标的各个维度
- 第15列 弧度:整体朝向角度(rotation_y)参数,在取值范围为[-π, π]之间。它表示在相机坐标系中该三维物体现在朝向的角度情况
- 第16列 浮点数:检测置信度(score),此指标仅用于测试集中的数据集
4.5 平面文件plane
planes是由深度语义分割网络(AVOD)生成的道路平面数据信息,在模型训练过程中被设计为一个可选组件用于提升模型性能能力,并用于限制物体在道路上行驶或定位等场景中的表现。例如,在训练数据集中的train/planes/000000.txt文件中可以看到这一具体实现方式
# Matrix
WIDTH 4
HEIGHT 1
-7.051729e-03 -9.997791e-01 -1.980151e-02 1.680367e+00
AI助手
四个系数代表了平面方程系数A、B、C、D,即
Ax+By+Cz+D=0
🔥 更多精彩专栏 :
《ROS入门级到专业级教程》
👇源码获取 · 技术交流 · 抱团学习 · 咨询分享 请联系👇
