Semantic Visual SLAM in Populated Environments

Semantic Visual SLAM in Populated Environments

Abstract

我们提出了一个视觉SLAM(同时定位和地图)系统,能够在人口密集的环境中稳健地执行。来自移动的RGB-D相机的图像流是系统的唯一输入。实时计算的地图由两层组成:1)未填充的几何层,其将裸场景的几何描述为占用网格,其中对应于人的信息片段已被移除;2)语义人类活动层,描述每个人相对于未填充地图的轨迹,将一个区域标记为“可穿越”或“已占用”。
我们的建议是在系统中嵌入一个实时人体跟踪器。目的是双重的。首先,从刚性SLAM管道中屏蔽出人占据的图像区域,提高了存在人的场景中几何地图的鲁棒性、重定位性、准确性和可重用性。第二,估计每个检测到的人相对于场景图的完整轨迹,而不考虑人被成像时移动相机的位置。该方案用两个流行的可视化SLAM系统C2TAM和ORBSLAM2进行了测试,证明了其通用性。这些实验处理来自移动机器人上的相机的RGB-D序列的基准。它们证明了用于填充场景的两层地图的健壮性、准确性和重用能力。

1. INTRODUCTION

我们的建议是在视频流的每一帧中检测和跟踪人(见图1),我们的第一个贡献是在SLAM处理中屏蔽掉那些对应于人类活动的图像区域。因此,我们恢复了没有屏蔽的图像区域的刚性先验的有效性,这些区域现在可以用标准的VSLAM算法成功地处理。添加了掩膜的帧融合在一个仅仅表示场景中没有人的几何刚性场景。我们称之为无人的地图。根据建议,无人的地图是一个密集的占用网格,计算为八叉树地图[1],该八叉树地图是在稀疏点特征匹配的集束调整[2],[3]后,通过融合一组选定的RGB-D关键帧而得到的,这些关键帧精确地位于公共参考中(世界参考系)。
我们的第二个贡献是利用视频流的每一帧中的人体检测和跟踪来构建一个语义的人类活动层,该层记录了每个人在无人地图范围内进入的轨迹。这是将无人地图提供的精确相机位置与帧速率下的实时人体检测相结合的结果。用移动的RGB-D相机观察场景,但是在地图上估计人的轨迹,而不管当人被成像时相机在哪里(见图1)。)语义层可用于人口环境中的自主机器人导航和规划。
论文的其余部分组织如下:第二节讨论相关工作。第三节描述了我们的系统。第四节介绍了实验结果,第五节总结了主要结论。

2. RELATED WORK

大多数语义建图方法关注静态对象,而不是移动对象。在[4]和[5]中,3D激光扫描用于增强具有语义信息的地图。使用来自立体相机的三维点,[6]构建地图,并通过插入与检测到的对象相对应的计算机辅助设计模型来丰富地图。近年来,将目标识别和视觉SLAM相结合以产生语义图的方法得到了广泛的研究。[7]和[8]融合了单目SLAM系统和物体识别,丰富了地图。在[9]中,还提出了一种组合方法,作者不仅计算对象在地图中的位置,而且将对象添加到优化过程中。最近的一项工作[10]将深度信息用于对象实例的建图和对象识别。[11]也使用RGB-D序列,但更进一步,因为识别的目标不是对象类,而是类别。他们创建一致的室内场景三维语义重建,并实时对每个体素进行分类,根据指定的类别为体素分配语义标签。然而,移除动态对象并对其进行注释并不是一个已经深入研究的问题。octopmap[1]由于其概率性,盲目移除移动对象;它最终会过滤掉移动的对象,但不包含被移除对象的语义信息。相比之下,我们的方法首先按类别识别对象,然后删除它们。它甚至能够处理静止的人。[12]也使用体积表示来处理移动对象,但是它们没有将关于这些对象的语义信息添加到地图中。在[13]中介绍了识别和移除在两个视图中找到对应的移动对象的初步工作。
在人类面前航行需要了解人类的运动。在[14]中,介绍了一系列人类感知导航的方法。[15]提出了实时人感知框架,使用基于激光和RGB-D数据的检测器和能够融合多个检测器的跟踪方法。
近几十年来,人类运动模式的研究变得越来越重要。[16]提出了一种对人体运动区域进行分类的方法,而[17]提出了一种使用预先训练的SVM作为分类器来识别和预测人的路径的方法。在[18]中,提出了一种用网格表示法模拟人体运动动力学的方法。然而,在这些方法中,与我们的方法相比,传感器在场景中始终保持静态。
人口密集环境中的人体检测和姿态估计是文献[19],[20],[21]中相当深入研究的问题。关于关节的主题,[22]提出了一个完全连接的图形模型来表示关节模型。[23]描述了一种基于零件模型表示的静态图像中人体姿态估计的通用方法。文献[24]提出了一种基于图形结构框架的关节位姿估计的通用方法。
[25]提出了一个数学框架,通过使用深度传感器来整合SLAM和移动物体。[26]提出了一种接近我们的方法,因为它们从几何处理中掩盖了检测到的人。然而,他们只计算视觉里程计,而不是建立完整的SLAM地图。此外,他们的重点是跟踪人,而忽略了现场无人地图。
我们的提议是一份系统论文,它建立在处理RGB-D图像的最先进的视觉SLAM系统,C2TAM [2]和ORBSLAM2 [27]的基础上。关于人员检测,我们集成了[28],因为它可以实时检测和跟踪移动机器人和头部摄像头。

3. SYSTEM DESCRIPTION

我们的提案在系统中集成了实时人员检测和跟踪阶段[28],使其能够在人口密集的环境中运行。人员检测与视觉SLAM的所有组件和阶段交互。我们在下面描述修改后的地图前端、后端、重定位和人类活动检测层。

A. Frontend process

主要组成部分是相机跟踪,只有相机姿态的六个d.o.f被优化。地图点没有优化。
重投影误差包括鲁棒核函数[30],该函数将任何具有大的重投影误差的匹配标记为异常值。如果异常率超过计算匹配的50%,相机位置估计很可能会失败。异常值对应于不匹配的点或不符合先前刚性的匹配。因此,人类活动使得相机估计更有可能失败。
我们建议识别对人类活动进行成像的帧区域,以便将它们屏蔽在相机跟踪处理之外。我们使用实时人员跟踪器[28]处理该帧,该跟踪器为每个检测到的人员生成一个边界框。边界框内的所有感兴趣的点都被屏蔽,以用于随后的匹配阶段(图3 (b))。通过掩盖人类身上的快速点,我们移除了可能是异常值的点,降低了异常值的比例,从而增加了相机位置估计成功的概率。
人物跟踪器通过简单地读取深度通道来提供每个被检测到的人相对于RGB-D相机帧的3D位置。此外,我们已经准备好了参考静态场景地图帧的每个人的轨迹,只需用相机跟踪提供的相机姿态合成相对于相机的人的位置。这种计算地图上人物轨迹的机制是地图语义人物活动层的主要组成部分。

B. Backend process

BA必须面对的主要挑战是离群值、局部极小值和收敛到最小值的高迭代次数。前端和后端之间的交织负责为非线性优化相互提供必要的初始猜测。当相机探索地图中尚未包括的新场景区域时,前端向后端发送一个新的关键帧,并初步猜测其位置。新关键帧和地图中已有的所有其他关键帧之间的低错误率的匹配集也可用于确定初始值。根据该初始信息,就可以鲁棒的匹配新的特征点去扩展刚性场景。同样,屏蔽掉与人类活动相对应的关键帧区域有助于降低新匹配中的异常率,从而提高鲁棒性。给定新的相机姿态估计,也可以估计新添加到地图的点的初始猜测。
稀疏地图M是BA的结果。它由一组l个关键帧{K1,K2,…,Kl}和n个3D稀疏特征点{P1,P2,…,Pn}。对于每个关键帧,估计相机位置为相对于世界帧W的刚体变换TWKj。关键帧还包含图像的相机深度通道,与地图的稀疏点相比,它可以提供场景的密集深度信息。一旦我们有了来自BA优化的准确的关键帧姿态TWKj,我们使用Octomap算法[1]将所有的深度图融合成一个单独的占用图。在融合之前,与人类活动相对应的深度区域也从关键帧中屏蔽掉,因此生成的八叉图不包含填充场景的人。这个人员移除过程不必是硬实时的,因此它是在后端执行的,并且只在关键帧上执行。未填充的地图可以很容易地在同一场景的未来观察中被重新使用,而不管人类活动的现在和未来。

C. Camera Relocation

第一步:从当前图像中屏蔽掉检测到的人,然后索引搜索匹配项,称为DBoW。搜索当前图像和可用地图之间的匹配。
第二步,使用类似RANSAC的方法恢复相机姿态。在建立数据库的过程中,与人类活动相对应的区域也从地图中屏蔽掉,因此也从数据库中被屏蔽掉。我们可以得出结论,人类活动检测和移除延长了地图重用的寿命,因为从数据库和查询中减少了虚假匹配的数量。

D. People detection and human activity layer

为了处理人类活动,我们使用[28]集成人员检测和跟踪阶段。图像中检测到的每个人都被编码为图像边界框,并创建唯一标识该人的标签。人相对于相机的3D位置被计算为边界框中心的位置和深度通道。所有这些信息都被计算并存储在前端。
当前端决定创建新的关键帧时,它会将关键帧发送到后端。此外,自最后一个关键帧以来的所有帧以及注册的所有信息也被发送到后端。包括的信息片段是帧的位姿和所有被检测出的人的实例。
后端生成人类活动语义层,该语义层由每个人相对于无人的静态地图的路径组成,而不管检测到人时相机在哪里。这些轨迹通过每个人相对于相机的3D位置的合成来计算,其中3D相机姿态由前端计算。后端每次迭代后,每个关键帧的位置都会更新。我们保持中间帧与关键帧的连接,以将关键帧的位置更新传播到中间帧,并从那里传播到每个人的轨迹,该轨迹以与未填充地图相同的速率更新。这些信息为地图的活动层添加了一个语义标签,作为人们的“占用区域”。该语义信息将被移动机器人用于在相同的环境中导航。

4. EXPERIMENTS

ROS + C++实现[33]。以24 fps的速率运行VSLAM系统和人员检测器。数据集(KTP)。这包含了在移动平台上用微软Kinect获得的5个不同序列,以及它提供了机器人进行轨迹绘制时的RGB-D图像,并且还包括机器人位置和人的检测。关于VSLAM系统,我们使用两种不同的类似PTAM的算法对我们的方法进行了测试,这两种算法分别适用于RGBD、C2TAM [2]和ORBSLAM2 [27]。两者都使用[28]进行人体活动检测。
表一给出了在两个KTP序列上运行的两个VSLAM算法的结果:“平移”和“弧”。在通过旋转和平移将计算的轨迹与地面真实情况对准之后,选择用于测量系统性能的度量是绝对轨迹误差。我们还包括成功定位的帧数,命名为“%跟踪的帧数”。我们用三种不同的人类活动检测配置运行序列:

  1. 无掩膜,其中人类活动检测和掩膜被停用;
  2. 地面真实掩膜,其中我们使用KTP提供的地面真实边界框检测,以便找到性能上限;
  3. 人员检测器屏蔽,通过该屏蔽,系统被馈送由[28]提供的真实人员检测。
    首先,我们可以看到所有配置的帧跟踪百分比非常相似。然而,如果对图像应用人类活动掩蔽,误差会减少一半以上,这证明了掩蔽的好处。此外,根据我们是使用地面真值检测或者人类或者人员检测,我们可以看到误差略有增加。这种误差的增加是最小的,证明我们接近性能上限。
    图4详细展示了“平移”和ORBSLAM2情况下整个序列中错误的演变。该图显示了人员检测器屏蔽(绿线)和无屏蔽(红线)的错误。图像中被人覆盖的区域也被绘制出来,作为人类活动的指标。相机定位误差与人类活动水平高度相关。选择四个代表性的帧来可视化这种相关性。在帧4(a) (#663)和4(d) (#1745)中,我们可以看到误差是如何由于人类活动的增加而增加的。场景中人物造成的图像遮挡程度越高,系统精度越低。甚至有遮挡级别非常高的情况(第4帧(d) (#1745)),以至于系统无法定位,并且相机丢失。此外,我们可以在第4(b)帧(#1109)中看到人类活动水平如何降低,因此误差也降低了。当图像中没有人时(第4帧© (#1391)),我们可以在图中看到误差是如何保持甚至减小的。
    为了验证相机重定位性能,我们在ORBSLAM2上运行了KTP数据集“Translation”和“Arc”序列,因为其基于词袋的重定位算法是最先进的。在场景探索阶段,我们在场景的第一部分(约300帧)运行了VSLAM系统。之后,我们关闭地图,并在序列的剩余部分中为每一帧强制相机重新定位。表二显示了应用于地图创建和后续重定位的不同遮罩选项的相机重定位性能的结果。当人类活动被掩盖时,我们可以看到ATE度量的改进。关于使用基本事实来掩盖人,ATE度量与实现的检测器实现的度量非常相似。我们还可以看到重新定位的帧的百分比如何随着人的掩蔽而下降,这是由于在没有掩蔽的情况下,一些帧没有被正确地重新定位,并且重新定位的帧的数量增加。
    图5展示了有(绿线)和没有(红线)遮蔽人的重定位误差的演变。在这种情况下,我们还可以看到误差和图像被人覆盖的面积之间的相关性。在图像被人覆盖的帧中,误差大于没有人的帧。此外,根据遮挡程度,重定位算法无法提供位置。我们可以得出结论,使用掩蔽技术可以提高相机的重新定位性能。
    关于几何层,图6显示了我们的C2TAM方法在对场景进行初步探索后所提供的改进(前350帧)。由于人物检测器提供的信息是关于图像中人物的位置估计,执行注释和从3D点云移除人物的过程。图6(b)显示了这一过程的结果。场景中的点数减少了30%,并且没有任何人出现在场景中的证据,这与图6(a)所示的原始重建形成对比,在图6(a)中,由于人而产生的伪像是明显的。
    将初始纹理对齐与octomap方法进行比较,我们可以在图中看到获得的贴图。在图6©中,使用来自与每个关键帧相关的3D点云的原始数据构建了一个八分图,没有遮罩。相比之下,使用我们的方法(图6©),构建的八分图掩盖了人的信息,甚至不包括静态的人。
    图7总结了所提出的VSLAM系统获得的结果。顶部图像显示了掩蔽后由C2TAM生成的稀疏地图(正视图和俯视图)。地图用于定位场景中的RGBD相机。在实验过程中,我们可以看到从刚性场景中提取的特征点和机器人遵循的相机轨迹。在底部图像中,我们还可以看到描述3D几何图形的未填充地图,其中对应于人物的信息已被移除。此外,还会显示定义语义层的人员轨迹。验证的完整视频可在1中找到。

5. CONCLUSIONS

由于在刚性视觉SLAM系统中嵌入了人体检测,因此有可能在人口密集的环境中构建精确的VLSAM地图。
我们的系统集成方法可以通过简单地从输入序列中移除人员来有效地从未填充的地图中移除人类活动。人员检测和移除不仅有利于场景描述,也有利于相机跟踪和重新定位,显著提高了它们在人口密集环境中的性能,并将误差降低了一半以上。此外,有可能生成语义层,该语义层详尽地记录建图区域中的人类活动,而与采集期间的相机运动无关。我们可以得出结论,建图和人员跟踪都受益于这种组合。此外,系统能够处理由人检测器提供的假阳性,因为检测是在序列的所有帧中执行的。
我们已经在两个流行的刚性VSLAM系统中测试了嵌入,具有相似的性能增益。因此,我们可以得出结论,我们的提议不可知的VLSAM方法,因此可以潜在地改善任何SLAM系统。以同样的方式,我们可以说,这种方法地图构建与人的识别的结合对于所使用的算法是不可知的,因为任何给我们场景中的人的信息的检测器都可以被包括在所提出的系统中。
人的检测可以看作是类别识别和跟踪的一个实例。在其他环境中,例如用于自动驾驶的车辆检测,或者用于内窥镜引导的微创手术的工具检测器,可以实现与相机运动无关的增强鲁棒性、地图重用和实例跟踪的类似益处。
绘制人类活动频繁的人口居住环境是服务机器人的一项关键能力。作为未来的工作,我们计划在这样的环境中开发机器人运动规划器,从绘制的人类活动图中获益。使用这些信息的规划和导航可以通过对人类运动模式的了解得到改善。

总结

在ORB-SLAM2系统上加入了人员检测器,利用该检测器,在图像中将检测到的人的像素区域去除,然后使用保留的图像作为ORB-SLAM2的输入图像,此为一层;另一层则为人员的轨迹图,此轨迹由像素区域的几何中心为代表,有着深度的性质以及相对于相机的位置信息,最终合成轨迹层。
该文章使用的是语义信息来提取人的图像范围,其中两点可以探讨:1、分层的思想;2、扩展到更多的动态物体上(该文仅提取人)

上一篇:视觉SLAM:ORB视觉里程计的简单实现(四)


下一篇:视觉SLAM十四讲学习笔记——第三讲 三维空间刚体运动