动态SLAM论文(2) — DynaSLAM: Tracking, Mapping and Inpainting in Dynamic Scenes

目录

0 Introduction

1 Related work

2 System description

3 Experimental results

4 Conclusions


摘要 - SLAM算法中的典型假设是场景刚性的假设。这样强大的假设限制了大多数视觉SLAM系统在人口稠密的现实世界环境中的使用,这些环境是多个相关应用的目标,如服务机器人或自动驾驶车辆。本文介绍了DynaSLAM,这是一个建立在ORB-SLAM2[1]基础上的视觉SLAM系统,它增加了动态物体检测背景修复的能力。DynaSLAM在单目、立体和RGB-D配置下对动态场景非常稳健。我们能够通过多视角几何、深度学习或两者结合来检测移动物体。拥有场景的静态地图允许修复被这些动态物体遮挡的帧背景。我们在公开的单目、立体和RGB-D数据集上评估了我们的系统。我们研究了几种准确性/速度折衷的影响,以评估所提出方法的限制。DynaSLAM在高度动态的场景中超过了标准视觉SLAM基线的准确性。它还估计了场景静态部分的地图,这对于在现实世界环境中进行长期应用是必需的。

0 Introduction

        SLAM是许多机器人应用的先决条件,例如无碰撞导航。SLAM技术从其机载传感器的数据流中联合估计未知环境的地图和机器人在该地图中的位姿。地图允许机器人在相同环境中持续定位,而不会积累漂移。这与在局部窗口内集成增量运动估计的里程计方法不同,当重新访问地点时无法纠正漂移。

        视觉SLAM主要传感器是相机,近年来受到了高度的关注和研究。用单目相机的方案在尺寸、功耗和成本方面具有实际优势,但也存在一些挑战,比如无法观测到尺度或状态初始化。通过使用更复杂立体或RGB-D相机可以解决这些问题,并且可以大大提高视觉SLAM系统的鲁棒性。

        研究界从不同角度研究了SLAM。然而,绝大多数方法和数据集都假设环境是静态的。因此,它们只能通过将其分类为静态模型的异常值来处理动态内容的小部分。尽管静态假设对于某些机器人应用是成立的,但它限制了视觉SLAM在许多相关案例中的适用性,例如在人口稠密的现实世界环境中长时间运行的智能自主系统。

        视觉SLAM可以分为基于特征的方法[2],[3]和直接方法[4],[5],[6]。前者依赖于显著点匹配,只能估计稀疏重建;而后者原则上能够通过直接最小化光度误差和TV正则化来估计完全密集的重建。一些直接方法专注于高梯度区域,估计半稠密地图[7],[8]。

        上述这些方法都没有考虑到场景中非常常见的动态物体问题,例如行人、自行车或汽车。在视觉SLAM中检测和处理动态物体对于建图和跟踪都带来了几个挑战,包括:

1)如何在图像中检测到这些动态物体:

  • 防止跟踪算法使用属于动态物体的匹配点。
  • 防止建图算法将移动物体包括在三维地图中。

2)如何完成被动态物体临时遮挡的部分三维地图。

        许多应用都可以从这方面的进展中受益,包括增强现实、自动驾驶车辆和医学成像等。它们可以安全地重复使用前一次运行生成的地图。检测和处理动态物体是估计稳定地图的先决条件,对于长期应用非常有用。如果没有检测到动态内容,它将成为三维地图的一部分,从而使其在跟踪或重新定位目的上的可用性变得复杂。

      论文工作我们提出了一种在线算法来处理RGB-D、立体和单目SLAM中的动态物体。我们在现有的ORB-SLAM2系统[1]中添加了一个前端,以便实现更准确的跟踪和可重用的场景地图。对于单目和立体情况,我们的建议是使用卷积神经网络对帧中的先验动态物体(如人和车辆)进行像素级分割,以便SLAM算法不会在它们上提取特征。对于RGBD情况,我们建议结合多视图几何模型和基于深度学习的算法来检测动态物体,并在从图像中去除它们后,用场景的正确信息修复被遮挡的背景(图1)。

1 Related work

        动态对象在大多数SLAM系统中被归类为噪声数据,因此不被包括在地图中,也不用于相机跟踪。最典型的异常值拒绝算法是RANSAC(例如ORB-SLAM [3],[1]中使用的算法)和鲁棒代价函数(例如PTAM [2]中使用的算法)。

        有几个SLAM系统专门处理动态场景内容。在基于特征的SLAM方法中,一些最相关的方法有:

  • Tan等人[9]通过将地图特征投影到当前帧中进行外观和结构验证,检测场景中发生的变化。
  • Wangsiripitak和Murray[10]在场景中跟踪已知的3D动态物体。
  • Riazuelo等人[11]通过检测和跟踪人员来处理人类活动。  
  • Li和Lee[12]的工作使用深度边缘点,这些点具有指示其属于动态对象的概率的相关权重。

        直接方法通常对场景中的动态对象更敏感。专门为动态场景设计的最相关方法包括:

  • Alcantarilla等人[13]通过使用立体相机的场景流表示来检测移动物体。
  • Wang和Huang[14]使用RGB光流分割场景中的动态物体。
  • Kim等人[15]提出通过计算连续深度图像在同一平面上投影的差异来获取场景的静态部分。
  • Sun等人[16]计算连续RGB图像的强度差异。使用量化深度图像的分割进行像素分类。

        所有这些方法-基于特征和直接方法-仅通过序列中包含的信息来映射静态场景部分[1],[3],[9],[12],[13],[14],[15],[16],[17],无法估计长期模型,当先验的动态对象保持静止时,例如停放的汽车或坐着的人。另一方面,Wangsiripitak和Murray[10]以及Riazuelo等人[11]可以检测到这些先验的动态对象,但无法检测到静态物体引起的变化,例如一个人推的椅子或别人扔的球。也就是说,前一种方法成功地检测移动物体,而后一种方法成功地检测到多个可移动的物体。我们提出DynaSLAM,结合了多视角几何和深度学习,以应对这两种情况。同样,Anrus等人[18]通过将动态分类器与多视角几何相结合,对动态对象进行分割。

2 System description

        首先,RGB通道通过卷积神经网络(CNN),对所有先验动态内容进行像素级分割,例如人或车辆。

        在RGB-D情况下,我们利用多视角几何来改善动态内容的分割,有两种方式。首先,我们改进了CNN先前获得的动态物体分割。其次,我们标记为动态的新对象实例,它们大部分时间是静止的(即,在CNN阶段检测到的移动对象)。

        为了达到这个目的,有必要了解相机位姿,为此,我们实现了一个低成本的跟踪模块,用于在已创建的场景地图中定位相机。这些分割帧是用于获得相机轨迹和场景地图的帧。 注意,如果场景中的移动物体不属于CNN的类别,多视角几何阶段仍然会检测到动态内容,但准确性可能会降低。

        一旦完成了完整的动态物体检测和相机定位,我们的目标是基于先前视图中的静态信息,重建当前帧的被遮挡背景。这些合成帧对于增强现实、虚拟现实和终身地图中的地点识别等应用非常重要。

        在单目和立体视觉情况下,图像通过CNN进行分割,以便不跟踪和映射属于先验动态物体的关键点。 所有不同的阶段在下面的子章节(A到E)中进行了详细描述。

A. 使用CNN对潜在动态物体进行分割

        为了检测动态物体,我们建议使用一个CNN来对图像进行像素级的语义分割。在我们的实验中,我们使用了Mask R-CNN[19],它是目前用于对象实例分割的最先进方法。Mask R-CNN可以获得像素级的语义分割和实例标签。在这项工作中,我们使用像素级的语义分割信息,但实例标签可能在将来的工作中对于追踪不同的移动物体有用。我们使用Matterport1的TensorFlow实现。         Mask R-CNN的输入是RGB原始图像。我们的想法是对那些潜在的动态或可移动类进行分割(人、自行车、汽车、猫、狗等)。我们认为,在大多数环境中,可能出现的动态物体都包含在这个列表中。如果需要其他类别,可以使用在MS COCO[20]上训练的网络进行微调,添加新的训练数据。

        假设网络的输出是大小为m×n×3的RGB图像,输出是大小为 m×n×l 的矩阵,其中l是图像中物体的数量。对于每个输出通道i∈l,得到一个二进制掩码。通过将所有通道合并为一个,我们可以获得场景中出现的所有动态物体的分割结果。

B. 低成本的跟踪

        在跟踪过程中不考虑分割边界的特征点

        在将潜在的动态内容进行分割之后,使用图像的静态部分来跟踪相机的位置。由于分割轮廓通常成为高梯度区域,显著点特征往往会出现,我们不考虑这些轮廓区域中的特征。 在算法的这个阶段实现的跟踪是ORB-SLAM2 [1]中的一个简化且计算负担较轻的版本。它将地图特征投影到图像帧中,在图像的静态区域中搜索对应关系,并最小化投影误差以优化相机姿态。

C. 使用Mask R-CNN和多视角几何的动态内容分割

        通过使用Mask R-CNN,可以分割出大多数的动态物体不用于跟踪和建图。然而,有些物体无法通过这种方法检测到,因为它们不是事先确定的动态物体,而是可移动的。例如包括一个人携带的书籍,一个人移动的椅子,甚至是长期建图中的家具变化。本节详细介绍了处理这些情况的方法。

        对于每个输入帧,我们选择与新帧有最高重叠的前一关键帧。这是通过考虑新帧与每个关键帧之间的距离和旋转来完成的,类似于Tan等人的方法[9]。在我们的实验中,重叠关键帧的数量设置为5,作为计算成本和动态物体检测准确性之间的折衷。

        然后,我们计算从前一关键帧投影到当前帧的每个关键点,得到关键点,以及它们的投影深度,由相机运动计算而得。请注意,关键点来自于ORB-SLAM2中使用的特征提取算法。

        动态物体判断:视差角α > 30°,深度差值超过阈值 

        对于每个关键点,其对应的3D点为,我们计算的反投影的夹角,即它们的视差角α。如果这个角度大于30度,则该点可能被遮挡,并且从此被忽略。我们观察到,在TUM数据集中,视差角大于30度的静态物体由于视角差异被认为是动态的。我们在当前帧中获取剩余关键点的深度(直接从深度测量中获取),考虑了重投影误差,并将它们与进行比较。如果差值超过阈值,则认为关键点属于一个动态物体。这个想法在图3中展示。为了设置阈值,我们在TUM数据集中手动标记了30张图像的动态物体,并针对不同的阈值评估了我们方法的准确性和召回率。通过最大化表达式0.7×P recision+0.3×Recall,我们得出结论 = 0.4m是一个合理的选择。

        在动态即时定位与地图构建(SLAM)领域,一些被标记为动态关键点的物体边界上可能存在问题。为了避免这种问题,我们利用深度图像提供的信息。如果一个关键点被设置为动态的,但是它周围的深度图像区域具有较高的方差,我们将将其标记改为静态。

        到目前为止,我们知道哪些关键点属于动态物体,哪些不属于。为了对所有属于动态物体的像素进行分类,我们在深度图像中扩展动态像素周围的区域。图4a展示了一个RGB帧及其对应的动态遮罩的示例。

        卷积神经网络(CNN)的结果(图4b)可以与几何方法的结果结合起来进行完整的动态物体检测(图4c)。我们可以在这两种方法中找到优点和局限性,因此可以将它们结合使用。对于几何方法来说,主要问题是由于其多视角的性质,初始化并不简单。深度学习方法在单视角上的出色性能虽然没有这样的初始化问题,但它们的主要局限性是被认为是静态的物体可能会移动,而该方法无法识别出来。可以使用多视角的一致性测试来解决这种情况。

        图4中展示了解决移动物体检测问题的这两种方式。在图4a中,我们可以看到后面的人是一个潜在的动态物体,但没有被检测出来。这有两个原因。首先,RGB-D相机在测量远距离物体的深度时遇到困难。其次,可靠的特征点位于定义明确且附近的图像区域。尽管如此,这个人被深度学习方法检测到了(图4b)。除此之外,在图4a中,我们可以看到不仅前面的人被检测到,而且他手里的书和他坐在的椅子也被检测到。另一方面,在图4b中,只有两个人被检测为动态物体,而且它们的分割不太准确。如果只使用深度学习方法,图像中会存在一本漂浮的书,该书会错误地成为3D地图的一部分。

        由于这两种方法的优势和劣势,我们认为它们相互补充,因此它们的结合使用是实现准确跟踪和构建地图的有效方式。为了实现这个目标,如果一个物体在两种方法中都被检测到,分割遮罩应该采用几何方法的结果。如果一个物体只被深度学习方法检测到,分割遮罩也应包含这个信息。前面段落示例的最终分割图像可以在图4c中看到。被分割的动态部分从当前帧和地图中移除。

D. 跟踪和建图

        系统在这个阶段的输入包括RGB图像、深度图像以及它们的分割掩模。我们在被分类为静态的图像段落中提取ORB特征。由于图像段落的轮廓是高梯度区域,这些交叉点上的关键点需要被移除。

E. 背景修复

        对于每一个被移除的动态物体,我们旨在用先前视图中的静态信息修复被遮挡的背景,以便合成一个没有移动内容的逼真图像。我们相信这样的合成帧,包含了环境的静态结构,对于虚拟和增强现实应用以及地图创建后的重定位和相机跟踪是有用的。

        背景修复方法:通过最近20帧的RGB和深度信息投影到单前帧去填补空白区域

        由于我们知道前一帧和当前帧的位置,我们将所有先前关键帧(在我们的实验中是最近的20帧)的RGB和深度通道投影到当前帧的动态段。一些空白区域没有对应关系,因此留空:有些区域无法进行修复,因为它们在关键帧中对应的场景部分到目前为止还没有出现,或者如果出现了,没有有效的深度信息。这些空白区域无法通过几何方法进行重建,需要更复杂的修复技术。图5展示了从TUM基准测试的不同序列中选择的三个输入帧的合成图像。请注意动态内容已成功分割和移除。此外,大部分分割部分已经正确地用静态背景的信息进行了修复。

        这些合成帧的另一个应用是:如果将帧的动态区域用静态内容进行修复,系统可以在静态假设下使用修复后的图像作为SLAM系统运行。

3 Experimental results

        我们已经在TUM RGB-D和KITTI的公共数据集上评估了我们的系统,并与其他最先进的动态环境下的SLAM系统进行了比较,尽可能使用原始论文中发布的结果进行比较。此外,我们还将我们的系统与原始ORB-SLAM2进行了比较,以量化我们的方法在动态场景中的改进。在这种情况下,一些序列的结果未被发布,因此我们自己完成了它们的评估。Mur和Tardos [1]建议对每个序列运行五次,并显示中位数结果,以考虑系统的非确定性特性。由于动态物体容易增加这种非确定性效应,我们对每个序列运行了十次。

A. TUM Dataset

        TUM RGB-D数据集[22]由使用Microsoft Kinect传感器在不同室内场景下以全帧率(30Hz)录制的39个序列组成。RGB和深度图像均可用,还提供了地面真实轨迹,最后由高精度运动捕捉系统记录下来。在名为sitting(s)的序列中,有两个人坐在桌子前说话和做手势,即运动度很低。在名为walking(w)的序列中,两个人在背景和前景中行走,然后坐到桌子前。这个数据集非常动态,对标准SLAM系统来说是一个极大的挑战。对于坐姿(s)和行走(w)这两种类型的序列,有四种类型的相机运动:(1)半球面(half):相机沿着1米直径半球面轨迹移动,(2)xyz:相机沿着x、y、z轴移动,(3)rpy:相机绕滚动、俯仰和偏航轴旋转,(4)静态:相机手动保持静止。

        我们使用绝对轨迹RMSE作为实验的误差度量标准,这是由Sturm等人提出的[22]。在这个数据集中,我们的系统的不同变体在六个序列上的结果如表I所示。首先,DynaSLAM(N)是只使用Mask R-CNN对先验动态对象进行分割的系统。其次,在DynaSLAM(G)中,动态对象仅通过基于深度变化的多视几何方法进行检测。第三,在DynaSLAM(N+G)中,动态物体的检测是通过结合几何和深度学习方法进行的。最后,我们认为分析图6所示的系统是有趣的。在这种情况下(N+G+BI),在跟踪和建图之前进行了背景修复(BI)阶段。这个实验的动机是,如果动态区域用静态内容进行修复,系统可以使用修复后的图像作为SLAM系统,在静止假设下运行。在这个提议中,ORB特征提取算法在帧的实际和重建区域中都能工作,在先前处理过的关键帧的关键点上找到匹配点。

        在相机定位之前,将背景修复阶段(BI)添加到跟踪中通常会导致跟踪精度降低。原因是背景重建与相机位姿密切相关。因此,对于纯旋转运动(rpy,半球体)的序列,估计的相机位姿误差较大,导致背景重建不准确。因此,背景修复阶段(BI)应在跟踪阶段完成后进行。背景重建的主要成就在于合成静态图像,用于虚拟现实或电影摄影等应用(图5)。从现在开始,DynaSLAM的结果都是最佳变体(N+G)的结果。

Fig. 6: Block diagram of RGB-D DynaSLAM (N+G+BI).
 

        表格II显示了我们在相同序列上与RGB-D ORB-SLAM2进行比较的结果。在高动态场景(行走)中,我们的方法优于ORB-SLAM2,达到了与原始RGB-D ORB-SLAM2系统在静态场景中相似的误差。在低动态场景(坐姿)中,跟踪结果略差,因为跟踪到的关键点距离动态物体的关键点更远。尽管如此,DynaSLAM的地图不包含出现在序列中的动态物体。图7显示了DynaSLAM和ORB-SLAM2的估计轨迹与真实轨迹的比较。

        表格III显示了我们的系统与几种专为动态环境设计的RGB-D SLAM系统的比较。为了评估我们的方法和最先进的运动检测方法(与使用的SLAM系统无关)的效果,我们还展示了相应的改进值,与每种情况下使用的原始SLAM系统进行比较。DynaSLAM在所有序列(高动态和低动态序列)中都明显优于其他系统。误差通常在1-2厘米左右,与静态场景中的最先进技术类似。我们的运动检测方法也优于其他方法。

        ORB-SLAM是ORB-SLAM2的单目版本,在动态场景中通常比RGB-D版本更精确,这是由于它们的不同初始化算法所致。RGB-D ORB-SLAM2从第一帧开始初始化并开始跟踪,因此动态物体可能会引入误差。ORB-SLAM推迟初始化直到存在视差和一致性,基于静态假设。因此,它不会在整个序列中跟踪相机,有时会错过其中的很大一部分,甚至无法初始化。

        表IV显示了ORB-SLAM和DynaSLAM(单目)在TUM数据集中的跟踪结果和跟踪轨迹的百分比。DynaSLAM的初始化速度始终比ORB-SLAM快。实际上,在高度动态的序列中,ORB-SLAM的初始化只会在移动物体从场景中消失时发生。总之,尽管DynaSLAM的准确性稍低,但它成功地利用动态内容启动系统并生成一个没有该内容的地图(参见图1),以便在长期应用中重新使用。DynaSLAM的准确性稍低的原因是估计的轨迹更长,因此存在累积误差的空间。

 B. KITTI数据集

        KITTI数据集[23]包含在城市和高速公路环境中从车辆录制的立体序列。表V显示了我们在十一个训练序列中与立体ORB-SLAM2相比的结果。我们使用了两种不同的度量标准,即[22]中提出的绝对轨迹RMSE和[23]中提出的平均相对平移和旋转误差。

        表VI显示了在相同序列中的ORB-SLAM和DynaSLAM的单目变体的结果。请注意,在单目和立体情况下,结果是相似的,但前者对动态物体(例如DynaSLAM中的额外内容)更敏感。在某些序列中,如果不使用属于先验动态物体(如车辆、自行车等)的特征,跟踪的准确性会得到改善。例如,KITTI 01和KITTI 04序列中的所有出现的车辆都在移动。在大多数录制的停车车辆和交通工具静止的序列中,由于用于跟踪的关键点距离更远并且通常属于低纹理区域(如KITTI 00、KITTI 02、KITTI 06),绝对轨迹RMSE通常较大。然而,循环闭合和重定位算法的工作更加稳健,因为生成的地图只包含结构性物体,即该地图可以重复使用并在长期应用中进行工作。

         作为未来的工作,使用只有RGB信息来区分可移动和运动中的物体是有趣的。如果通过CNN检测到一辆车(可移动),但目前未运动,则应使用其相应的关键点进行局部跟踪,但不应包含在地图中。

C. Timing Analysis

        为了完成对我们提出的方法的评估,表VII显示了不同阶段的平均计算时间。请注意,DynaSLAM并不针对实时操作进行优化。然而,其能够创建终身地图的能力对于离线模式运行也是相关的。 Mur et al.展示了ORB-SLAM2的实时结果[1]。He et al. [19]报告了Mask R-CNN在Nvidia Tesla M40 GPU上每张图像运行195毫秒。 多视图几何阶段的添加导致额外的减速,主要是由于区域增长算法。背景修复也会引入延迟,这是在跟踪和建图阶段之后进行的另一个原因,如图2所示。

4 Conclusions

        我们提出了一种基于ORB-SLAM的视觉SLAM系统,该系统添加了一种运动分割方法,使其在单目、立体和RGB-D相机的动态环境中具有鲁棒性。我们的系统能够准确地跟踪相机并创建一个静态且可重复使用的场景地图。在RGB-D情况下,DynaSLAM能够获取没有动态内容和遮挡背景修复的合成RGB帧,以及它们对应的合成深度帧,这对虚拟现实应用非常有用。我们还包括了一段展示DynaSLAM潜力的视频。 与当前最新技术相比较,DynaSLAM在大多数情况下都能达到最高的准确度。在TUM动态物体数据集中,DynaSLAM目前是最好的RGB-D SLAM解决方案。在单目情况下,我们的准确度与ORB-SLAM相似,但能更早地初始化场景静态地图。 在KITTI数据集中,DynaSLAM的准确度略低于单目和立体ORB-SLAM,除非动态物体在场景中占据重要部分。然而,我们估计的地图只包含结构对象,因此可以在长期应用中重复使用。 未来对这项工作的拓展可能包括实时性能、基于RGB的运动检测器,或者使用更精细的修复技术(例如GANs)更真实地合成RGB帧,使用了Pathak等人的方法[24]。

猜你喜欢

转载自blog.csdn.net/qq_41921826/article/details/131352146