论文笔记:DynaSLAM: Tracking, Mapping, and Inpainting in Dynamic Scenes

14 篇文章 0 订阅
7 篇文章 1 订阅

1、Abstract

1、目前slam的限制:刚性场景的假设,在人口稠密的现实世界环境中的使用困难;
2、基础背景:建立在ORB-SLAM2的基础上增加了动态对象检测和背景修复的能力
3、实现方式:多视角几何、深度学习或两者兼有来实现;
4、达到的效果:拥有场景的静态地图允许修复被这种动态对象遮挡的帧的背景。还可以估计场景静态部分的地图,这对于现实环境中的长期应用是必不可少的。

2、Introduction

文中抛出两个问题:

  1. 如何在图像中检测这样的动态对象?
    a)防止跟踪算法使用属于动态对象的匹配。
    b)防止建图算法将移动对象作为地图的一部分。动态对象不可以被建入地图!
  2. 如何修复被移动对象暂时遮挡的部分?
    文中处理办法:
    在ORBSLAM2中添加一个前端来实现,目的是获得更精确的跟踪和可重用的场景地图。在单目和多目情况下,我们的建议是使用CNN逐像素分割帧中的动态对象,这样SLAM算法就不会提取它们的特征。在RGB-D的情况下,将多视图几何模型和基于深度学习的算法相结合来检测动态对象,并在图像中移除它们之后,用场景的正确信息来修复被遮挡的背景。

3、Related Work

  1. 基于特征点的SLAM方法:
    a) 将地图特征点投影到当前帧中以进行外观和结构验证,来检测场景中发生的变化。[9]
    b) 跟踪场景中已知的3D动态对象,例如,人。[10,11]
    c) 使用深度边缘点,具有指示其属于动态对象的概率的相关权重。[12]
  2. 直接法(对场景中的动态对象更敏感):
    a) 通过立体相机的场景流表示来检测运动物体;[13]
    b) 使用RGB光流分割场景中的动态对象[14]
    c) 通过计算投影在同一平面上的连续深度图像之间的差异来获得场景的静态部分。[15]
    d) 计算连续RGB图像之间的强度差异。像素分类是通过量化深度图像的分割来完成的。[16]
  3. 作者解决问题——动的变静止,静的动起来。
    a) 当动态对象保持静态时,需要把这个动态对象标记出来,例如,人、车;[9],[12-17]
    b) 以前的工作能检测到动态物体的变化,但是无法检测到静态物体发生变化。[10,11]
    c) [18]结合动态分类器和多视图几何来分割动态对象,作者可能在这个基础上换上了CNN[18]

4、System Description

在这里插入图片描述

在多目和单目时(黑色实线),图像在用于建图和跟踪之前,通过卷积神经网络来计算动态对象的像素级语义分割。
在RGB-D的情况下(黑色虚线),增加了基于多视图几何的方法,用于更精确的运动分割,为此我们需要一种低成本的跟踪算法。
一旦相机的位置已知(跟踪和建图输出),我们就可以修复被动态对象遮挡的背景。
红色虚线表示存储的稀疏地图的数据流。
  1. 在RGB-D情况下,我们使用多视图几何以两种方式改进动态内容分割。首先,我们优化以前由CNN获得的动态对象的分割。其次,我们将大多数时间是静态的新对象实例标记为动态的(即,检测在CNN阶段未设置为可移动的移动对象)。
    为此,有必要知道相机姿态,在已经创建的场景图中定位相机。这些分割的帧是用于获得相机轨迹和场景地图的帧。请注意,如果场景中的移动对象不在CNN类别内,多视图几何阶段仍将检测动态内容,但精度可能会降低。
    一旦完成了相机的这种完全动态的目标检测和定位,就可以利用来自先前视图的静态信息重建当前帧的被遮挡的背景
    在单目和多目的情况下,图像被CNN分割,这样属于动态对象的关键点既不会被跟踪也不会被用于建图。

A. Segmentation of Potentially Dynamic Content Using a CNN

使用像素级语义分割CNN检测动态对象,即Mask R-CNN[19],这是对象实例分割的最新技术。该技术可以获得像素级语义分割和实例标签。对于这项工作,我们使用像素语义分割信息,但实例标签在未来的工作中可能有助于跟踪不同的移动对象。我们使用Matterport的TensorFlow来实现。
Mask R-CNN的输入是RGB原始图像,分割那些潜在的动态或可移动的类(人、车等)。文章认为,对于大多数环境,可能出现的动态对象都包含在该列表中。如果需要其他类,可以用新的训练数据来微调在MS COCO上训练的网络[20]。
假设输入是大小为m × n × 3的RGB图像,网络的输出是大小为m × n × l的矩阵,其中l是图像中对象的数量。对于每个输出通道i ∈ l,用一个二进制数表示。通过将所有通道合并成一个通道,我们可以获得一幅图像中出现的所有动态对象的分割。

B. Low-Cost Tracking

在潜在的动态内容被分割后,使用图像的静态部分来跟踪相机的姿态。由于分割轮廓通常会成为高梯度区域,因此会出现显著的点特征。我们不考虑这些轮廓区域的特征
在算法的这个阶段实现的跟踪比ORB-SLAM2 [1]中的跟踪更简单,因此计算量更小。它在图像帧中投影地图特征点,在图像的静态区域中搜索对应关系,并最小化重投影误差以优化相机姿态

C. Segmentation of Dynamic Content Using Mask R-CNN and Multi-View Geometry

通过使用Mask R-CNN,大多数动态对象可以被分割,而不用于跟踪和建图。然而,有些物体不能用这种方法检测到,因为它们不是动态的,而是可移动的。最新的例子是某人携带的一本书,某人正在移动的一把椅子,甚至是长期测绘中的家具变化。本节详细介绍了处理这些案例的方法。
对于每个输入帧,我们选择具有最高重叠的以前的关键帧。这是通过考虑最新帧和每个关键帧之间的距离和旋转来完成的,类似于Tan等人[9]。在我们的实验中,重叠关键帧的数量被设置为5,作为动态对象检测中计算成本和准确性之间的折衷。
然后我们计算每个关键点x,从前一个关键帧到当前帧的投影,得到关键点x′以及根据相机运动计算的投影深度zproj。Note,关键点x来自ORB-SLAM2中使用的特征提取算法。对于每个关键点,其对应的三维点是X,我们计算x′和x向后帧重投影之间的视差角α。如果这个角度大于30°,该点可能会被遮挡,从此将被忽略。我们观察到,在TUM数据集中,对于大于30°的视差角,静态对象由于其视角差异而被认为是动态的。我们获得当前帧z′中剩余关键点的深度(直接来自深度测量),考虑到重投影误差,我们将其与zproj进行比较。如果差值δz = zproj - z′,是超过阈值τz,关键点x′被认为属于动态对象。这个想法如图3所示。
为了设置阈值τz,我们在TUM数据集中手动标记了30幅图像的动态对象,并评估了我们的方法对于不同阈值τz的精度和召回率,通过最大化表达式:0.7 × Precision+ 0.3 ×Recall,我们得出τz= 0.4m是一个合理的选择。
Note:计算每一个关键点向最新帧的重投影点x′,然后计算视差角,大于30度由于可能会被遮挡,被忽略掉;然后根据剩余关键点深度,计算δz = zproj - z′,超过阈值τz,关键点x′被认为属于动态对象,阈值为经验值:τz= 0.4m。
一些标记为动态的关键点位于移动对象的边界上,可能会导致问题。为了避免这种情况,我们使用深度图像给出的信息。如果一个关键点被设置为动态的,但是深度图中围绕其自身的这片区域具有很高的方差,我们将标签更改为静态的。Note:阈值为多少,没有交代
到目前为止,我们知道哪些关键点属于动态对象,哪些不属于。为了对所有属于动态对象的像素进行分类,我们在深度图像中稍微扩大了动态像素周围的区域[21]。在图4(a)中可以看到RGB帧及其对应的动态掩模的例子。
Note:MVG和Deep learning两种方法结合,使得区域扩大了?
CNN的结果(图4b)可以与这种用于全动态对象检测的几何方法的结果(图4c)相结合。我们可以发现这两种方法的优点和局限性,从而找到它们结合使用的动机。对于几何方法,主要问题是初始化并不简单,因为它是多视图的。使用单一视图的深度学习方法,及其好的性能没有这样的初始化问题。但是,它们的主要限制是,我们认为是可以移动的静态对象,该方法不能识别它们。最后这种情况可以使用多视图一致性测试来解决。
这两种面对运动物体检测问题的方式如图4所示。在图4(a)中,我们看到后面的人没有被检测到,该人可能是动态对象。这有两个原因。首先,RGB-D相机在测量远处物体深度时面临的困难。第二,可靠的特征存在于图像的特定部分,因此也就在附近。尽管如此,这个人是通过深度学习方法检测到的(图4b)。除此之外,一方面,我们在图4(a)中看到,不仅检测到图像前面的人,还检测到他拿着的书和他坐的椅子。另一方面,在图4(b)中,两个人是唯一被检测为动态的对象,并且他们的分割也不太准确。如果只使用深度学习方法,图像中会留下一本漂浮的书,并错误地成为3D地图的一部分。
由于这两种方法的优点和缺点,我们认为它们是互补的,因此它们的组合使用是实现精确跟踪和映射的有效方法。为了实现这一目标,如果已经用两种方法检测到目标,则分割掩模应该是几何方法的分割掩模。如果仅通过基于学习的方法检测到对象,则分割掩码也应该包含该信息。在图4©中可以看到上一段中示例的最终分割图像。分割的动态部分将从当前帧和地图中移除。

D. Tracking and Mapping

系统的这个阶段的输入包含RGB和深度图像,以及它们的分割遮罩。我们在分类为静态的图像片段中提取ORB特征。由于线段轮廓是高梯度区域,因此必须移除落在此交叉点的关键点。

E. Background Inpainting

对于每一个被去除的动态物体,我们的目标是用以前视图中的静态信息来修复被遮挡的背景,这样我们就可以合成一个没有运动内容的真实图像。我们认为,这种包含环境静态结构的合成帧对于虚拟和增强现实等应用以及地图创建后的重新定位和相机跟踪非常有用。
因为我们知道前一帧和当前帧的位置,所以我们将所有前一关键帧(实验中的最后20个关键帧)的RGB和深度通道投影到当前帧的动态片段中。有些间隙没有对应关系,并且留空:有些区域无法修复,因为它们对应的场景部分到目前为止还没有出现在关键帧中,或者,如果出现了,它没有有效的深度信息。这些间隙不能用几何方法重建,需要更复杂的修复技术。图5示出了来自TUM基准的不同序列的三个输入帧的合成图像。请注意动态内容是如何成功分割和移除的。此外,大部分分割的部分已经用来自静态背景的信息进行了适当的修复。
这些合成帧的另一个应用如下:如果帧的动态区域用静态内容进行了修复,则系统可以在静态假设下使用修复的图像作为SLAM系统工作。

5、Conclusions

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

个人见解

该工作把动态物体识别出来后,修复背景,相当于把环境中的可移动和动态物体全给删除了,这样的做法对于slam的上层来说,不是等于失去了避障了么?是不是应该将这类物体只标记,暂时不去除,也不修复呢?

他人见解

如果在当前帧填充被遮挡的背景时,使用了上一帧的对应部分的像素,每次填充都会存在误差,那么被填充后的当前帧就是存在误差的,下一帧在做背景填充时要用到当前帧的对应部分,这样的话误差应该会被累积。。。?论文貌似没有提到这个问题。

文章缺点:

1、该方法选择去除所有有潜在运动可能的物体,如停在路边的汽车等。这可能会导致剩余的静止特征点过少而影响相机位姿估计
2、实时性!但是牺牲速度换取精度,未来是一个可取方案

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦在北灬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值