动态SLAM论文(3) — Detect-SLAM: Making Object Detection and SLAM Mutually Beneficial

目录

1 Introduction

2 Related Work

3 Detect-SLAM

3.1 移动物体去除

3.2 Mapping Objects

3.3 增强SLAM检测器

4 实验

4.1 动态环境下的鲁棒SLAM

4.2. 提升检测性能

5 结论


Abstract:近年来,在SLAM和目标检测方面取得了显著进展,但仍存在一系列挑战,例如在动态环境中进行SLAM和在复杂环境中检测目标。为了解决这些挑战,我们提出了一种新颖的机器人视觉系统,将SLAM与基于深度神经网络的目标检测器集成在一起,使这两个功能相互受益。所提出的系统能够在未知和动态环境中可靠高效地完成任务。实验结果表明,与最先进的机器人视觉系统相比,所提出的系统具有三个优点:i)利用目标检测器从移动物体中去除不可靠的特征,极大地提高了SLAM在动态环境中的准确性和鲁棒性; ii)利用两个功能的协同作用,在线构建环境的实例级语义地图,用于进一步的语义应用; iii)利用目标地图,改进了目标检测器,使其能够在更具挑战性的条件下有效地检测/识别目标,如不寻常的视角、光线不足和运动模糊。

1 Introduction

        近年来,在SLAM和基于图像的物体检测领域取得了巨大进展。作为一个广泛研究的课题,已经提出了许多基于视觉的SLAM系统,其定位精度可达几厘米,并且能够实时构建大规模的三维地图[5, 12, 18]。随着深度卷积神经网络(CNN)的最新发展,基于图像的物体检测性能得到了提升[14, 24, 26]。然而,这两个功能各自在单独运行时的性能和应用受到一系列棘手的问题的限制。例如,SLAM系统通常在动态环境中容易失败,检测器对视角变化、遮挡等都很敏感[22]。然而,这两个任务可以相互补充:SLAM旨在从视频中估计环境的自运动和几何特征;物体检测器通过在实例周围放置一个预定义对象类别的边界框来表示图像的语义信息。直观上,提出了一个问题,即是否可能将SLAM与物体检测器集成到一个系统中,以共享几何信息和语义理解,使它们相互受益?

        受到将SLAM与物体检测相结合的最近成功启发[2, 3, 7, 21, 32],我们提出了一个新颖的框架Detect-SLAM,它将视觉SLAM与基于深度神经网络(DNN)的物体检测器集成起来,使它们相互受益。

        在Detect-SLAM中,我们利用语义信息来消除SLAM流程中移动物体引起的负面影响。为了克服通信和检测引起的语义信息延迟,我们提出了一种实时传播每个关键点移动概率的方法。在SLAM流程中,我们还构建了一个对象地图,即由映射线程中所有检测到的静态对象组成的语义地图。这样的对象地图可以被视为包含有关对象类别和位置的知识的数据库。使用这个地图,机器人可以执行诸如“从最近的桌子把书给我”这样的命令,或者回答关于情景语义的查询,比如“我们房间里有多少个显示器?”为了增强物体检测器在更具挑战性的条件下的工作,如异常视角、光照条件差和严重遮挡,我们利用对象地图作为检测器的先验知识,并将对象地图投影到2D图像平面上进行时空一致的对象区域提案。这样增强的SLAM检测器可以用来在这些具有挑战性的条件下挖掘困难的样本,这些困难的样本随后可以用作训练数据,以改进/微调原始的深度检测器。

        据我们所知,这是第一个将SLAM和基于DNN的检测器结合起来,同时完成三个视觉任务:提高SLAM在动态环境中的鲁棒性,构建语义地图,增强物体检测性能,如图1所示。

图1. Detect-SLAM的框架。它由移动物体去除、物体检测、SLAM增强检测器和映射物体组成。输入数据是RGB-D图像。移动物体去除包含ORBSLAM的跟踪和局部建图线程。深度检测器(SSD)在GPU上运行,其他部分在CPU上运行。       

 在Detect-SLAM中,我们使用ORB-SLAM [18]和Single Shot Multibox Object Detector (SSD) [14]。ROS [23]接口用于系统组件之间的通信,使得在移动设备和GPU设备上实时分布Detect-SLAM变得简单。

2 Related Work

        SLAM:在大多数先前的SLAM系统中[36,11,34],核心假设是环境大部分是静态的,相机是场景中唯一移动的对象。然而,在室内或室外,这些理想情况很难实现[9,37]试图将那些移动的对象,主要是人,视为异常值,并从环境表示中移除它们。其他一些SLAM系统,如[13、16、17、35],使用将SLAM系统与对象跟踪和检测相结合的框架,以提高在动态环境中的定位精度。

        在近年来,仍然使用这样的结合SLAM和检测的框架。与我们的工作最相关的是Paschalis等人的工作[20]和Sun等人的工作[33]。这两项工作都是逐帧检测移动物体,而不像我们的系统那样构建移动物体模型。Paschalis等人的工作[20]关注于3D点云,而Sun等人的工作[33]关注于2D图像块。它们都包括分割,并额外获取移动物体的掩模,但我们的系统省略了这些操作,并通过更新特征的移动概率来过滤属于移动物体的特征,这意味着我们的方法是基于特征级别的表示,可能更稳健和高效。

        基于深度神经网络的目标检测:随着深度神经网络的进步[8,14,24,25,26],基于图像的目标检测的准确性得到了提高[1,10]。Faster R-CNN[26]是最准确的深度神经网络之一,在PASCAL VOC数据集上具有超过80%的平均准确率(mAP),这取决于区域建议算法[6]。Redmon等人设计了一个统一的架构用于YOLO[24]及其改进模型YOLOv2[25],使得YOLOv2成为最快的网络之一,可以以91FPS处理图像,在PASCAL VOC数据集上具有69%的mAP或40FPS在PASCAL VOC数据集上具有78.6%的mAP[6]。单射多框物体检测器(SSD)[14]是第一个基于深度神经网络的实时目标检测器,在PASCAL VOC数据集上实现了超过70%的mAP[6],在TitanX上以40FPS运行。这个检测器在速度和准确性之间取得了良好的平衡,因此我们将SSD部署为我们的Detect-SLAM中的检测器模块。

        然而,在与SLAM通信或将其部署在嵌入式系统中时,很难实现实时性能。为了克服SLAM和检测器之间的延迟,我们避免逐帧检测,并考虑连续帧之间的时空一致性。

        结合SLAM和目标检测:先前的工作 [3,21,29] 将 SLAM 或 SfM 技术与目标检测相结合,以解决SLAM和识别中的问题。Pillai等人 [21] 设计了一个受 SLAM 支持的对象识别系统,表现出色。McCormac等人[15]将 SLAM 与 CNN相结合,高效地生成语义3D地图。Bowman等人[2]将离散识别和数据关联问题与连续SLAM优化相结合,形成一个优化问题,从而得到更准确的轨迹。Duncan等人[7]提出了一种基于单目摄像头的方法,结合物体探测器来解决传统单目SLAM系统中的。

3 Detect-SLAM

        在本节中,我们将介绍Detect-SLAM的技术细节。在Detect-SLAM中,我们将基于深度神经网络的目标检测器整合到SLAM系统中,如图1所示。Detect-SLAM是基于ORB-SLAM2[18]构建的,它包括三个主要的并行线程:跟踪、局部建图和闭环检测。与ORB-SLAM2相比,Detect-SLAM包括三个新的过程:

  • 移动物体去除,过滤掉与移动物体相关的特征。
  • 物体建模,在关键帧中重建检测到的静态物体,物体地图由分配了物体ID的密集点云组成。
  • 增强型SLAM检测器,在具有挑战性的环境中利用物体地图作为先验知识来提高检测性能。

3.1 移动物体去除

        在移动物体去除方面,我们修改了ORB-SLAM2中的跟踪和局部建图线程,以消除移动物体的负面影响,如图 3 所示。需要注意的是,在这个过程中的移动物体属于可移动类别,它们可能目前或将来会移动,比如人、狗、猫和汽车。例如,一旦检测到一个人,无论是走路还是站立,我们都认为它是一个潜在的移动物体,并删除在图像中检测到人的区域内的特征。

        关于增强型SLAM的一个关键问题是目标检测的效率。目标检测过程应该足够快,能够实时地对每帧进行检测,以便在SLAM的逐帧跟踪过程中去除不可靠的区域。然而,纯粹地在每一帧中应用检测器并不可行,因为即使是最先进的SSD[14]方法在我们的初步实验中也只能以约3帧/秒的速度运行。

        在本节中,我们提出了两种策略来有效地解决这个问题:1) 仅在关键帧中检测移动物体,然后更新局部地图中的点的移动概率以加速跟踪线程;2) 通过特征匹配和匹配点的扩展来传播移动概率,在相机位姿估计之前高效地去除提取在移动物体上的特征。

        我们将特征点属于移动物体的概率称为移动概率。如图 2 所示,我们根据移动概率将这些特征点区分为四个状态。在匹配点扩展中,我们使用高置信度点将移动概率传播到那些相邻的未匹配点上。在每个点通过传播得到移动概率后,我们移除所有动态点,并使用RANSAC来过滤其他的外点以进行位姿估计。

 图2 移动概率将这些特征点区分为四个状态

        更新移动概率。考虑到检测的延迟和连续帧的时空一致性,我们只选择关键帧的彩色图像进行检测,如图3所示。关键帧选择的规则与ORB-SLAM2相同。然后,我们通过深度神经网络对彩色图像进行预处理和前向传播,同时在跟踪线程中逐帧传播移动概率。一旦获取到检测结果,我们将关键帧插入到局部地图中,并更新局部地图中的移动概率。我们根据以下公式更新关键帧中已找到匹配关键点的3D点的概率:

        其中,是上一个关键帧中3D点更新后的移动概率。如果是一个新点,我们将。关键帧中与匹配关键点的状态为,它取决于检测区域。如果关键点xi在移动物体的边界框中,我们将其视为确定的动态点,其状态值。其他的点被视为确定的静态点,状态值为。α是一个影响因子,用于平滑即时的检测结果。较高的值意味着对即时的检测结果更敏感,较低的值意味着考虑多视角的更多历史结果。在我们的实验中,我们将α设置为0.3,原因是我们观察到检测器在复杂环境中有时会提供错误的结果。

 图3 消除移动物体的过程

        移动概率传播。在跟踪线程中,我们通过两个操作逐帧估计每个关键点的移动概率:1) 特征匹配和  2) 匹配点扩展。我们称之为“移动概率传播”,因为当前帧中的移动概率是从上一帧的关键点中传播而来的,而无需了解检测的任何知识。图4显示了符号中移动概率传播的细节。

        特征匹配。我们使用与ORB-SLAM2相同的特征,利用ORB特征的鲁棒性和效率进行特征匹配[28]。在特征匹配过程中,当关键点xit与上一帧中的另一个关键点xit−1匹配时,移动概率Pt(xit−1)被传播。

        运动概率传播。在跟踪线程中,我们通过两种操作:1)特征匹配和  2)匹配点扩展来逐帧估计关键点的运动概率。我们将其称为“运动概率传播”,因为当前帧中的运动概率是从上一帧的关键点传播而来的,而且没有任何关于检测的知识来自本地地图中的点。图4显示了符号中运动概率传播的详细信息。

 图4 运动概率传播的信息

        特征匹配。我们使用与ORB-SLAM2相同的特征,以利用ORB特征的鲁棒性和效率[28]。在特征匹配过程中,当一个关键点xi t与上一帧的关键点匹配时,运动概率被传播。

        除此之外,一旦一个关键点与本地地图中的任何3D点匹配,它也被分配一个运动概率,该运动概率等于匹配点的值。请注意,如果一个点不仅在上一帧中找到匹配点,而且在本地图中也找到匹配点,则应优先考虑本地图的概率。我们为这一帧中其他未匹配点分配一个初始概率。初始概率设置为0.5,因为我们对这些点属于哪个状态没有先验假设。

        我们总结了使用特征匹配来传播运动概率的操作,如下所示:

        其中分别表示点的ORB特征。θ 是特征匹配的阈值。

        匹配点扩展。该操作旨在将运动概率从高置信度点扩展到其他在特征匹配操作中没有对应匹配点的邻近点上。它基于这样一个假设,即大多数情况下,邻域中点的状态是一致的。

        因此,在通过特征匹配传播后,我们选择高置信度点,包括静态点和动态点。然后,我们将高置信度点的影响区域扩展到半径为 r 的圆形区域,并在该区域内寻找未匹配的点。找到的点的概率根据以下规则更新:

        其中是初始运动概率。如果一个点受到多个高置信度点的影响,我们将计算这些邻近高置信度点的所有影响之和。我们考虑高置信度点的影响时,考虑到运动概率的差异和距离因子。如果一个点在高置信度点的影响区域内(d ≤ r),距离因子,其中C是一个常数值;否则(d > r),

3.2 Mapping Objects

        在SLAM系统中,构建地图是其核心能力,但大多数地图都是以像素或低级特征的形式构建的,缺乏语义信息。最近,随着目标检测的进展,利用目标检测器创建支持语义地图变得更加有前景。在这个过程中,我们重建一个包含所有检测到的对象的目标地图。地图中的每个3D点都被分配一个对象ID以进行识别。该过程的流程如图 1 所示。
        最初的ORB-SLAM只构建稀疏地图,旨在提高定位精度。而对于语义地图而言,这样的稀疏地图对于进一步的应用来说是不够的。因此,我们在现有的基于RGB-D的ORB-SLAM之上构建,并插入一个密集点云映射器,类似于其他一些基于RGB-D的密集建图解决方案[4]。
        预测区域ID。在映射过程开始时,我们预测图像空间中每个检测到的区域的对象ID。区域ID预测的目的是找到对象地图中的相应对象ID,或者如果该对象是首次检测到,则生成一个新的对象ID。对象ID的预测基于几何假设,即如果两个区域都属于同一对象,则其投影和检测的区域应该有重叠。因此,我们计算两个区域之间的交并比(IOU)来表示重叠的程度:

其中R1是检测到的区域,R2是对象地图投影的区域。
当我们发现两个区域重叠(IOU > 0.5)时,我们估计它们之间的深度可能性:

其中 error(depth) 是重叠区域中观测到的深度和投影深度之间的均方误差。

其中 Do(u, v) 和 Dp(u, v) 表示像素(u, v)中观测到和投影的深度。N是投影到重叠区域R1 ∩ R2中的点云的数量。
        如果深度可能性高于阈值θd,我们将投影区域的对象ID分配给检测到的区域。相反,我们为该区域分配一个新的对象ID。
        切割背景。尽管检测器提供了图像中对象的边界框,但它是一个包含一些意外背景的矩形框,无法用于构建干净的对象地图。因此,我们使用 Grab − Cut[27] 算法切割背景,将先前重建对象在重叠区域中的投影点作为前景的种子,将边界框之外的点作为背景。然后,在三个迭代之后从边界框中获取目标对象的分割掩码。

        重建。利用对象掩码,我们创建了赋有对象ID的对象点云并在3D空间中过滤噪点。最后,我们使用相机位姿将对象点云转换成世界坐标,并将其插入到对象地图中。

3.3 增强SLAM检测器

        语义地图不仅可以用于优化轨迹估计[2,15],还可以改进目标检测器[21]。与传统的逐帧目标检测方法不同,机器人在其环境中多次观察到对象的相同实例,并且从不同的视点观察。通过将重建的3D上下文的几何信息提供给目标检测器,可以自然地改进目标检测器,从而确保目标检测器在空间上保持一致。当目标检测器由重建的对象地图和精确估计的相机姿态支持时,它被增强。

        区域提取。在增强SLAM目标检测器中,通过使用由跟踪估计得到的当前相机姿态将3D对象地图M投影到2D平面上,提议出每个对象的区域。使用投影图像,我们通过将具有相同对象ID的像素进行聚类,提出可能包含对象的候选区域。由于构建对象地图时,对象地图中的点云被对象ID标记,因此在投影图像中,每个对应的像素自然地获得相同的对象ID。在这种情况下,每个区域的对象ID可以直接识别。

        区域过滤。但是仍然会提出一些意外的区域,例如由噪点云引起的一些小区域或包含遮挡对象的区域。因此,在区域检查器阶段,我们排除面积小于20×20像素的候选区域,并估计观察深度和投影深度之间的相似度来检测遮挡的候选区域。在深度中,候选区域的相似度与区域相似度函数(方程式5)类似,不同之处在于常数IoU = 1。

        困难样本挖掘。之前的研究[30]已经证明,选择困难样本来训练或微调深度神经网络可以显著提高检测性能。为了使不带有SLAM的深度检测器更好地工作,我们应用增强SLAM目标检测器来挖掘困难样本,从而增加训练数据。然后,我们微调原始的SSD网络,以提高相似场景下的检测性能。困难样本的实例显示在图7中。

 图7 困难样本的实例显示

4 实验

        在我们的系统中,我们使用Python实现了基于DNN的检测器,并使用C++实现了其他进程。我们使用预训练的基于Inception v3的SSD模型作为我们的深度检测器,并使用基于RGB-D的ORB-SLAM作为我们的基本SLAM系统。SSD和SLAM之间的通信使用机器人操作系统[23]实现。所有实验均在实时环境中进行。

        我们评估了系统的两个主要功能,即移动物体去除和SLAM增强检测器。由于数据集的不完整性,我们没有评估物体地图。但是,SLAM增强检测器的性能提升可以被视为物体地图的一个积极证明。我们的系统在一台搭载16GB RAM和Nvidia GPU GTX960M的Intel Core i7-4700笔记本电脑上实时运行。GPU仅用于深度检测器。

4.1 动态环境下的鲁棒SLAM

        在本节中,我们在TUM RGB-D数据集上展示了基于检测器的移动物体去除方法。Sturm等人[31]使用RGB-D Kinect相机收集了多个视频序列来评估RGB-D SLAM系统。他们还提供了相机轨迹,这些轨迹是从高精度运动捕捉系统获取的。相机自身运动有各种模式,例如沿着x、y、z轴移动,绕着滚动-俯仰-偏航轴旋转,以及沿着半球形轨迹移动。该数据集包含了几个典型的动态场景。例如,在fr3/w/rpy序列中,两个人在桌子周围走动,同时相机进行旋转。由于可见场景的大部分是动态的,这是一个非常困难的任务。

        ORB-SLAM被认为是在静态和低动态场景下产生良好结果的最先进方法,而我们的方法将其应用场景扩展到了高动态场景。为了评估我们的移动物体去除方法的有效性,我们在实验中选择了七个高动态序列、两个低动态序列和一个静态序列。

        图4.1显示了使用TUM数据集计算出的我们系统的一些轨迹示例,与地面真值和原始基于RGB-D的ORB-SLAM[19]进行了比较。从质量上看,我们可以看到,与ORB-SLAM相比,我们估计的轨迹在这些动态环境中更接近于地面真值。当一个人经过相机时,原始的ORB-SLAM恢复的轨迹严重漂移,因为ORB-SLAM将人体中的特征视为静态地标。相比之下,我们的方法在运动估计之前成功地过滤掉了这些移动特征,如图8(d)、8(e)和8(f)中的红色点所示。

        为了定量比较,我们对每个系统的序列运行5次,并计算中值,以考虑多线程系统的非确定性特性。结果的总体比较总结在表1中,其中包括基于RGB-D的ORB-SLAM的原始方法、在动态场景中用于RGB-D SLAM的运动去除方法[33](表示为MR)、我们的方法去除最后一个关键帧匹配的部分(表示为Ours1),以及我们的完整方法(表示为Ours2)。为了简洁起见,我们在序列名称中使用fr、half、w、s、d、v作为freiburg数据集、半球体、行走、坐下、写字桌、验证的代表词。

        正如我们所看到的,原始的ORB-SLAM在具有挑战性的动态场景中的适用性有限。 运动去除方法[33]在动态场景中的表现要比原始的ORB-SLAM好得多,但仍然无法与静态场景中的ORB-SLAM产生的结果相媲美。 相反,我们的方法获得了可比较的结果。 它不仅验证了语义信息可以使基于特征的SLAM更加稳健的直觉,还验证了我们在处理一些具有挑战性的动态场景中的实用措施的可用性和有效性。

        此外,通过将Ours1与Ours2进行比较,我们可以发现从最后一帧中传播移动概率以逐帧跟踪移动特征是必要且有意义的,以防止检测延迟导致本地地图中的点的移动概率无法及时更新,特别是当对象移动较大时。此外,我们还调查了移动概率传播、本地映射中的移动概率更新和对象检测的运行时性能。请注意,检测的运行时间包括将关键帧发送给检测器、预处理图像、在深度神经网络中进行特征传播以及将结果反馈给SLAM系统。考虑到原始的ORB-SLAM已经进行了特征匹配操作,所以我们仅计算额外的运行时间,不包括特征匹配。与其他过程相比,检测是耗时的,但只会在插入新关键帧时发生。移动概率传播有效地保持了跟踪线程的实时运行。我们在表2中总结了我们方法的运行时间。

4.2. 提升检测性能

        我们从TUM数据集的15个序列中收集了200个关于显示器的困难样例,以及从我们办公室的5个序列中收集了150个关于盆栽植物的困难样例,用于微调SSD网络,以使物体检测器对于物体的形变或者观察角度的变化时的运动模糊更加稳健。在微调网络时,除了框预测层外,所有的卷积特征层都被固定。

        为了评估检测器的改进情况,我们选择并标注了两个序列(fr2/desk和fr1/plant)。它们分别拍摄了一台显示器和一棵植物,观察角度发生了较大的变化,并且其中一些观察到了局部物体。在fr2/desk中,显示器偶尔会被其他物体遮挡。在fr1/plant中,我们可以发现由于相机移动而导致的大量模糊图像。因此,为了提高这些序列中的检测性能,检测器必须克服包括局部观察、运动模糊和遮挡在内的多种挑战。

        在实验中,我们可以看到当置信度阈值设置为0.7时,三种方法提出的大多数边界框都是精确的。但在大多数挑战情况下,原始的SSD错过了目标对象,但我们的方法检测到了它。定量上,我们对这两个序列中三种检测器对目标对象的召回率进行了比较,如表3所示。我们可以看到,我们的联合方法和微调方法都扩展了显示器可观测视角。同时建立的物体地图导致了增强的SLAM检测器性能的巨大提升。收集的困难样例也改进了经过微调的SSD。我们系统提出的准确边界框也证明了定位的准确性和物体地图的正确性。

图9 第一幅图像(a)可视化了在一个圆圈中成功检测到监视器的方向。蓝色、黄色和绿色扇区分别代表原始SSD、微调后的SSD和我们增强的SLAM检测器。从图中可以看出,增强的SLAM检测器覆盖了大部分方向,经过微调后的SSD表现更好。其他三幅图像表示了从不同方向和位置观察监视器的结果。

5 结论

        本文介绍了一种名为Detect-SLAM的新型耦合框架,将目标检测器和SLAM系统相互融合,使它们在一个系统中互惠互利。Detect-SLAM能够在动态场景中进行精确定位,构建语义化的目标地图,并且能够稳健地检测/识别目标物体。在TUM数据集上的实验证明了我们的SLAM和目标检测系统的有效性。通过目标地图,SLAM增强的检测器对于运动模糊和非常规视角具有很强的鲁棒性。此外,我们将该系统应用于在TUM数据集中出现的监视器和植物等难例的挖掘,并进行了SSD网络的微调。

猜你喜欢

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