视觉SLAMORB-SLAM2S: A Fast ORB-SLAM2 System with Sparse Optical Flow Tracking

Posted 振华OPPO

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了视觉SLAMORB-SLAM2S: A Fast ORB-SLAM2 System with Sparse Optical Flow Tracking相关的知识,希望对你有一定的参考价值。

Citations: Y. Diao, R. Cen, F. Xue.ORB-SLAM2S: A Fast ORB-SLAM2 System with Sparse Optical Flow Tracking[C].2021 13th International Conference on Advanced Computational Intelligence (ICACI). Wanzhou,China.2021:160-165.
Keywords: Visualization,Simultaneous localization and mapping,Cameras,Real-time systems,Aircraft navigation,Central Processing Unit,Trajectory

论文目录

摘要

本文介绍了ORB-SLAM2S,这是一种基于ORB-SLAM2的快速完整的SLAM系统,适用于单目、立体和RGB-D相机。该系统在小型和大型室内和室外环境中以更快的速度在CPU上同时确保准确性。该系统包括一个轻量级前端,这是一种用于非关键帧的稀疏光流方法,以避免提取关键点和描述符,从而实现高速实时性能。 对于关键帧,使用基于特征的方法确保与ORB-SLAM2几乎相同的准确轨迹估计。对著名公共序列的评估表明,我们的方法实现了与ORB-SLAM2几乎相同的精度和更快的速度性能,是ORB-SLAM2的3~5倍,在大多数情况下是更快的SLAM解决方案。实验证明,该系统提供了快速轻量级的视觉SLAM,同时确保了低成本移动设备的准确性。

一、介绍

SLAM最早是在机器人领域提出的[1] –[3]。它意味着机器人从未知环境的未知位置出发,通过反复观察运动过程中的环境特征来定位其位置和姿态,然后根据其位置构建周围环境的增量地图。 与其他传感器相比,该相机具有硬件成本低、视觉信息丰富等优点,吸引了众多学者和公司。仅使用摄像头作为外部传感器的SLAM系统称为视觉SLAM(VSLAM)[3],它为移动机器人提供实时姿势。

近年来,随着机器人、无人机、无人驾驶、虚拟现实(VR)和增强现实(AR)的快速发展,VSLAM已成为学术和应用领域的热门研究课题,被认为是实现自主移动机器人、VR和AR的关键技术[4]。 将VSLAM商业化到AR,VR和其他移动设备需要大量的计算能力,甚至是昂贵的GPU。因此,轻量级、快速、实时、准确的系统仍然是VSLAM的关键问题。实时是VSLAM技术的关键性能指标,用于在移动机器人AR和VR动态运行时提供更快的实时最佳姿势,并重点关注实时操作。

大多数基于特征的VSLAM系统[5]可以使用单目,立体或RGB-D相机在大约10~30 HZ的标准CPU上实时执行,并包括基于描述符的环路检测和重新定位功能。然而,基于特征的方法需要花费大量时间来提取每帧的不变角和鲁棒描述符,这成为限制实时性能的主要因素。直接法[6]和光流法[7]避免了提取和匹配描述符,从而获得了更快的速度性能。但是,它们失去了基于描述符的循环检测和重新定位功能。

因此,本研究提出了基于ORB-SLAM2的ORB-SLAM2S[8]。通过结合基于特征的光流方法和稀疏光流方法,解决了所有这些问题,不仅可以保持基于特征的方法的轨迹精度,还可以获得稀疏光流方法更快的实时性能。 本文的主要贡献如下:

  • 完整、轻量、准确且快速的 VSLAM 系统,适用于单目、立体和 RGB-D 相机,包括闭环和重新定位;

  • 通过使用轻量级前端结合基于特征和稀疏光流的方法,实现了比ORB-SLAM2更快的实时性能,同时保证了精度;

  • 立体、RGB-D和单目结果表明,ORB-SLAM2S在确保精度的同时实现了更快的速度性能。

本文的组织结构如下:第二节介绍相关工作,第三节介绍系统,第四节介绍评价结果,第五节最后得出结论。

言外之意,本文的工作就是在ORB-SLAM2上将ORB特征点提取法替换为稀疏光流法,速度更快,按道理精度是跟不上的,那么如何保持精度能和ORB-SLAM2齐平就是看点了。

二、相关工作

轨迹精度和实时性能是VSLAM的两个重要指标。根据特征点和描述符的需要,目前的VSLAM系统分为基于特征的方法,直接方法和光流方法。在这一部分中,将讨论不同方法的轨迹精度和实时性能。

A. 特征点法

基于特征的SLAM的一般方法是从每帧中提取一系列稀疏稳定的边[9],块[10]或角[11] –[13],然后一些方案提取与特征对应的不变描述符,并使用描述符来匹配特征。通过这些匹配的关键点,摄像机的运动和结构可以通过多视图几何体恢复。在这种SLAM算法中,由于存在关键点的鲁棒描述子,基于特征的方法可以建立更长时间的公共视图关系,并添加更多的约束关系,如公视图[14]、重定位和环路检测,从而使该方法获得更好的鲁棒性和轨迹精度。然而,关键点和不变描述符的提取非常耗时,这是基于特征的方法的常见缺陷。 ORB-SLAM [8], [11] 是现代 SLAM 系统中最完善、最易于使用的系统之一,代表了主流基于特征的方法的巅峰。ORB-SLAM2 系统提取每个帧的特征点和描述符,但仅保留和用于关键帧中的位置、地图和优化。对于非关键帧,关键点和描述符在求解姿势后将被丢弃,这对地图和轨迹精度没有贡献。因此,仅使用关键帧的关键点和描述符几乎可以保证基于特征的方法的所有优点。对于非关键帧,无需提取耗时成本较高的关键点和描述符。

在ORB-SLAM2S中,仅提取选定关键帧的特征,保证了闭环和重定位的能力,并显著缩短了计算时间。因此,ORB-SLAM2S实现了与ORB-SLAM2几乎相同的精度。

B. 直接法

直接法不提取关键点和描述符。它仅使用G2O [15]等非线性优化工具来最小化光度误差并在构建半密集地图[6]时获得姿势。但是,这种方法受照明的影响很大。灰色梯度的非凸性使得直接法容易陷入局部极值,无法得到最优解。直接法的实时性能由跟踪点的数量决定。当跟踪点数量少时,速度是如此之快。例如,在稀疏直接(如DSO[16])中,当跟踪点数量较大时,实时性能会下降。同时,轨迹精度受到跟踪点数量的限制。为了获得更高的精度,只能使用数量校正质量。在某些方法中,他们使用半直接的方式来跟踪表观纹理特征,以保持稀疏性和轨迹精度之间的平衡,例如 SVO [17]。总之,由于缺乏关键点和描述符,直接方法缺乏循环检测的能力,这使得我们最终的地图结果不能全局一致。

C. 光流法

稀疏光流法在SLAM领域的光流法中更为成熟。此方法仅在必要时提取稳定的关键点(例如 FAST [18]),而不提取描述符。在灰度值不变的假设下,通过最小化光度误差得到对应的匹配点,通过匹配点对求解位姿。 这种方法的优点是不需要提取描述符,只提取少量的稳定关键点,这是速度和准确性之间的权衡。但是,由于缺少描述符,此方法缺少环路闭合和重新定位。

在ORB-SLAM2S中,稀疏光流法用于以亚像素精度从帧到帧进行非关键帧跟踪,以避免提取描述符,从而实现高速实时性能。因此,我们的方法是轻量级的,并且可以更快地与标准中央处理器(CPU)配合使用。

这是读过的最清晰易懂的相关工作介绍,就是主流的三个帧匹配方法:特征点法、直接法和光流法。

三、ORB-SLAM2S

Orb-Slam2s系统的总体概述如图1所示。Orb-Slam2s 建立在基于功能的 ORB-SLAM2 之上,为了方便读者,这里总结了其主要内容。三个主要并行线程的工作方式如下:

  1. 跟踪:跟踪线程结合稀疏光流法(图1中的光流跟踪模块)和基于特征的方法(图1中基于特征的跟踪模块)来查找与本地地图的匹配,并应用仅运动束调整(BA)以最小化重投影误差,从而跟踪每一帧;

  2. 局部建图:局部建图线程管理和优化局部共能图和关键帧,实现本地BA;

  3. 闭环:闭环线程检测大循环,并通过执行姿势优化来纠正累积漂移。优化姿态图后,线程使第四个线程能够执行完整的BA,并计算最佳运动和稀疏点云解决方案。

请注意,我们的系统仅在跟踪线程中与 ORB-SLAM2 不同。 在本节的其余部分,我们将介绍如何将稀疏光流与基于特征的方法相结合,以加快跟踪线程的速度并确保准确性。有关其他系统块的详细说明,请参阅 ORB-SLAM2 的出版物 [8] [11]。

A. 系统引导

当系统启动时,基于特征方法的地图初始化将起作用。它使用第一帧创建第一个关键帧,将其姿势设置为原点,并从所有关键点创建初始地图。对于地图和关键帧,光流跟踪用于通过间接跟踪关键帧来仅求解每个帧的姿势,而无需提取关键点和描述符。当跟踪的特征点数量较少时,该帧被视为关键帧,基于特征的跟踪模块将起作用。

跟踪线程示意图如图2所示,其中地图点由关键帧生成,然后通过光流方法间接跟踪。


图1. Orb-Slam2s系统采用跟踪、局部建图和闭环三种主线程并行结构开发,可以在闭环后创建第四个线程来执行完整的BA。我们的跟踪线程(绿色块)对非关键帧采用稀疏光流方法,如红色块所示;在关键帧中,使用基于特征的方法,如紫色块所示。

对于非关键帧,光流用于跟踪关键帧,以建立与关键帧的映射点的匹配。在跟踪过程中(如图 2 中的箭头所示),第一帧中跟踪的地图点通过光流从帧传递到帧以间接跟踪关键帧。在此过程中,不会提取新的键点和描述符。此策略的优点如下:

  1. 由于共视图和闭环的存在,基于特征的关键帧的精度更高。因此,对关键帧进行间接跟踪,而不是直接求解帧与帧之间的运动增量,以避免累积漂移。
  2. 对于光流对照明的灵敏度,通过帧到帧跟踪而不是关键帧到帧来保证光流算法的稳定性。

仅从关键帧中提取关键点和描述符,而不是像原始系统一样提取每一帧,以实现加速并保持精度。

B. 使用光流跟踪关键帧

光流:稀疏光流法被使用在光流跟踪模块。参考帧的像素灰度值可以记为 lr(u,v)。假设参考点移动到了 (u+Δu,v+Δv) ,像素灰度值是lc(u+Δu,v+Δv),像素灰度值是不变的。那么光流问题可以被定义为:

其中 △u, △v 是运动增量,w代表以 (u, v) 为中心的一个方块,边长是2w+1。


图3. 匀速运动模型里,我们假设在上一时刻的运动量△Tk-1和当前时刻的运动量相同,即 △Tk ≈ △Tk-1。

匀速运动模型:光流法通过公式1匹配到观察的点对,但是灰度不变假设太理想化,只适合小范围的匹配。为了解决这个缺点,一个匀速模型被用做图3。这个模型的增量从k-1到k-2帧被定义为△T ∈ SE,假设当前帧和上一帧的动量相等,有:

世界坐标系W到相机坐标系C的变换矩阵就是Tcw,作者在假设情况下给出以上公式,无证明。把世界坐标系下由关键帧特征匹配生成的地图点Pw(x, y, z)投影到相机坐标系中,当前帧的(u,v)像素对应的相机坐标为:


K是相机内参,z是地图点在相机坐标系下的深度。在当前帧下预测的坐标点Pc(uv)∗会在我们的光流迭代取得初值:


**图 2.**对于关键帧提取特征点,非关键帧采用光流法进行特征点匹配,筛选坏帧和坏点。

C.位姿预测

系统BA优化相机的位姿Tcw。仅运动BA最小化3D点的反投影误差,在世界坐标系下的3D点Pw,关键点Pw和所有的匹配集合关系:



图4. ORB-SALM2系统在KITTI 00序列上的时间开销。

D. 新的关键帧决策

在我们的光流跟踪模块中,当跟踪地图点的数量较少时,会将其视为关键帧并启用基于特征的跟踪模块。当阈值设置为 200 时,系统可以正常工作。在特征点跟踪模块中,遵循原始系统的策略,利用描述符匹配建立共可见性图,剔除冗余关键帧。

E. 基于特征的跟踪

如图 4 所示,基于特征的方法消耗大量时间,提取 ORB 特征所花费的平均时间占整个跟踪线程的 73%。因此,基于特征的跟踪模块仅用于关键帧。当光流跟踪模块发送关键帧时,将启用基于特征的跟踪。如输入处理模块(图 1 中的橙色块)所示,将提取 ORB 特征,并使用 BRIEF 描述符进行匹配;接下来使用光流法的结果作为初始值来优化姿态;然后跟踪本地映射以保证更好的本地一致性,最后删除多余的图像帧并将其发送到本地映射线程。

注意,与原系统的区别在于,当前帧的位姿是通过光流法计算出来的,所以描述符匹配和姿态优化会更快。这将在第四节中说明。

四、评估

该系统已在两个流行的数据集(包括室内和室外大型和小型场景)中对立体、RGB-D 和单眼摄像头进行了详细评估。它与原始最先进的系统进行了比较。我们的比较实验在配备英特尔酷睿 i5 双核 CPU 和 16GB 内存的笔记本电脑上运行。 本节的每个数据集上显示了每个帧的时间消耗和轨迹精度比较。使用了两个标准指标,包括 [21] 中提出的绝对姿势均方根误差 (RMSE) 选项卡,以及跟踪模块的平均时间消耗。

A. TUM RGB-D 数据集

TUM 数据集 [21] 是来自 RGB-D 传感器的室内序列,其中包含用于评估 VSLAM 的不同纹理、照明和结构条件。评价结果见表I。结果表明,我们系统的轨迹精度与原系统几乎相同,速度性能提高了约3~5倍。

表一 RGB-D相机在TUM数据集中精度和时间消耗的比较

图 5 显示了跟踪模块中每一帧的时间消耗。图5间接反映了我们系统的工作过程。首先,有许多间隔毛刺,这是基于特征的耗时关键帧。大多数帧在底部属于低成本的非关键帧,不需要提取关键点和描述符。其次,从关键帧到关键帧,有一个时间随着大头和小尾而递减的三角形。这是因为在间接转移跟踪的过程中,关键点逐渐丢失。当跟踪的关键点很少时,将启动基于要素的跟踪。最后,需要注意的是,我们的关键帧的时间消耗略低于原始系统,因为我们的关键帧插入没有那么密集,以至于多线程不会拥塞。同时,我们的关键帧以光流跟踪计算结果为初始值,有效减少了描述子的匹配范围和后续求解的迭代时间。图6显示了估计轨迹的一些示例。


图5. RGB-D 在 TUM fr1/xyz 中的耗时比较。

表二 Kitti 数据集中的立体相机


图6. 估计轨迹和地面实况,单位为 TUM fr1/desk、fr1/room、fr1/xyz 和 fr2/desk。

B. KiTTI数据集

KITTI数据集[20]包括汽车在城市和高速公路环境中收集的校正后分辨率为1240×376像素的立体序列。序列 00、02、05、06、07 和 09 包含循环。ORB-SLAM2S可以像原始系统一样检测所有环路,这验证了我们的光流跟踪模块不会影响基于特征的环路检测功能。根据公布的真实情况,所有11个序列的评估结果如表II所示。我们系统的轨迹精度比原来的系统略差,但速度性能提高了约3~5倍。在序列01中,ORB-SALM2S获得的轨迹精度较差,因为序列包含动态运动目标,光流算法不能很好地消除它。每个帧的时间消耗细节如图 7 所示。图8显示了估计轨迹的一些示例。

图7. KITTI 00 中立体声的时间消耗比较。


图8. KITTI 00 中立体声的估计轨迹和真实情况。

C. TUM单目数据集

在单目评估中,TUM数据集的深度图被忽略,仅使用单目图像作为输入数据。图9以TUM fr1/xyz为单位详细显示了每帧的运行时间消耗,并表明速度性能大大提高。图 10 中 TUM fr10/xyz 中的示例表明,我们系统的轨迹精度几乎与原始系统相同。


图9. TUM fr1/xyz 中单目的时间消耗比较。

图10. 估计轨迹和 6 个自由度,包括 TUM fr1/xyz 中单目的角度和平移。

五、结论

在本文中,介绍了一种完整、轻量级、准确且快速的VSLAM系统,用于单目、立体和RGB-D相机,包括闭环和标准CPU上的重新定位。实验证明,该系统旨在提供快速轻量级的VSLAM,同时确保准确性。通过使用轻量级前端结合基于特征和稀疏光流方法,实现了比ORB-SLAM2更快的实时性能,同时确保了精度。

未来的扩展可能包括构建基于立体和RGB-D相机的实时导航地图,例如飞机等太空机器人的八叉树地图和飞机机器人的网格地图。

本文基于ORB-SLAM2系统进行了特征点匹配上的改进,在保证相机位姿估计准确性不变的同时,提高了系统的运行速度。具体来说,后端和闭环并没有改进,在前端中对关键帧依然提取ORB特征点,对非关键帧不再使用特征点法,而使用稀疏光流匹配地图点和特征点,并且选取关键帧很稀疏,可以有效降低每帧的运行时间。在TUM和KITTI数据集上都优于ORB-SLAM2系统。

计算机视觉——典型的目标检测算法(Fast R-CNN算法)(五)

参考技术A 【嵌牛导读】目标检测在现实中的应用很广泛,我们需要检测数字图像中的物体位置以及类别,它需要我们构建一个模型,模型的输入一张图片,模型的输出需要圈出图片中所有物体的位置以及物体所属的类别。在深度学习浪潮到来之前,目标检测精度的进步十分缓慢,靠传统依靠手工特征的方法来提高精度已是相当困难的事。而ImageNet分类大赛出现的卷积神经网络(CNN)——AlexNet所展现的强大性能,吸引着学者们将CNN迁移到了其他的任务,这也包括着目标检测任务,近年来,出现了很多目标检测算法。

【嵌牛鼻子】计算机视觉

【嵌牛提问】如何理解目标检测算法——Fast R-CNN

【嵌牛正文】

        为克服SPP-Net 存在的问题,2015 年Girshick 等提出基于边界框和多任务损失分类的Fast R-CNN[31]算法。该算法将SPP 层简化,设计出单尺度的ROI Pooling 池化层结构;将整张图像的候选区域采样成固定大小,生成特征图后作SVD分解,通过RoI Pooling层得到Softmax的分类得分和BoundingBox 外接矩形框的窗口回归两个向量;用Softmax 代替SVM 提出多任务损失函数思想,将深度网络和SVM分类两个阶段整合,即将分类问题和边框回归问题进行合并。

算法详解:

Fast R-CNN的流程图如下,网络有两个输入: 图像和对应的region proposal 。其中region proposal由selective search方法得到,没有表示在流程图中。对每个类别都训练一个回归器,且只有非背景的region proposal才需要进行回归。

ROI pooling:ROI Pooling的作用是对不同大小的region proposal,从最后卷积层输出的feature map提取大小固定的feature map。简单讲可以看做是SPPNet的简化版本,因为全连接层的输入需要尺寸大小一样,所以不能直接将不同大小的region proposal映射到feature map作为输出,需要做尺寸变换。在文章中,VGG16网络使用H=W=7的参数,即将一个h*w的region proposal分割成H*W大小的网格,然后将这个region proposal映射到最后一个卷积层输出的feature map,最后计算每个网格里的最大值作为该网格的输出,所以不管ROI pooling之前的feature map大小是多少,ROI pooling后得到的feature map大小都是H*W。

因此可以看出Fast RCNN主要有3个改进:1、卷积不再是对每个region proposal进行,而是直接对整张图像,这样减少了很多重复计算。原来RCNN是对每个region proposal分别做卷积,因为一张图像中有2000左右的region proposal,肯定相互之间的重叠率很高,因此产生重复计算。2、用ROI pooling进行特征的尺寸变换,因为全连接层的输入要求尺寸大小一样,因此不能直接把region proposal作为输入。3、将regressor放进网络一起训练,每个类别对应一个regressor,同时用softmax代替原来的SVM分类器。

在实际训练中,每个mini-batch包含2张图像和128个region proposal(或者叫ROI),也就是每张图像有64个ROI。然后从这些ROI中挑选约25%的ROI,这些ROI和ground truth的IOU值都大于0.5。另外只采用随机水平翻转的方式增加数据集。

测试的时候则每张图像大约2000个ROI。

损失函数的定义是将分类的loss和回归的loss整合在一起,其中分类采用log loss,即对真实分类(下图中的pu)的概率取负log,而回归的loss和R-CNN基本一样。分类层输出K+1维,表示K个类和1个背景类。

这是回归的loss,其中t^u表示预测的结果,u表示类别。v表示真实的结果,即bounding box regression target。

采用SVD分解改进全连接层。如果是一个普通的分类网络,那么全连接层的计算应该远不及卷积层的计算,但是针对object detection,Fast RCNN在ROI pooling后每个region proposal都要经过几个全连接层,这使得全连接层的计算占网络的计算将近一半,如下图,所以作者采用SVD来简化全连接层的计算。另一篇博客链接讲的R-FCN网络则是对这个全连接层计算优化的新的算法。

稍微总结下训练和测试的结构,如下面两个图,对算法的理解会更清晰。

test结构图在ROI Pooling层是怎么输出的画得比较容易理解。

以上是关于视觉SLAMORB-SLAM2S: A Fast ORB-SLAM2 System with Sparse Optical Flow Tracking的主要内容,如果未能解决你的问题,请参考以下文章

视觉SLAMORB-SLAM2: an Open-Source SLAM System for Monocular, Stereo and RGB-D Cameras

带环链表 II

车道线检测算法-Ultra-Fast-Lane-Detection

计算机视觉——典型的目标检测算法(Fast R-CNN算法)(五)

带环链表的入口

视觉SLAMBags of Binary Words for Fast Place Recognition in Image Sequences