摘要
KITTI Odometry Benchmark 是视觉里程计和 SLAM 领域最权威的户外驾驶场景基准测试,由 Geiger 等人于 2012 年 CVPR 提出。本文从数据集结构(22 条序列、39.2 km、41k 帧)、传感器配置(双目灰度/彩色相机 + Velodyne HDL-64E + OXTS RT 3003 GPS/IMU)、标定流程、评估指标的数学定义(平移误差E trans E_{\text{trans}}Etrans和旋转误差E rot E_{\text{rot}}Erot在 100-800m 子序列上的统计)、以及当前排行榜 TOP 方法(SOFT2 0.53%、V-LOAM 0.54%、LOAM 0.55%)进行完整拆解,帮助研究者正确理解和使用这一基准。
论文:Are we ready for Autonomous Driving? The KITTI Vision Benchmark Suite (CVPR 2012)
代码:KITTI Odometry Benchmark
一、为什么需要 KITTI Odometry Benchmark?
2012 年之前,视觉里程计/SLAM 的评估存在几个核心问题:
| 问题 | 现有数据集的状况 |
|---|---|
| 规模太小 | TUM RGB-D 仅 0.4 km 室内,New College 仅 2.2 km 单序列 |
| 缺乏度量指标 | 多数工作仅给出定性轨迹对比,无统一量化标准 |
| 传感器单一 | 多为单目或仅 RGB-D,无法对比不同模态的方法 |
| 场景受限 | 室内为主,不反映自动驾驶的真实复杂度 |
KITTI 的核心贡献:22 条户外序列、39.2 km 总里程、多传感器(双目 + LiDAR + GPS/IMU)、统一评估指标、在线排行榜。至今仍是 SLAM 领域最广泛使用的户外基准之一。
二、传感器配置与标定
2.1 硬件平台
采集车为改装的 Volkswagen Passat B6,搭载 8 核 i7 工控机 + RAID 存储,运行 Ubuntu Linux。
| 传感器 | 型号 | 关键参数 |
|---|---|---|
| 灰度相机 x2 | PointGrey Flea2 (FL2-14S3M-C) | 1392x512, 10 Hz, 90x35 deg FOV |
| 彩色相机 x2 | PointGrey Flea2 (FL2-14S3C-C) | 1392x512, 10 Hz |
| LiDAR | Velodyne HDL-64E | 64 线, 10 Hz, 100m, >100k 点/帧 |
| GPS/IMU | OXTS RT 3003 | RTK, 开阔地精度 < 5 cm |
| 镜头 | Edmund Optics 变焦 | 4-8 mm, 快门 < 2 ms |
关键安装参数:
- 双目基线:54 cm(同类型相机之间)
- 灰度-彩色间距:6 cm(最小化色彩差异影响)
- 相机均安装在车顶支架上,一组在左侧,一组在右侧
图 1:KITTI 采集车传感器安装俯视图 – 四台相机、Velodyne 激光雷达和 GPS/IMU 的空间布局。重点关注 54 cm 的双目基线配置。来源:KITTI 官网,仅供学习
2.2 三级标定流程
图 2:KITTI 三级标定流程与坐标系关系 – Camera-to-Camera(全自动棋盘格)、Velodyne-to-Camera(半自动对应点)、GPS/IMU-to-Velodyne(全自动手眼标定)。重绘自 design skill
Camera-to-Camera(全自动):车库墙壁贴棋盘格,基于梯度信息检测角点,通过最小化重投影误差联合优化内参和外参。
Velodyne-to-Camera(半自动):由于点云与图像的反射率差异大,自动方法精度不足。先用自动方法粗配准,再手动选取少量边缘对应点(点云和图像中均可识别的边),通过 Metropolis-Hastings 采样优化。
GPS/IMU-to-Velodyne(全自动):等价于经典的手眼标定(hand-eye calibration)问题。使用停车场序列中的 ICP 配准获取激光雷达帧间变换,与 GPS/IMU 的运动估计联合求解外参。随机采样 1000 对位姿。
2.3 坐标系定义
| 坐标系 | X 轴 | Y 轴 | Z 轴 | 用途 |
|---|---|---|---|---|
| 相机坐标系 | 右 | 下 | 前 | 里程计评估的基准坐标系 |
| Velodyne 坐标系 | 前 | 左 | 上 | 点云原始坐标 |
| GPS/IMU 坐标系 | 前 | 左 | 上 | 位姿真值来源 |
真值轨迹通过 GPS/IMU 获取后,投影到左侧灰度相机坐标系下进行评估。
三、数据集结构
3.1 序列划分
22 条序列分为训练集和测试集:
| 序列 | 数量 | 真值 | 用途 |
|---|---|---|---|
| 00-10 | 11 条 | 公开 | 开发调参 |
| 11-21 | 11 条 | 保密 | 在线提交评估 |
总体统计:39.2 km 行驶距离,约 41,000 帧,10 fps 采集频率,包含频繁的回环场景。
3.2 数据格式
| 数据类型 | 格式 | 大小 |
|---|---|---|
| 灰度图像 | 无损 PNG, 1241x376 | 22 GB |
| 彩色图像 | 无损 PNG | 65 GB |
| Velodyne 点云 | 二进制 | 80 GB |
3.3 真值格式
每帧一行,12 个浮点数,表示3 × 4 3 \times 43×4变换矩阵[ R ∣ t ] [\mathbf{R} | \mathbf{t}][R∣t]的前三行(按行展开):
r11 r12 r13 tx r21 r22 r23 ty r31 r32 r33 tz对应4 × 4 4 \times 44×4齐次变换矩阵T w ← c ∈ S E ( 3 ) \mathbf{T}_{w \leftarrow c} \in SE(3)Tw←c∈SE(3),将相机坐标系下的点变换到世界坐标系。
四、评估指标(核心)
4.1 为什么不用端点误差?
传统的绝对轨迹端点误差(ATE)有严重缺陷:序列前期的旋转误差会在后期被放大为巨大的平移端点误差,使得误差度量高度依赖于轨迹长度和误差发生位置,不同方法难以公平比较。
KITTI 采用 Kummerle 等人提出的相对位姿误差方法,并做了两个关键改进:
- 平移和旋转误差分开统计,不合并为单一指标
- 在不同轨迹长度和车速下分别评估,揭示方法的失败模式
4.2 误差定义
设p ^ ∈ S E ( 3 ) \hat{\mathbf{p}} \in SE(3)p^∈SE(3)为估计位姿,p ∈ S E ( 3 ) \mathbf{p} \in SE(3)p∈SE(3)为真值位姿,⊖ \ominus⊖为逆复合算子,∠ [ ⋅ ] \angle[\cdot]∠[⋅]为旋转角提取。
旋转误差(deg/m):
E rot ( F ) = 1 ∣ F ∣ ∑ ( i , j ) ∈ F ∠ [ ( p ^ j ⊖ p ^ i ) ⊖ ( p j ⊖ p i ) ] E_{\text{rot}}(\mathcal{F}) = \frac{1}{|\mathcal{F}|} \sum_{(i,j) \in \mathcal{F}} \angle\!\left[(\hat{\mathbf{p}}_j \ominus \hat{\mathbf{p}}_i) \ominus (\mathbf{p}_j \ominus \mathbf{p}_i)\right]Erot(F)=∣F∣1(i,j)∈F∑∠[(p^j⊖p^i)⊖(pj⊖pi)]
平移误差(%):
E trans ( F ) = 1 ∣ F ∣ ∑ ( i , j ) ∈ F ∥ ( p ^ j ⊖ p ^ i ) ⊖ ( p j ⊖ p i ) ∥ 2 E_{\text{trans}}(\mathcal{F}) = \frac{1}{|\mathcal{F}|} \sum_{(i,j) \in \mathcal{F}} \left\|(\hat{\mathbf{p}}_j \ominus \hat{\mathbf{p}}_i) \ominus (\mathbf{p}_j \ominus \mathbf{p}_i)\right\|_2Etrans(F)=∣F∣1(i,j)∈F∑∥(p^j⊖p^i)⊖(pj⊖pi)∥2
其中F \mathcal{F}F是帧对( i , j ) (i, j)(i,j)的集合。
4.3 子序列采样策略
评估在所有可能的子序列上进行统计,子序列长度为:
L ∈ { 100 , 200 , 300 , 400 , 500 , 600 , 700 , 800 } meters L \in \{100, 200, 300, 400, 500, 600, 700, 800\} \text{ meters}L∈{100,200,300,400,500,600,700,800}meters
对每个长度L LL,从轨迹中提取所有起始帧i ii使得( i , j ) (i, j)(i,j)之间的行驶距离恰好为L LL。然后:
- 计算每个子序列的相对位姿误差
- 平移误差归一化为距离百分比(%)
- 旋转误差归一化为 deg/m
最终排名指标 =所有长度上平移误差的平均值。
4.4 为什么选择 100-800m?
这个范围覆盖了自动驾驶中最关键的尺度:
- 100m:交叉路口通过、停车场导航
- 400m:城市街区级定位
- 800m:长走廊/高速公路段
短于 100m 的子序列噪声太大(GPS 真值精度限制);长于 800m 的子序列数量太少,统计意义不足。
五、排行榜分析
5.1 TOP 方法(截至 2026 年)
| 排名 | 方法 | 平移 (%) | 旋转 (deg/m) | 传感器 | 回环 |
|---|---|---|---|---|---|
| 1 | SOFT2 | 0.53 | 0.0009 | 双目 | 否 |
| 2 | V-LOAM | 0.54 | 0.0013 | 双目+激光 | 是 |
| 3 | LOAM | 0.55 | 0.0013 | 激光 | 是 |
| 4 | TVL-SLAM+ | 0.56 | 0.0015 | 双目+激光 | 否 |
| 5 | Traj-LIO | 0.57 | 0.0015 | 激光 | 否 |
5.2 关键观察
激光雷达方法主导排行榜:TOP 5 中 4 个使用了激光雷达。纯视觉方法(SOFT2)能排第一说明在 KITTI 的特定场景下,精心设计的双目视觉里程计可以与激光方法竞争。
回环不是必要条件:TOP 5 中的 SOFT2、TVL-SLAM+、Traj-LIO 均不使用回环检测。这说明在 KITTI 的评估尺度(100-800m 子序列)下,里程计精度比回环修正更重要。
单目方法差距明显:纯单目方法通常排在中下游,主要受限于尺度漂移问题。
5.3 提交限制
自更新后,KITTI 仅接受有重大创新且将在同行评审会议/期刊发表的方法提交。小改动和学生练习不允许提交到主排行榜。
图 3:KITTI Odometry 基准测试场景示例 – 涵盖城市、住宅区、高速公路等多种驾驶环境。来源:KITTI 官网,仅供学习
六、使用实践要点
6.1 常见错误
| 常见错误 | 正确做法 |
|---|---|
| 在序列 00-10 上报告测试结果 | 00-10 是训练集,应在 11-21 上评估或明确标注为训练集结果 |
| 仅报告端点 ATE | 应报告 KITTI 官方指标(平移 % + 旋转 deg/m) |
| 手动标注回环 | 禁止手动干预,必须全自动 |
| 不同序列用不同参数 | 所有序列必须使用同一套参数 |
6.2 本地评估
KITTI 提供 C++/MATLAB 开发套件(devkit),核心评估逻辑:
- 读取预测的N × 12 N \times 12N×12位姿文件
- 对每个子序列长度L LL,遍历所有起始帧
- 计算相对位姿误差的平移和旋转分量
- 按长度和速度分组统计平均值
图 4:KITTI Odometry 评估指标计算流程 – 从位姿文件到最终排名分数的完整数据路径。重点关注子序列采样和分组平均策略。重绘自 design skill
小结
KITTI Odometry Benchmark 的设计哲学:
相对误差优于绝对误差– 通过在固定长度子序列上计算相对位姿误差,消除了误差累积的位置依赖性,使不同方法的比较更加公平。
分离平移与旋转– 不合并为单一指标,允许研究者独立分析两种误差来源。这在实践中很重要:旋转误差影响方向判断,平移误差影响距离估计。
多尺度评估– 100-800m 的子序列长度覆盖了从局部到中尺度的定位需求,同时按车速分组的统计揭示了方法在不同运动条件下的表现。
局限性:KITTI 的场景以结构化道路为主,缺乏极端天气(雨雪雾)、夜间、高动态场景。GPS/IMU 真值在隧道和高楼峡谷中精度下降。10 fps 的帧率对于高速运动场景偏低。
个人判断:尽管 KITTI 已有 14 年历史,其评估方法论(子序列相对误差 + 多尺度统计)至今仍是最合理的里程计评估框架之一。新出的数据集(如 Hilti、4Seasons、TartanAir)在场景多样性上有所超越,但在评估方法上大多沿用了 KITTI 的核心思想。理解 KITTI 的评估指标设计是正确使用任何 VIO/SLAM 基准的前提。