Detect-SLAM阅读笔记

Detect-SLAM: Making Object Detection and SLAM Mutually Beneficial

主要思想:

目标检测的网络并不能实时运行,所以只在关键帧中进行目标检测,然后通过特征点的传播将其结果传播到普通帧中

1.只在关键帧中用SSD网络进行目标检测(得到的是矩形区域及其置信度),图割法剔除背景,得到更加精细的动态区域;

2.在普通帧中,利用feature matching + matching point expansion两种机制,对每个特征点动态概率传播,至此得到每个特征点的动态概率;

3.object map帮助提取候选区域。

摘要

尽管近年来在 SLAM 和目标检测方面取得了重大进展,但这两项任务仍然存在一系列挑战,例如动态环境中的 SLAM 和复杂环境中的目标检测。为了应对这些挑战,我们提出了一种新颖的机器人视觉系统,它将 SLAM 与基于深度神经网络的目标检测器相结合,使这两个功能互惠互利。所提出的系统有助于机器人在未知和动态的环境中可靠且有效地完成任务。实验结果表明,与最先进的机器人视觉系统相比,所提出的系统具有三个优点:

i)它通过利用物体检测器从移动物体中去除不可靠的特征,极大地提高了动态环境中 SLAM 的准确性和鲁棒性;

ii) 它利用两种功能的协同作用以在线方式构建环境的实例级语义地图,以进行进一步的语义应用;

iii) 它改善目标检测,使其可以利用对象的建图在更具挑战性的条件下有效地分割/检测对象,例如不寻常的视点、光照条件差和运动模糊。

引言

       近年来,同步定位与建图 (SLAM) 和基于图像的目标检测领域都取得了巨大进展。 作为一个广泛研究的主题,已经提出了许多基于视觉的SLAM系统,其定位精度低至几厘米,并且可以实时构建大规模 3D 地图。随着深度卷积神经网络 (CNN) 的最新进展,基于图像的目标检测的性能得到了提升。

这两个任务的性能和应用在单独运行时,都受到一系列棘手问题的限制。例如,SLAM系统通常在动态环境中容易发生故障,并且目标检测可能对变化的视点,遮挡等敏感。这两个任务可以是互补的: SLAM旨在从视频中估计环境的自我运动和几何形状; 目标检测通过在目标周围放置带有预定义对象类的边界框来表示图像的语义信息。直观的提出了一个问题,即是否有可能将SLAM与目标检测集成在一个系统中,以彼此共享几何信息和语义理解,从而使它们互惠互利?

受最近将SLAM与目标检测相结合的成功的启发,我们提出了一种新的框架Detect SLAM,它将视觉SLAM与基于深度神经网络(DNN)的目标检测相结合,使两者互惠互利。

在检测- SLAM中,我们利用语义信息来消除SLAM流水线中移动对象的负面影响。针对语义信息的时延主要由通信和检测引起的问题,提出了一种实时传播每个关键点的移动概率的方法。在SLAM线程中,我们构建了一个对象映射,一个由映射线程中所有检测到的静态对象组成的语义映射。这种目标地图可以看作是一个包含有关目标类和位置的知识的数据库。使用这张地图,机器人可以执行诸如“从最近的办公桌上把书递给我”之类的命令,或者回答关于场景语义的查询,比如“房间里有多少个监视器?”.为了增强目标检测在异常视点、光照条件差、遮挡严重等条件下的工作能力,利用目标地图作为检测的先验知识,将目标地图投影到二维图像平面上进行时空一致性目标区域规划。这种 SLAM 增强目标检测可用于在具有挑战性的条件下挖掘有挑战的目标,这些挑战的目标随后可用作训练数据,以改进/微调原始深度目标检测。

这是第一个将 SLAM 和基于 DNN 的检测器结合起来同时完成三项视觉任务的工作:提高 SLAM 在动态环境中的鲁棒性、构建语义图和提高目标检测的性能,如下图所示。

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

相关工作

SLAM:

对于大多数以前的 SLAM 系统,核心假设是环境在很大程度上是静态的,并且相机是场景中唯一的移动对象。然而,这些理想情况在室内或室外都很难遇到。试图将那些移动的物体(主要是人)视为异常值,并将它们从环境表示中移除。 其他一些 SLAM 系统,使用将 SLAM 系统与对象跟踪和检测相结合的框架,以提高动态环境中的定位精度。

此类结合SLAM和检测的框架近年来仍在使用。与我们最密切相关的作品是 Paschalis 等人和 Sun 等人。两项工作都逐帧检测移动对象,而不是像我们的系统那样为移动对象构建模型,其中 Paschalis 等人专注于 3D 点云,Sun 等人在 2D 补丁上。它们都包括分割和额外获取移动对象的掩码,我们的系统省略了这些操作并通过更新特征的移动概率来过滤属于移动对象的特征,这意味着我们的方法是基于特征级表示的,并且可以更加鲁棒和高效的。

基于深度神经网络的目标检测:

基于深度神经网络的对象检测:随着深度神经网络的进步,基于图像的对象检测的准确性得到了提升。 Faster R-CNN是最准确的深度神经网络之一,在 PASCAL VOC 数据集中具有超过 80%的mAP,具体取决于区域提议算法。Redmon 等人为 YOLO及其改进模型 YOLOv2设计了一个统一的架构,使 YOLOv2 成为最快的网络之一,可以在 PASCAL VOC 上以 91 FPS 和 69% 的 mAP 或 40 FPS 的速度和 78.6% 的 mAP 处理图像数据集。Single Shot Multibox Object Detector (SSD) 是第一个基于 DNN 的实时对象检测器,在 TitanX中以 40 FPS 的速度在 PASCAL VOC 数据集中实现了70%以上的 mAP。该检测器很好地平衡了速度和准确性,因此我们在 Detect-SLAM 中部署 SSD 作为检测器模块。

mAP全称是mean Average Precision,这里的Average Precision,是在不同recal下计算得到的,recall(召回率)和precision(精确率):

AP 是计算某一类 P-R 曲线下的面积,mAP 则是计算所有类别 P-R 曲线下面积的平均值。

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

SLAM结合目标检测:

之前的工作将SLAM或SfM技术与目标检测相结合,以解决SLAM和识别中的问题。Pillai等人设计了一个支持SLAM的物体识别系统,获得了优异的性能。McCormac等人[将SLAM与CNN结合起来,高效地生成语义3D地图。Bowman等人将离散识别和数据关联问题与连续SLAM优化整合到一个优化问题中,从而得到更精确的轨迹。Duncan等人创建了一种基于单目的方法,使用目标检测器来解决传统单目SLAM系统中的尺度模糊和漂移问题。Sucar等人将基于卡尔曼滤波的单目SLAM与检测器提供的语义信息相结合,以贝叶斯方案估计3D模型的全局规模。

系统介绍

在 Detect-SLAM 中,我们将基于 DNN 的目标检测器合并到 SLAM 系统中。Detect-SLAM 建立在 ORB-SLAM2 [18] 之上,它具有三个主要并行线程:跟踪、局部映射和循环关闭。与 ORB-SLAM2 相比,Detect-SLAM 包括三个新流程:

(1)移动对象移除,过滤掉与移动对象相关的特征。

       (2)对象建图,重建在关键帧中检测到的静态对象。对象图由分配有对象 ID 的密集点云组成。

(3)SLAM 增强检测器,利用对象图作为先验知识来提高在具有挑战性的环境中的检测性能。

1.移动物体移除

当检测到人就将其视为潜在的移动物体并删除相应的特征点。目标检测速度应该足够快,在本文中如果逐帧都使用SSD目标检测整个系统的速度也只有3FPS。在这一部分中提出了两个策略解决这一问题:

(1)仅在关键帧中做目标检测,然后更新局部地图中点的移动概率以加速跟踪线程。

(2)在相机位姿估计之前,通过特征匹配和匹配点扩展在跟踪线程中传播运动概率,有效地去除运动物体上提取的特征。

把属于运动物体的特征点的概率称为运动概率。如下图所示,我们根据移动概率将这些关键点区分为四种状态。在匹配点扩展中使用两个高置信度点将移动概率传播到相邻的不匹配点。在每个点通过传播获得移动概率后,我们移除所有动态点,并使用RANSAC过滤其他异常值以进行姿态估计。

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

其中Pt-1为最后一个关键帧更新后3D点Xi的移动概率。如果是一个新的点那么设Pt-1 = Pinit = 0.5。当前关键帧中匹配关键点xi的状态为St。这取决于检测到的区域。如果关键点xi在运动物体的边界框中,我们将其视为一个动态点,其状态值St设为1.其他点被视为静态点,状态值St设为0.α为平滑及时检测结果影响因子。值越大,对及时检测结果越敏感,值越低,表示考虑多视图的历史结果越多。在本文中设置α为0.3。

移动概率传播。在跟踪线程中,通过两个操作逐帧估计每个关键点的移动概率:

  1. 特征匹配
  2. 匹配点拓展(移动概率传播)

当前帧中的移动概率是从上一帧中的关键点、局部地图中的点传播的,而无需任何检测知识。图中显示了符号中移动概率传播的细节。(考虑把目标检测框做个重投影

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

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

使用特征匹配来传播移动概率的操作,如下所示:

其中,表示ORB特征点,θ是匹配阈值。匹配点展开,此操作旨在将移动概率从高置信度点扩展到与特征匹配操作中的任何匹配点不对应的其他相邻点。依赖于在大多数情况下,邻域中点的状态是一致的这样的假设。

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

其中Pinit是初始移动概率。如果一个点受到一个以上的高置信度点的影响,我们将把这些相邻的高置信度点的所有影响相加。考虑到移动概率Pm(xjt) - Pinit和距离因子 λ(d) 的差异,我们制定了高置信度点的影响。如果点处于高置信度点影响区域,则距离因子,C为常数值,否则 (d>r),λ(d)= 0。

目标建图

在地图中重构环境是 SLAM 系统的核心能力,但大多数地图都是在没有语义的像素或低级特征中构建的。最近,随着目标检测的进步,创建有目标检测器支持的语义地图变得更有希望。

在建图过程中,我们重建包含所有检测到的对象的图。地图中的每个3D点都被分配一个对象ID以进行识别。该过程如图1所示。

原始的ORB-SLAM仅构建稀疏地图以提高定位精度。作为语义图,这样的稀疏图不足以进一步应用。因此,我们在现有的基于 RGB-D 的 ORB-SLAM 之上构建并插入稠密点云映射器,类似于其他一些基于RGB-D的稠密建图解决方案。

预测区域 ID:

在建图过程开始时,我们预测图像空间中每个检测到的区域的对象ID。区域ID预测的目的是在对象图中找到对应的对象ID,或者如果是第一次检测到则生成一个新的ID。对象 ID 预测基于几何假设,即如果两个区域属于同一对象,则投影和检测区域应该重叠。所以我们计算两个区域之间的并集交集(IOU)来表示重叠的程度:

当我们发现两个区域重叠(IOU > 0.5)时,我们估计它们之间的深度似然:

其中误差(深度)是重叠区域中观察到的深度和投影深度之间的MSE。

其中Do(u,v)和Dp(u,v)表示在像素(u,v)中观察和投影的深度。N是投影到重叠区域R1∩R2的点云数。

如果深度似然高于阈值 θd,我们将投影区域的对象 ID 分配给检测区域。相反,我们为该区域分配一个新的对象 ID。

分割背景:

尽管检测器提供了图像中对象的边界框,但它是一个矩形框,其中包含一些意想不到的背景,用于构建干净的对象图。因此,我们使用 Grab - Cut 算法分割背景,将重叠区域中先前重建对象投影的点作为前景种子,将边界框外的点作为背景。然后我们从边界框中得到一个目标对象的段掩码,经过三次迭代。

重建:

利用对象掩码,我们创建分配有对象 ID 的对象点云,并过滤 3D 空间中的噪声点。最后,我们将物体点云转换为带有相机位姿的世界坐标,并将它们插入到物体地图中。

3.SLAM增强目标检测器

语义地图不仅可用于优化轨迹估计,还可用于改进目标检测器。 与经典的每帧对象检测方法相反,机器人从不同的角度多次观察其环境中的相同对象实例。 通过提供从重建的 3D 上下文到对象检测的几何信息来改进对象检测器是很自然的,这确保了对象检测器在空间上的一致性。 当对象检测器由重建的对象图和精确估计的相机位姿支持时,它会得到增强。

区域选取

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

区域过滤器

但仍有不在预期的区域被提出,例如一些噪音点云造成的小区域或包含遮挡物体的区域。因此,在区域检查器阶段,我们剔除区域大小20×20 px的小候选者,并估计观察到的深度和投影深度之间的可能性,以检测遮挡候选者。候选者在深度上的似然类似于区域似然函数,除了IoU = 1为常数外。

有挑战的样本挖掘

之前的工作已经证明,选择硬示例来训练或微调深度神经网络可以显著提高检测性能。为了使深度检测器在没有SLAM的情况下性能更好,我们将SLAM增强型目标检测器应用于挖掘有挑战的示例,从而增加了训练数据。然后,我们对原始SSD网络进行微调,以提高类似场景中的检测性能。有挑战的示例的实例如图7所示。

实验环境

Intel Core i7-4700 laptop

16GB RAM

Nvidia GPU GTX960M

结果

结论

在本文中,我们提出了一种称为 Detect-SLAM 的新型耦合框架,用于使目标检测器和 SLAM 在一个系统中互惠互利。 Detect-SLAM 可以在动态场景中精确定位,构建语义对象图,并稳健地检测/识别对象。在TUM 数据集上的实验证明了我们的系统在 SLAM 和目标检测方面的有效性。SLAM-enhanced 检测器通过对象图对运动模糊、不常见的视点具有鲁棒性。 此外,我们已经将我们的系统应用于挖掘 TUM 数据集中出现的有关监视器和植物的有挑战的示例,然后微调 SSD 网络。

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

VoladorL

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

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

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

打赏作者

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

抵扣说明:

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

余额充值