3. 动态环境数据集与评测基准

做SLAM这么多年,我踩过最大的坑之一,就是数据集选不对。你想想看,一个在TUM RGB-D静态场景里跑得飞起的算法,放到真实动态环境里,可能直接原地爆炸。所以这一章,咱们就来聊聊动态环境下的数据集和评测基准。

3.1 为什么需要专门的动态数据集?

传统的SLAM数据集,比如TUM RGB-D的静态序列,说白了就是让你在实验室里自嗨。但真实世界哪有那么干净?行人走来走去、车辆穿梭、甚至你自己拿着相机走路时胳膊的晃动,这些都是动态干扰。

我个人习惯把动态场景分成三类:

  • 轻度动态:偶尔有人走过,大部分场景静止
  • 中度动态:持续有移动物体,但背景仍占主导
  • 重度动态:几乎全是动态物体,比如拥挤的街道

我在项目中遇到过最头疼的情况,就是算法在轻度动态下表现不错,一到重度动态就崩。所以评测时,一定要覆盖这三种场景。

3.2 主流动态数据集介绍

3.2.1 TUM RGB-D Dynamic

这个数据集大家应该不陌生。它包含多个动态序列,比如有人坐在桌前、有人走来走去。每个序列都提供了地面真值轨迹,方便你做定量评估。

序列名称 动态程度 主要干扰
fr3_walking_xyz 人在相机前走动
fr3_sitting_static 人坐着轻微晃动
fr3_walking_halfsphere 半圆轨迹+动态人

嗯,这里要注意:TUM的RGB-D数据是用Kinect采集的,深度图在动态边缘处会有明显的噪声。我早期做实验时,就因为这个噪声吃了不少亏。

3.2.2 KITTI Dynamic

KITTI主要是自动驾驶场景,但它的动态元素非常丰富。车辆、行人、自行车,应有尽有。不过KITTI的ground truth是用激光雷达和GPS做的,精度比TUM差一些。

我个人建议:如果你做的是视觉里程计或者VIO,KITTI Dynamic是个不错的选择。但如果你做的是RGB-D SLAM,那还是优先考虑TUM或Bonn。

3.2.3 Bonn Dynamic

这个数据集是波恩大学出的,专门针对动态环境。它的特点是:

  • 场景更真实,比如办公室、走廊、实验室
  • 动态物体标注更精细,有语义分割mask
  • 提供了动态物体的运动轨迹

我曾经用Bonn数据集测试过一个基于语义的动态剔除算法,效果比TUM上好不少。为什么?因为Bonn的标注更准,你能精确知道哪些像素属于动态物体。

3.3 如何构建自己的动态测试集?

说实话,光靠公开数据集是不够的。每个项目的场景都不一样,你最好自己建一个测试集。我分享一下我的做法:

3.3.1 采集工具

我一般用Realsense D435或者Azure Kinect。这两个设备性价比高,深度图质量也还行。采集时注意:

  • 固定帧率,比如30fps
  • 同时录制RGB和深度
  • 记录IMU数据(如果有)

3.3.2 动态物体控制

你可以用以下方式制造动态干扰:

  • 让一个人拿着纸板在相机前走动
  • 用遥控小车来回穿梭
  • 在场景中放置风扇、摆动的窗帘

我曾经犯过一个错误:只录了单一动态物体。后来发现算法在多个动态物体同时出现时,表现完全不同。所以建议至少录3种动态程度。

3.3.3 地面真值获取

没有ground truth,评测就是耍流氓。获取方式有:

  • 用OptiTrack或Vicon动捕系统
  • 用激光雷达+ICP做离线优化
  • 用COLMAP做SfM重建

我个人推荐OptiTrack,精度高,但贵。如果预算有限,可以用COLMAP,但要注意动态物体会影响重建质量。

3.4 评测指标与基准

评测动态SLAM,不能只看ATE(绝对轨迹误差)。我一般用这几个指标:

  • ATE RMSE:整体轨迹精度
  • RPE:相对位姿误差,看局部漂移
  • 动态物体剔除率:算法能正确剔除多少动态点
  • 静态背景保留率:别把静态特征也删了

重要:动态SLAM的评测,一定要同时看动态剔除率和静态保留率。我见过一些算法,为了剔除动态点,把静态背景也砍掉一半,这显然不行。

3.5 知识体系总览

下面这张图,是我对动态环境数据集与评测基准的整体理解:

动态环境数据集与评测基准 公开数据集 自建测试集 评测指标 TUM RGB-D Dynamic 轻度/中度/重度动态 Kinect深度+RGB 地面真值轨迹 KITTI Dynamic 自动驾驶场景 车辆/行人/自行车 激光雷达+GPS真值 Bonn Dynamic 真实室内场景 语义分割mask 动态物体轨迹 自建测试集流程 1. 选择采集设备 2. 控制动态物体 3. 获取地面真值 核心评测指标 ATE RMSE RPE 动态剔除率/静态保留率 数据集 + 自建测试集 + 多维度评测 = 可靠的动态SLAM评估

个人小技巧:我每次做新算法,都会先在TUM上跑一遍,然后在自建测试集上跑一遍。如果两个结果趋势一致,说明算法泛化能力不错。如果差异很大,那就要找原因了。

避坑指南:我曾经在自建测试集上,因为地面真值标定不准,导致算法评测结果虚高。后来发现是OptiTrack的marker贴歪了。所以,一定要多次验证你的ground truth精度。

好了,这一章的内容就到这里。数据集和评测基准是动态SLAM的基石,选对了、建好了,后面的工作才能站得住脚。


公众号:蓝海资料掘金营,微信deep3321