论文详读之------《一个视觉动态对象感知SLAM系统》
- 0. 出发点(暨摘要)
- 1.引言
- 2. 相关工作
- 2.1 探索针对动态环境的健壮SLAM
- 2.2 分别执行SLAM和运动对象跟踪(MOT),作为传统SLAM的扩展,用于动态场景理解。
- 2.3 对象SLAM(通常包括静态和动态对象)
- 2.4 最近工作
- 3. 主要内容概括
- 3.1 预处理
- 3.1.1 对象实例分割
- 3.1.2 光流估计
- 3.2 追踪
- 3.2.1 模块一
- 3.2.2 模块二
- 3.3 建图
- 3.3.1 局部批量处理
- 3.3.2 全局批量处理
- 3.3.3 从建图到跟踪
- 4. 实验
- 4.1 深度模型设置
- 4.2 Oxford Multimotion数据集实验
- 1.3.png
- 4.3 KITTI数据集实验
- 4.3.1 相机位姿和物体运动
- 4.3.2对象跟踪和速度
- 4.3.3定性结果
- 4.3.4讨论
- 5. 本文总结
- 6. 个人读后感
论文网址:https://arxiv.org/pdf/2005.11052.pdf
源码网址:https://github.com/halajun/vdo_slam
0. 出发点(暨摘要)
将实时定位和建图(SLAM)估计与动态场景建模相结合,可以极大地促进机器人在动态环境中的自主性。机器人的路径规划和避障任务依赖于对场景中动态物体运动的准确估计。本文介绍了VDO-SLAM,这是一个健壮的视觉动态对象感知SLAM系统,它利用语义信息来实现对场景中动态刚性对象的精确运动估计和跟踪,而无需事先了解对象的形状或几何模型。该方法识别和跟踪环境中的动态对象和静态结构,并将这些信息集成到一个统一的SLAM框架中。最终获得高度精确的估计机器人的轨迹和物体的完整SE(3)运动,以及环境的时空地图。该系统能够从物体的SE(3)运动中提取线速度估计,为复杂动态环境中的导航提供了重要功能。我们在许多真实的室内和室外数据集上展示了所提出的系统的性能,结果显示出与最先进的算法相比,一致性和实质性的改进。源代码的开放源代码版本是可用的。
1.引言
下图1为视觉动态对象感知SLAM系统的框架。
- Input为输入模块,输入为单目或者是双目的RGB图和深度图。首先立体深度估计都方法提取深度信息。为了充分利用基于图像的语义信息,同时采用了基于学习的单目系统,获得单目相机的深度信息;
- Pre-processing为预处理模块,主要进行对象实例分割和光流估计;
- Tracking为追踪模块,主要工作为特征检测、相机位姿估计、动态目标追踪和目标运动估计;
- Mapping为建图模块,主要进行局部批量优化和全局批量优化
- Output为最终的输出。
本文的主要贡献为:
- 在机器人位姿、静态和动态3D点以及物体运动的统一估计框架中对动态场景建模的新公式;
- 准确估计SE(3)动态物体的运动,优于最先进的算法,以及一种提取物体在场景中的速度的方法;
- 一种鲁棒的方法来跟踪运动对象利用语义信息与处理间接遮挡的能力,导致语义对象分割失败;
- 在复杂和引人注目的现实世界场景中演示完整系统。
2. 相关工作
目前,在不同的研究目的下,对于动态场景下的SLAM的研究主要分为以下3类
2.1 探索针对动态环境的健壮SLAM
时期 | 方法 | 结果 |
---|---|---|
早期 | 检测和删除动态场景中提取到的信息 | 降低SLAM性能 |
发展 | 移除动态前景+修复获重建被遮挡的静态场景 | |
DynaSLAM | 经典几何+深度学习——>检测和移除动态对象多视角信息——>修复被遮挡的背景 | |
Light Field SLAM | 通过合成孔径成像(SAI)重建被遮挡的静态场景对重建的静态背景上的特征也进行了跟踪与利用 | 较好的SLAM性能 |
所有的方法几乎都是将动态信息丢弃,但是这些被丢弃的信息对SLAM也许会有潜在的好处;
除了SLAM之外,理解动态信息对机器人的其他任务(如:规划、控制和避障)也至关重要
2.2 分别执行SLAM和运动对象跟踪(MOT),作为传统SLAM的扩展,用于动态场景理解。
时期 | 方法 | 结果 |
---|---|---|
最新 | 将估计问题分解为两个独立的估计器以便实时更新两个滤波器并行解决运动中的结构和运动物体的跟踪问题系统输出统一包含静态结构和运行物体轨迹的的三维动态地图 | 解决了动态物体的SLAM物体 |
随后 | 整合语义约束进一步赶紧3D重建 | |
最近 | 基于立体的密集映射算法 | 具有大规模动态环境中,准确高效地重建静态背景和运动物体的优势 |
证明了将多目标跟踪与SLAM相结合的可行性,适用于动态场景的探索。
通过适当的开发和建立机器人与静态背景、静态和动态物体之间的时空关系。证明了SLAM和多目标跟踪问题是相互有益的。
2.3 对象SLAM(通常包括静态和动态对象)
这种算法通常需要对三维物体进行特定的建模和表示,有三维形状、曲面或体积模型、几何模型等,提取高级原语并整合到SLAM框架中。
类型 | 方法 | 效果 |
---|---|---|
SLAM++ | 该范式在物体表层表示杂乱的场景在相机和物体姿态之间构建显示图实现联合姿态图优化 | |
密集SLAM的同时重建、分割和识别 | 提出一种新颖的3D物体识别算法 | 保证系统的鲁棒性提高估计物体姿态的准确性 |
MaskFusion | 采用表面表示对场景中的物体进行建模和重建 | 无需预先了解对象模型 |
MID-Fusion | 采用基于八叉树的体积模型 | |
构建多目标动态SLAM系统 | 无需预先了解对象模型 |
2.4 最近工作
类型 | 方法 | 效果 |
---|---|---|
最近 | 使用基本集合来表示对象 | 复杂度低、易于集成到SLAM框架中 |
Quadric-SLAM | 紧凑参数化物体的大小和三维姿态将检测到的物体表示为椭球体将二次参数直接约束为几何误差并与相机位姿一起在因子图SLAM中进行联合估计 | |
CubeSLAM | 将二维和三维目标检测与SLAM相结合多视图捆绑调整与点和相机一起优化 |
仍然存在的问题:
以上方法都能证明被检测对象和SLAM之间的利用关系,但是主要关注的都是静态场景下的对象检测和SLAM,本文沿着这一方向,在SLAM框架内解决动态目标跟踪的挑战性问题,并利用动态目标与智能机器人、静态和动态结构之间的关系来获得潜在的优势。
3. 主要内容概括
对于论文还没有进行公式推理,所以此处先进行的系统分析。
这篇论文建立的SLAM系统可以稳健的估计相机和物体的运动以及环境的静态和动态结构。主要由预处理、跟踪、建图三部分组成。
为了充分利用基于图像的语义信息,采用了基于学习的单目系统。将单目或者双目的RGB图像和深度图像。
3.1 预处理
此模块的主要分为两部分:
- 鲁棒的分离静态背景和目标
- 保证对动态目标的长期追踪
方法:实例语义分割
+光流估计
3.1.1 对象实例分割
- 用于分割潜在的可移动对象;
- 利用语义信息进行先验;
- 有助于进一步将语义前景划分为不用的实例掩码,使得跟踪单独的对象变得更加容易;
- 掩码提供了精确的对象体边界,确保了对对象上的点进行鲁棒跟踪。
3.1.2 光流估计
使用的是稠密光流
- 用于最大化运动物体上被跟踪点的数量;
- 通过语义掩码内的所有点进行采样,大大增加了目标点的数量;
- 通过产生分配给对象掩模上的每个点的唯一对象标识符来一致地跟踪多个对象;
- 如果语义分割失败,它允许恢复对象掩码;这是一项使用稀疏特征匹配极其困难的任务。
3.2 追踪
包含两个模块:
模块一:特征检测+相机位姿估计
模块二:动态目标追踪+目标运动估计
3.2.1 模块一
- 特征检测
- 检测一组稀疏的焦点特征,利用光流跟踪它们。
- 每一帧中,只有与估计的相机运动相匹配的内层特征点被保存到地图中,并用于跟踪下一帧中的对应点。
- 如果内部轨迹的数量低于一定水平(默认为1200),则检测和添加新的特征。
- 这些稀疏特征是在静态背景上检测的,即不包括被分割对象的图像区域。
- 相机位姿估计
- 计算所有检测到的3D-2D静态点对应的相机位姿。
- 生成两个模型,并基于重投影误差比较内点数 通过相机之前的运动产生
- 通过使用RANSAC和P3P算法进行新的运动变换生成
- 选择生成的大多数内点的运动模型进行初始化
3.2.2 模块二
- 动态目标跟踪
第一步,从背景中分离对象
(虽然该算法可以估计所有分割对象的运动,但动态对象识别有助于减少所提出的系统的计算成本)
获取相机位姿–>描述场景流(理想情况下应该为0)
- 计算每个物体上所有采样点的场景流大小
- 当某点场景流>阈值时,则认为该点事动态的
- 当动态点的比例>总点的30%时,则认为该对象为动态物体,否则静态
第二步,只提供单个图像对象标签的实例级对象分割
运动模型随着时间推移而逐渐推进,所以需要跨帧进行对象追踪。
这里采用光流来关联跨帧的点标签。
点标签与点被采样的唯一对象标识符相同。
理想情况下,对于第k帧中检测到的每个物体与k-1帧中它们对应的标签唯一对齐。
实际实践中,受到噪声、图像边界和遮挡的影响。
解决:给所有的点分配标签 前一帧出现最多的标签是0,意味着该对象即将移动。 在边界处出现、从这当中重新出现,会被重新分配一个新的跟踪标签。
- 目标运动估计
目标通常以小块的形式出现在场景中,使得很难获得足够的稀疏特征来鲁棒的跟踪和估计其运动。
方法:
- 在一个对象掩码内,每隔三个点进行采样,并跨帧跟踪
- 内点被保存到地图,用于下一帧的跟踪
- 当跟踪到的目标点数量下降到一定水平时,会采样并添加新的目标点。
3.3 建图
构建并维护一个全局地图,同事从全局地图提取一个局部地图。
3.3.1 局部批量处理
- 维护和更新局部地图 局部批量优化目标是确保精确地相机位姿估计提供全局批量优化。
- 相机位姿估计对物体运动的准确性和算法的整体性有很大影响。
- 局部地图使用包含最后n帧信息的固定大小的滑动窗口来构建。
- 仅在窗口大小内局部优化相机位姿和静态结构。
- 执行因子优化图来细化局部地图内所有变量
- 最后,更新到全局地图
3.3.2 全局批量处理
- 由跟踪和局部批量优化的输出(相机位姿、物体运动和内部结构)组成。
- 随着每一帧的更新不断更新
- 所有输入真被处理后,给予全局地图构建因子图。
- 有效地探索时间约束,只将被跟踪超过3个实例的点添加到因子图中
- 优化结果为整个系统的输出
3.3.3 从建图到跟踪
- 利用上一帧的内点来跟踪当前帧的对应关系,并估计相机位姿和物体运动。
- 最后的相机位姿和物体运动也可以作为初始化当前估计的可能的先验模型
- 语义对象分割失败导致“间接遮挡”的情况下,目标点通过其先前分割的掩码,帮助跨帧关联语义掩码,以确保对目标的鲁棒跟踪。
4. 实验
从相机运动、物体运动和速度以及物体跟踪性能等方面对VDO-SLAM进行了评估。对室内场景的Oxford Multimotion数据集和室外场景的KITTI Tracking数据集进行了评估,并与其他最先进的方法(包括MVO、ClusterVO、DynaSLAM II和CubeSLAM)进行了比较。由于系统运行的不确定性,例如RANSAC处理,将每个序列运行5次,并将中值作为演示结果。所有结果都是通过在默认参数设置下运行所提出的系统得到的。开放源代码实现包括演示YAML文件和在两个数据集中运行系统的指令。
4.1 深度模型设置
- 对于实例分割,使用Mask-RCNN生成对象的分割掩码。实在COCO数据集上训练得到,没有进行任何微调。
- 对于稠密光流,使用PWC-Net,在FlyingChairs数据集上训练,在Sintel和KITTI数据集上微调。
- 特征检测,使用FAST完成
- 单目深度估计,MonoDepth实在深度特征分裂上进行训练的
4.2 Oxford Multimotion数据集实验
与MVO相比,本文提出的方法在相机位姿估计和摆动box和左下方面效果比较好。
与ClusterVO相比,本文在相机位姿估计和右下旋转框的平移方面的性能略差。
本文在估计物体方面比ClusterVO实现了两倍以上的改进。
下图是本文算法在Oxford Multimotion数据集上的轨迹输出结果。摆动盒子上的动态特征轨迹在视觉上与盒子的实际运动相对应。
(左) 相机的3D轨迹(红色)和四个方框的中心。(右)静态背景和物体体上的检测点。黑色对应于静态点,每个物体上的特征以不同的颜色显示。
4.3 KITTI数据集实验
4.3.1 相机位姿和物体运动
下表中展示了9个序列的相机位姿和运动结果的估计。与DynaSLAM II和CubeSLAM在KITTI数据集中提取的九个运动物体序列上的相机姿态和物体运动估计精度的比较。加粗的数字表示更好的结果。
与DynaSLAM II相比,本文在相机位姿估计方面具有竞争力和较高的精确度,旋转误差略低,平移误差较高
与CubeSLAM相比,本文的RGB-D在相机位姿上的误差更低一些,单目的略高,此处认为是因为单目输入无法准确捕捉深度尺度。
单目和RGB-D在目标运动估计中都有持续较低的误差。
CubeSLAM的平移和旋转误差都在3米和3度以上,极端情况下误差分别达到32米和5度。然而,在RGB-D情下,我们的平移误差在0.1-0. 3米之间,旋转误差在0.2-1.5度之间,在基于学习的单目情况下,我们的平移误差在0.1-0.3米之间,旋转误差在0.4-3. 1度之间,这表明我们的目标运动估计在大多数情况下都实现了数量级的提高。
色条表示在对数尺度上对应于左y轴的平移误差。圆圈表示旋转误差,对应于线性尺度的右y轴。
结果表明,基于点的物体运动/位姿估计方法比使用高级几何模型的方法更鲁棒和准确,这可能是因为几何模型提取可能导致信息丢失并引入更多的不确定性。
4.3.2对象跟踪和速度
下图展示了所有测试序列中一些选定对象(跟踪超过 20帧)的对象跟踪长度和对象速度的结果。本文的系统能够跟踪序列中80%以上出现的大多数物体。此外,本文估计的物体速度总是始终接近于地面真实值。
由于空间有限,部分选定目标(跟踪了 20帧以上)的目标跟踪长度和目标速度的结果。颜色条表示对象轨迹的长度,对应于左y轴。圆圈表示物体的速度,对应于右y轴。GT表示真值,EST.表示估计值。
4.3.3定性结果
下图显示了本文系统对三个KITTI序列的输出。所提出的系统能够在时空地图表示中输出相机姿态,以及场景中每个检测到的移动对象的静态结构和动态轨迹。
带有相机姿态、静态背景结构和动态物体轨迹的动态地图。KITTI序列的VDO-SLAM样本结果。黑色代表静态背景,每个检测到的物体都以不同的颜色显示。左上图代表Seq.01和序列末尾交叉口的放大图,右上图代表Seq.06,右下图代表Seq.03。
4.3.4讨论
定义了旋转,平移的误差项,还有速度的计算方法,这里主要是讨论了作者这么设计这个系统的一些好处:
联合光流的优化使得更多的点能被连续追踪,这就使得通过这些点求出来值的精度能有小幅提升(15%~20%)。
增强了对非直接遮挡情况的鲁棒性:对于语义分割,他可能会在发生直接遮挡以及非直接遮挡(光照变化)时失效, 在非直接遮挡的情况下,把之前的语义mask传播到当前帧可以解决这个问题。下面用图来举一个具体例子:
序列一共有88帧,要追踪其中的白色车子,从第33帧开始,语义分割失效,但是追踪仍然可以进行。可以看到序列的后半段平均误差较大,这是因为此时有局部的直接遮挡(有车子局部是看不到的),以及物体离相机太远。
右下角白车上的点是把之前追踪的特征点传播到了当前帧
对物体运动的全局精确化:从下面的图可以看出来,速度估计是不平滑的,而且在后半段有很大的误差,这主要是因为物体距离相机越来越远,只在整个场景中占据了一小部分。这时,如果只靠传感器的测量值来做运动估计是很困难的,所以就使用了前面的因子图优化,可以看到结果更加平滑且提升明显。
实时性:帧率在5-8帧,会受到场景中移动物体的数目的影响。全局优化的耗时受相机帧总数,每帧移动物体数目的影响
5. 本文总结
在本文中,提出了VDO-SLAM,这是一种新的基于动态特征的SLAM系统,它利用场景中基于图像的语义信息,而不需要额外的物体姿态或几何知识,来实现动态物体的同步定位、建图和跟踪。该系统在室内和具有挑战性的室外数据集上始终显示出鲁棒和准确的结果, 并在对象运动估计方面取得了最先进的性能。在对象运动估计中实现的高性能精度是由于系统是一个基于特征的系统。在SLAM系统中,特征点仍然是最容易检测、跟踪和集成的,并且不需要前端对对象模型有额外的了解,也不需要明确地提供有关其姿态的任何信息。
一个重要问题是具有动态对象的SLAM的计算复杂度需要减少。在长期应用中,可以应用不同的技术来限制图的增长。
6. 个人读后感
本文的系统分别在室内和室外进行了实验,并进行了评估讨论。在需要深度信息时,RGB-D相机要比单目效果好一些。针对动态场景中特征点的检测和追踪的处理相较之前的方法是一个较新的点;并针对观测到的动态物体有一个速度上的估计。总体来说收获颇多。