[论文笔记]DynaSLAM
DynaSLAM:动态场景中的跟踪、建图和修复
DynaSLAM: Tracking, Mapping and Inpainting in Dynamic Scenes
摘要
场景刚性的假设在 SLAM 算法中很典型。这种强有力的假设限制了大多数视觉 SLAM 系统在人口稠密的现实世界环境中的使用,而这些环境是服务机器人或自主车辆等相关应用的目标。
在本文中,我们提出了 DynaSLAM,一个基于 ORB-SLAM2 [1] 的视觉 SLAM 系统,它增加了动态目标检测和背景修复的能力。DynaSLAM 在单目、立体和 RGB-D 配置的动态场景中非常强大。我们能够通过多视图几何、深度学习或两者来检测运动物体。拥有一个静态的场景地图,可以绘制被动态对象遮挡的框架背景。
我们在公共单目、立体和RGB-D数据集中对我们的系统进行了评估。我们研究了几种精度/速度权衡的影响,以评估所提议的方法的局限性。在高度动态的场景中,Dy naSLAM的精度优于标准的视觉SLAM基线。它还估计了场景静态部分的地图,这对于在现实环境中的长期应用来说是必须的。
I.Introduction
在visual SLAM中检测和处理动态对象有下面这些问题:
- 如何在图像中检测到这样的动态对象。
- 防止跟踪算法使用属于动态对象部分进行匹配。
- 防止映射算法将移动对象作为3D地图的一部分。
- 如何完成三维地图中被运动物体暂时遮挡的部分。
在本文中,本文提出了一种在线算法来处理RGB-D、双目和单目SLAM中的动态对象。这是通过在ORB-SLAM2系统添加一个前端来实现的,其目的是获得更精确的跟踪和场景的可重用映射。
- 在单目和双目的情况下,使用CNN对帧内的先验动态对象(如人和车)进行像素级分割,这样SLAM算法就不会提取这些对象的特征。
- 在RGB-D的情况下,结合多视图几何模型和基于深度学习的算法来检测动态对象,在将它们从图像中移除后,用场景的正确信息来绘制遮挡的背景(如图1)
II.相关工作
目前的可应用于动态环境中的SLAM方法大多无法应对下面两种情况:
- 当一个先验的动态对象保持静态时,例如,停放的汽车或坐着的人
- 静态对象产生的变化,比如一个人推的椅子
III.系统描述
-
系统概况如图2展示。
图2 - 首先,对于RGB-D相机而言,将RGB-D数据传入到CNN网络中对有先验动态性质的物体如行人和车辆进行逐像素的分割。
- RGB-D情况:
- 使用多视图几何以两种方式改进动态内容分割。1. 细化/改善(refine)了先前由CNN获得的动态对象分割。2.其次,将动态的新对象实例标记为大多数时间是静态的(即,检测在CNN阶段没有设置为可移动的移动对象)。可以理解为将在大多数时间中保持静止的、新出现的动态对象进行标注。
- 然后是估计相机,在低成本跟踪模块中在已经创建的场景地图中定位相机。这些分割后的帧是用于获得相机轨迹和场景地图的帧。请注意,如果场景中的移动对象不在CNN类中,则多视图几何阶段仍会检测到动态内容,但准确性可能会降低。
- 完成了相机的完整动态对象检测和定位后,我们的目标是利用来自先前视图的静态信息重建当前帧的被遮挡背景。这些合成帧适用于增强和虚拟现实等应用,以及长时间建图中的位置识别
- 单目和双目情况:
- 直接将图像传入CNN中进行分割,将具有先验动态信息的物体分割出去,仅使用剩下的图像进行跟踪和建图处理。
A.使用CNN对潜在动态内容进行分段
- 使用获得图像的逐像素语义分段的CNN。在我们的实验中,这里使用Mask R-CNN ,可以获得逐像素语义分割和实例标签。
- Mask R-CNN的输入是RGB原始图像。目的是划分那些潜在动态或可移动的类(人,自行车,汽车,摩托车,飞机,公共汽车,火车,卡车,船,鸟,猫,狗,马,羊,牛,大象,熊,斑马和长颈鹿)。对于大多数环境,可能出现的动态对象都包含在此列表中。如果需要其他类别,可以使用新的训练数据在MS COCO上训练网络。
- 假设输入是大小为的RGB图像,网络的输出是大小为的矩阵,其中是图像中的对象(类别)数,再将层分类图像合并成一幅图像。
B. 低成本跟踪
- 在潜在的动态内容被分割后,使用图像的静态部分来跟踪相机的姿态。由于线段等高线往往成为高梯度区域,容易出现突出的点特征,不考虑这些等高线区域的特征。
- 该算法在此阶段实现的跟踪相对于ORB-SLAM2[1]中的跟踪更简单,因此在计算上也更轻。它在图像帧中投射出地图特征,在图像的静态区域中搜索对应关系。最大限度地减小再投影误差,优化相机姿态。
C.基于Mask R-CNN和多视几何的动态物体分割
- 主要是针对性地处理在Mask RCNN中没有先验动态标记而具有移动性的物体的分割,例如行人手中的书等。
- 对于每一个输入图像帧,作者选择一些与其重叠度最大的旧图像帧(文中作者选择数量为5)。然后,计算每个关键点从先前关键帧到当前帧的投影,获得关键点,以及它们的投影深度,同时生成对应的三维点。计算关键点与三维点X形成的夹角, 记为Alpha,若Alpha大于30度则认为该点可能被挡住了,即不对其做处理。作者观察到在TUM数据集中,夹角Alpha大于30°时的静态物体即被认为是动态的。
关键点用的ORB-SLAM中提取的关键点
- 对应深度值为,(单目、双目情况下,作者使用深度测量计得到对应的深度值,)在误差允许的范围内,将其与进行比较,超过一定阈值则认为该点对应于一个动态的物体。判断过程如图3所示。作者经过在TUM数据集上进行的测试发现深度值差阈值为0.4m.
图3重叠度最大通过考虑新帧和每个关键帧之间的距离和旋转来完成的
图3:关键帧(KF)的关键点x被投射到当前帧(CF)使用其深度和相机姿势,产生点,深度为。然后计算投影深度。如果差值大于阈值,则将像素标记为动态。
- 标记为动态的一些关键点位于移动对象的边界上,可能会导致问题。为避免这种情况,作者使用深度图像给出的信息,如果关键点设置为动态,但深度图中的自身周围的像素具有高差异,我们将标签更改为静态。
- 对图像中像素的分类标记使用区域生长算法[21]得到了运动物体的掩膜。图4显示了基于多视几何、深度学习和两者结合的方式进行动态物体分割的结果对比,可以看到两方法结合达到了互补的效果。
图4同时需要注意的是,在追踪和建图的过程中需要对由于掩膜出现,在边缘处检测出的异常ORB特征点进行去除。
D.跟踪和建图
系统此阶段的输入包含RGB和深度图像,以及它们的分割mask。我们将图像片段中的ORB特征提取为静态。由于线段轮廓是高梯度区域,因此必须删除落在此交叉点中的关键点。
E.背景修复
图5图5显示了从不同TUM基准序列中背景修复效果。
- 用先前图像的静态信息修复被遮挡的背景,大多数分割部分已经正确地修复了来自静态背景的信息。
- 根据前一帧和当前帧的位置,作者将之前20关键帧的RGB以及深度图投影到当前帧上完成无动态物体的背景修复。有些间隙没有对应关系并且留空:某些区域无法修复,因为它们的相应部分在关键帧中没有出现到目前为止,或者,如果它已经出现,则它没有有效的深度信息。这些间隙不能用几何方法重建,需要更精细的修复技术。
实验结果
将本文提出的系统和原始ORB-SLAM2进行比较,来验证本文方法在动态场景中的提升。作者在相应的序列数据上进行了10次测试,以避免不确定性效应。
A. TUM数据集
不同DynaSLAM的变体的测试效果DynaSLAM (N)代表仅使用Mask RCNN进行动态物体分割; DynaS LAM (G)代表仅使用基于深度变化的多视几何进行动态检测和分割;DynaSLAM (N+G)代表同时利用多视几何和深度学习的方法进行检测;DynaSLAM (N+G+BI)代表在背景修复之后进行跟踪和建图的操作(这时是基于真实影像和重建影像完成ORB特征提取)。从表中可以发现使用DynaSLAM(N+G)的精度是最高的,DynaSLAM (G) 由于在经过一定的延迟之后运动估计和实例分割才会准确这一方法特性,使得最后的精度较差。DynaSLAM (N+G+BI)由于使用了重建之后的影像进行跟踪,而相机姿态会对重建影像有较大影响,因此这样的效果比较差。
DynaSLAM和ORB-SLAM2误差对比对比
作者还将DynaSLAM(N+G)中RGB-D分支与RGB-D ORB-SLAM2进行了对比。可以发现在高动态场景walking中,本文的方法优于ORB-SLAM2,并且误差与RGB-D ORB-SLAM2在静态场景中的误差相近。而在低动态场景setting中,要稍微差一些。
DynaSLAM和ORB-SLAM2估计轨迹
B. KITTI数据集
在KITTI数据集上中进行测试发现,DynaSLAM以及ORB-SLAM在有些场景下的结果是相近的。当不在具有先验动态信息的物体上提取特征时,跟踪精度会比较高,诸如汽车,自行车等(KITTI01\KITTI04);当在大多数车辆都是停止状态时,DynaSLAM的误差会大一些,因为将这些物体对象去掉之后检测到的特征点会处于较远或纹理较弱的区域,从而导致跟踪精度下降(KITTI00\KITTI02\KITTI06)。但是在回环检测和重定位处理中结果较为稳健,因为构建的地图中仅仅包含结构性物体对象,没有动态物体。而如何设计更好的特征区分标准,使得具有移动性的物体在未移动时,其对应的关键点可以被用于跟踪却不会在最终的结果地图中出现这一问题需要进行更加深入的研究。
表5、6 双目条件下DynaSLAM和ORB-SLAM之间的比较以及单目下DynaSLAM和ORB-SLAM之间的比较结果
C. 时间分析
作者还提到所做的实验中并没有对算法进行工程优化,因此时间上的开销会比较大,如下表:
DynaSLAM不同阶段的平均计算时间
总结
我们提出了一个基于ORB-SLAM的视觉SLAM系统,它增加了一种运动分割方法,使其在单眼,立体和RGB-D相机的动态环境中具有强大的稳健性。我们的系统可以精确地跟踪摄像机并创建静态且因此可重复使用的场景地图。在RGB-D情况下,DynaSLAM能够获得没有动态内容并且具有被遮挡的背景的合成RGB帧,以及它们相应的合成深度帧,这些帧可能对虚拟现实应用非常有用。我们提供了一个显示DynaSLAM 2潜力的视频。与现有技术的比较表明,DynaSLAM在大多数情况下实现了最高的准确度。
在TUM动态对象数据集中,DynaSLAM是目前最好的RGB-D SLAM解决方案。在单眼情况下,我们的精度类似于ORB-SLAM的精度,但是通过较早的初始化获得场景的静态映射。在KITTI数据集SLAM中,除了动态对象表示场景的重要部分的情况外,其精度略低于单目和立体的ORB-SLAM。然而,我们估计的映射只包含结构对象,因此可以在长期应用程序中重用。这项工作的未来扩展可能包括其他方面的实时性能。一种基于RGB的运动检测器,或通过使用更精细的修复技术(如Pathak等人使用GANs绘制的[24]帧)使合成的RGB帧具有更真实的外观。