Citations: Li D, Shi X, Long Q, et al. DXSLAM: A robust and efficient visual SLAM system with deep features[C].2020 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS).Las Vegas, NV, USA, 2020: 4958-4965.
Keywords: Visualization,Vocabulary,Simultaneous localization and mapping,Feature extraction,Robustness,Real-time systems,Trajectory
由清华大学、北京交通大学和英特尔公司一起合作发布的Visual SLAM系统DXSLAM,使用最先进的CNN网络提取场景的局部和全局特征,提出新的方法实现重定位和闭环检测,比baseline system的ORB-SLAM2在实时性、鲁棒性等方面表现更好,IROS会议论文,代码开源:https://github.com/ivipsourcecode/dxslam。 |
---|
强大而高效的同步定位和建图 (SLAM) 系统对于机器人自主性至关重要。对于可视化SLAM算法,尽管理论框架在大多数方面已经建立,但在大多数情况下,特征提取和关联仍然是经验设计的,并且在复杂环境中可能容易受到攻击。本文表明,使用深度卷积神经网络(CNN)进行的特征提取可以无缝地整合到现代SLAM框架中。所提出的SLAM系统利用最先进的CNN来检测每个图像帧中的关键点
,并且不仅提供关键点描述符,而且提供整个图像的全局描述符
。然后,不同的 SLAM 模块使用这些本地和全局功能,与使用手工制作的功能相比,对环境变化和视点变化的鲁棒性要高得多。我们还使用词袋(BoW)方法训练局部特征的视觉词汇。
基于局部特征、全局特征和词汇表,构建了一种高可靠的闭环检测方法。实验结果表明,所提模块均显著优于基线,整个系统在所有评估数据上实现了更低的轨迹误差和更高的正确率
。此外,通过使用英特尔 OpenVINO 工具套件优化 CNN 并利用快速 BoW 库
,该系统从现代 CPU 中的 SIMD(单指令多数据)技术中受益匪浅。整个系统可以在没有任何GPU或其他加速器的情况下实时运行。该代码在 https://github.com/ivipsourcecode/dxslam 是公开的。
在过去的几十年里,同时定位和建图(SLAM)的问题取得了长足的进步[1]。在各种可视化SLAM算法中,基于特征的算法因其在长期机器人部署中的效率和可扩展性而在机器人行业中很普遍。然而,大多数现有的SLAM系统依赖于手工制作的视觉特征,如SIFT [2],Shi-Tomasi [3]和ORB [4],它们可能无法在复杂的环境中提供一致的特征检测和关联结果。例如,当场景或视点已更改 [6] 时,ORB-SLAM2 [5] 经常无法识别先前访问过的场景。
另一方面,对于大多数其他计算机视觉任务,基于深度卷积神经网络(CNN)的特征提取已经取代了手工制作的特征,成为主导相关研究和应用。通过大量多样化数据的训练,CNN能够学习对照明,背景和视点变化具有鲁棒性的特征表示。虽然大多数使用CNN的工作都处理图像区域级特征(例如语义),但也有一些工作专注于学习像素级特征[7] [8] [9],通常称为局部特征或局部描述符。尽管已经表明这些深层特征在许多方面优于手工制作的特征,但在视觉SLAM系统中使用它们的作品并不多。除了在系统调优方面所需的工作之外,一个原因可能是这些深度CNN需要GPU或其他硬件加速器来进行实时推理,这对于机器人或其他移动系统来说可能是不切实际的。
对于SLAM的一些密切相关的主题,包括视觉(重新)定位和闭环检测(LCD),最近的工作对基于CNN的深度方法有更强的偏好,因为与传统方法的性能差距很大。这些领域的研究通常需要提取每个图像的全局特征。这可以通过使用例如词袋(BoW)方法[10]或端到端CNN推理(例如NetVLAD [11])聚合局部深度特征来完成。
在本文中,我们提出了一种基于学习特征的新型视觉SLAM系统,旨在增强在不断变化的环境中的终身定位能力。该系统名为DXSLAM,使用Deep CNN从每个图像帧中提取局部特征和全局特征。然后将这些功能输入现代SLAM管道,用于位姿跟踪,局部建图,LCD和重新定位,如图1所示。
本文的贡献包括:
它提供了一个完整的SLAM系统,具有闭环,全局优化和重新定位
功能,所有这些都基于最先进的深度CNN的功能,与具有手工制作的功能的SLAM相比,它对环境和视点变化的鲁棒性要高得多。
该文提出一种基于全局特征的图像检索和群匹配的鲁棒再定位方法。与传统的基于BoW的方法相比,它的成功率要高得多,计算成本要低得多。
提出了一种基于全局和局部特征的可靠LCD方法。训练新颖的视觉词汇以聚合局部特征。
所提议的 SLAM 系统针对现代 CPU 进行了优化,使用英特尔 OpenVINO 工具套件进行特征提取,并在 LCD 中使用快速 BoW [12]。据我们所知,它是第一个可以在没有GPU的情况下实时运行的基于深度学习的SLAM系统。
在本节中,我们将回顾主要与我们的贡献相关的现有作品。我们将对SLAM算法的一般方面感兴趣的读者推荐给[1]进行全面概述,并[13]进行完整的近期调查。
许多可视 SLAM 管道从检测图像帧中的关键点开始,并通过描述符的相似性将它们与上一个关键帧或地图中的关键点进行匹配。在计算机视觉的各种关键点特征中,Shi-Tomasi [3] 和 ORB [4] 是视觉 SLAM 算法(例如 MonoSLAM [14]、ORB-SLAM2 [15]、VINS-Mono [16])最常用的功能,因为它们平衡了有效性和效率。
在深度学习时代开始后不久,人们发现,使用ImageNet训练的深度CNN最后一层的特征可以胜过手工制作的局部特征,即使CNN没有针对这种局部表示进行训练[17]。从那时起,专门用于局部特征提取的训练CNN的工作已经提出[18] [19] [20] [21]。这些 CNN 将本地图像补丁作为输入,并输出此补丁的描述符。尽管它们对预先训练的深度CNN的性能可能不确定,但这两种方法都始终优于手工制作的特征[22]。
对于深度学习,关键点检测比补丁描述更困难,因为关键点的符号在语义上是不合适的,使得直接数据注释不可行。
DeTone等人通过提出一种自监督学习方法并用它来训练用于联合关键点检测和描述(SuperPoint)的全卷积神经网络来解决这个问题[7]。另一个网络GCN被训练具有相同的功能,但具有视觉里程计的监督[23]。Dusmanu等人设计了D2-Net,其中可以进一步共享关键点检测和描述的知识[8]。
我们的SLAM系统建立在上述工作之上。在DXS-LAM中,我们根据经验选择了HF-Net [24]来提供类似SuperPoint的关键点检测和描述,尽管其他基于CNN的方法也可以在所提出的系统中工作。最类似的工作是GCNv2 [9],它也将深层局部特征融入到ORBSLAM2的管道中。
值得注意的是,有用于端到端姿态估计的CNN[25] [26] [27] [28],这使得特征提取成为隐藏在网络中的隐式任务。虽然它们的准确性还没有竞争力,但进一步研究这些方法很有趣,因为它们与生物定位具有共同的特征。
LCD需要从当前的相机测量值中识别以前访问过的地方[29]。实时SLAM最常用的LCD方法是基于局部特征训练具有树形结构的视觉词汇表,以提高图像检索效率
[30],可以聚合局部特征并最终给出图像的矢量表示。这种方法最成功的应用之一是FAB-MAP,它使用SURF和BoW来训练词汇以进行位置识别,并展示了针对视点变化的强大性能[31]。FBoW(Fast Bag-of-Words)是BoW [12]的优化实现。它在 x86 CPU 上使用单指令多数据 (SIMD) 技术,显著加快了词汇表加载和匹配的速度。
为了利用CNN的表示能力,最近的工作试图将它们与基于BoW的LCD算法相结合[32]。[10]提出了一种基于词袋和图形验证的鲁棒LCD算法。然而,在我们的实验中,在低照度条件下,其鲁棒性往往会降低。[33]提出了BoCNF方法,该方法还使用基于CNN的特征来构建视觉词汇表,并在大规模具有挑战性的环境中检测循环。
重定位通常形成为图像检索的管道,然后是相对姿势估计,类似于LCD,但通常具有更大的候选图像数据库,并且更强调高召回率而不是LCD的高精度
。对于图像检索,可以使用具有聚合方法(如 BoW)的局部特征或基于 CNN 的深度全局特征。不同之处在于,后者中的聚合策略是从数据中端到端学习的,因此它们通常可以具有更好的性能。在CNN内聚合局部特征的最先进方法是使用NetVLAD层[11],该层由VLAD修改为可微分。在[24]中,HF-Net提出将类SuperPoint网络与NetVLAD网络绑定,并具有共享的编码器层,以降低计算成本并促进训练。对于检索到的图像和查询图像之间的姿势估计,RANSAC方案[35]中的PnP方法[34]在视觉定位工作[24]和SLAM系统[5]中都很普遍。
所提出的SLAM系统如图1所示。该框架类似于ORB-SLAM2 [5]。差异源于特征提取,为此我们使用HF-Net [24]通过单个CNN模型给出局部特征(关键点及其描述符)和全局特征(图像描述符)。然后将局部要素合并到本地化和映射管道中。基于全局特性,构建高效的重新定位模块,在系统初始化或跟踪故障时快速重新定位。为了减少累积的定位错误并实现全局一致的映射,该文提出了一种鲁棒的闭环方法。该方法既考虑了来自HF-Net的全局特征,也考虑了具有预训练的BoW词汇表的局部特征匹配。
为了进一步提高系统效率,我们采用FBoW方法获取二进制视觉词汇表,与传统的BoW方法相比,显著缩短了系统初始化时间,提高了匹配效率。我们还优化了 HF-Net 模型,并使用英特尔 OpenVINO 工具套件重新实施推理过程,以便在 CPU 上实现实时特征提取。
我们使用深度CNN,HF-Net [24]从每个图像帧中提取特征。在HF-Net中,图像首先通过共享编码器,然后进入三个并行解码器,分别预测关键点检测分数,密集局部描述符和全局图像范围描述符。前两个解码器具有与SuperPoint [7]相同的架构,全局描述符由NetVLAD层[11]计算。这种设计使HF-Net能够通过单个推理模型提供本地和全局特征,不仅有利于后续的姿态跟踪,而且有利于LCD和重新定位模块,如以下小节所述。
这种设计选择不仅受功能驱动,而且实验结果表明,HF-Net的特征优于SLAM系统的替代深度CNN特征提取器的特征。一些结果显示在第四节中。
HF-Net的原始实现是使用TensorFlow的。我们使用英特尔 OpenVINO 工具套件的模型优化器优化预训练模型,并使用推理引擎重新实施模型预测,该引擎利用 x86 CPU 上的 SIMD 操作。HF-Net 中的大多数层都可以由模型优化器直接处理,除了局部描述符上采样的双线性插值操作尚未得到支持,因此我们在 OpenVINO 推理后将其移出网络进入后处理阶段。
在传统的BoW中,采用K-D树来加速搜索过程。但是,如果在词汇训练过程中没有正确分配 K-D 树的级别和节点,词汇将无法很好地区分特征。为了解决这个问题,我们充分考虑了结果训练图像之间的关系,并采取渐进的方式训练词汇。在训练阶段,首先通过HF-Net从连续的图像序列中提取关键点和局部描述符。对于每对相邻的图像,我们使用蛮力方法来匹配图像。匹配的局部描述符应该属于同一个现有的叶节点,即视觉词,不匹配的特征被分配为新的叶节点。从理论上讲,我们应该将所有匹配的描述符放在提到的现有单词下。但是,考虑到提取特征的可靠性,我们通过相应的关键点检测分数选择前 300 个匹配描述符。处理完所有训练图像后,我们可以得到一系列视觉单词,然后将这些单词聚类到父节点中。在本文中,OpenLORIS-Scene 数据集 [6] 用于训练词汇表。经过训练的词汇表可以将特征适当地量化为视觉单词,最后使用描述单词直方图的相应向量表示和匹配图像。
为了提高特征匹配和整体SLAM系统的效率,我们采用FBoW框架来构建整个词汇表。使用 FBoW 训练的词汇表是二进制形式,在特征匹配中加载和使用效率要高得多。在我们的测试中,DXSLAM 的系统初始化时间约为 40 毫秒,而 ORB-SLAM2 的系统初始化时间约为 6 秒。
ORB-SLAM2 采用两阶段流水线进行重新定位:首先使用 BoW 特征匹配检索与当前帧相似的候选帧,然后采用帧到帧方法通过匹配其局部特征和每个候选帧来估计当前帧姿势,直到遍历所有候选帧或估计姿势。故障可能由两个问题引起:
BoW 方法无法检索任何候选帧。
在第二阶段,没有足够的匹配局部特征来估计姿势。
我们通过实现基于学习的全局描述符的粗略图像检索来解决第一个问题,这些描述符已被广泛验证为比BoW方法对环境和视点变化的鲁棒性。然后,检索到的候选帧将用于组匹配。通过将当前帧的关键点与组中的所有关键点匹配,可以大大缓解第二个问题。最后,为每个组执行标准的 RANSAC 和 PnP 流程,并具有足够匹配的关键点。在我们的实验中,组的数量通常是两到三个。
LCD 对于 SLAM 系统纠正累积的错误并构建一致的地图非常重要。虽然它也可以形成为图像检索问题,但其要求强调精度而不是重新定位中的召回,因为错误的循环闭包可能会损坏地图。因此,应为LCD应用更严格的标准。在DXSLAM中,我们使用本地和全局描述符来检测循环。对于每个新关键帧,首先通过与预先训练的词汇树的节点匹配将局部描述符量化为单词,然后由视觉向量表示关键帧。我们通过计算 [30] 中定义的视觉向量的距离,根据相似性得分从数据库中选择前 K 个关键帧。具有视觉向量v1和 v2定义为
由于 BoW 匹配方法按局部要素的分布聚合局部要素并丢弃其空间关系,因此可能会出现错误匹配。在我们的系统中,基于全局描述符的指标可以作为解决此问题的补充标准。在 LCD 的第二阶段,当前帧与上述每个前 K 候选帧之间的距离是根据其全局描述符的内积计算的。距离最小的候选者(如果低于预定义的阈值)将报告为检测到的环路。
在本节中,我们将介绍每个建议模块和完整SLAM系统的评估结果。我们首先在具有不同功能提取器的可视化SLAM系统之间进行性能比较。然后,我们评估了所提出的具有单独挑战因子的受控数据的重新定位和环路检测方法。最后,我们使用终身SLAM数据集评估整个DXSLAM系统的性能。
评估使用两种类型的数据:SLAM 评估数据集和 LCD 评估数据集。
TUM RGB-D [36] 和 OpenLORIS-Scene [6]:TUM RGB-D是文献中最常用的SLAM基准。它提供了具有精确地面实况轨迹的各种数据序列。OpenLORIS-Scene 是最近发布的数据集,提供真实世界的机器人数据,其中包含更具挑战性的因素,包括模糊、无特征图像、昏暗的照明和重大的环境变化。
最后一个可能是重定位的主要挑战。在本节中,我们主要使用OpenLORIS-Scene来评估算法的鲁棒性,同时使用TUM RGB-D来评估定位精度。
City Center和New College [31]:这两个数据集广泛用于LCD评估。它们都是用移动机器人收集的。前者包括许多动态对象,如行人和车辆。此外,阳光、风和视点的变化也会给LCD算法带来挑战。
New College 数据集不仅包括动态对象,还包括重复的视觉元素,例如相似的墙壁和灌木丛,这些元素往往会导致错误的闭环检测。
为了测试固化的HF-Net性能,我们将其与手工制作的特征和其他基于深度CNN的最先进特征提取方法进行了比较,包括SuperPoint [7]和D2-Net [8]。我们使用原始作者为所有三个CNN模型发布的公开可用模型权重,而无需任何重新训练或微调。我们用每种方法替换ORBSLAM2的特征提取模块,并比较OpenLORIS-Scene数据集上的定位性能(以每序列评估方式)。在此测试中禁用重新定位和 LCD 模块。为了更深入地了解每种方法的优点和缺点,我们还探索了关键点和描述符的不同组合,例如带有BRIEF描述符的HF-Net关键点[37](表示为HF + BRIEF)。结果如图2所示。它还包括 [6] 中其他基于功能的 SLAM 系统的结果作为基线。图 2 中的所有算法都具有很好的可比性,因为它们共享相同的 ORB-SLAM2 框架,只是它们使用的功能不同。DSSLAM引入了一种特征选择方案来过滤掉动态对象上的ORB关键点[38]。
OpenLORIS数据集中有五个场景。走廊和家的场景包含完全没有特征的图像(白墙),因此无法仅使用SLAM的任何视觉特征来跟踪整个轨迹。因此,我们专注于其他场景(办公室、咖啡馆和家庭)的结果。很明显,基于CNN的视觉SLAM的鲁棒性优于ORB-SLAM2和DS-SLAM。但是,基于CNN的方法的性能彼此不同。例如,与 D2+D2 相比,D2+BRIEF 的组合可以大大提高性能。与BRIEF相比,从HF-Net中提取的局部描述符可以更正确地表示特征。SuperPoint倾向于在办公室场景等低光照条件下提取较少的特征,这通常会导致轨道故障,但HF-Net不会遇到这样的问题。通过各种对比实验验证了我们采用HF-Net作为所提出的视觉SLAM系统的前端是合理的,有利于提高系统在变化场景下的鲁棒性。
OpenLORIS-Scene 数据集中的办公场景提供了一组受控的挑战性因素,以评估针对每个因素的重新定位稳健性。测试结果如表I所示,报告了[6]中定义的重新定位分数。所提出的方法在所有情况下都优于ORBSLAM2。只有当视点发生重大变化时(office-2中的机器人与office-1的轨迹完全相反),它才能重新定位,这表明不同视点之间的场景识别应该是一个悬而未决的问题。值得注意的是,针对照明挑战的鲁棒性已大大提高。
图3显示了所提出的重新定位方法的示例,该方法使用检索到的关键帧的组匹配来匹配特征与当前帧。在图3中,五个图像的右侧表示组数据,左侧图像是当前帧。我们可以发现,组中的每个关键帧都使用其最佳质量的关键点进行匹配。这样,匹配关键点的数量和质量都优于帧对帧方法。
拟议的LCD算法包含第三E节中提到的两部分。它首先通过基于 FBoW 框架的训练词汇表检索循环候选,然后使用全局描述符提供的空间信息来删除错误的匹配项。在评估过程中,我们的算法分为两部分。一个是完整的LCD算法,表示为HF-FBoW-GLB,另一个表示为HFFBoW,它通过相似性分数选择前1名候选人。为了将性能与OBR-SLAM2中的方法进行比较,我们还评估了具有ORB特征的BoW,表示为ORB-BoW。市中心和新学院数据集包含两组图像,分别由具有左右摄像头的机器人收集。我们在两组相机数据上测试了这三种方法。精度和召回率结果如图4所示。很明显,所提出的方法比ORB-SLAM2有了很大的改进,并且局部和全局特征的结合也有助于显着改进。
我们评估了DXSLAM在OpenLORIS-Scene数据集和TUM RGB-D数据集上的性能。它在前者上以终生的SLAM方式进行测试,其中同一场景的数据序列按顺序馈送到算法。结果如图 5 所示。除了ORB-SLAM2和DS-SLAM的基线。我们还训练了另一个版本的DXSLAM视觉词汇,没有增量方法,表示为DXSLAM-no-incre。
我们评估了DXSLAM在OpenLORIS-Scene数据集和TUM RGB-D数据集上的性能。它在前者上以终生的SLAM方式进行测试,其中同一场景的数据序列按顺序馈送到算法。结果如图 5 所示。除了ORB-SLAM2和DS-SLAM的基线。我们还训练了另一个版本的DXSLAM视觉词汇,没有增量方法,表示为DXSLAM-no-incre。
我们继续专注于办公室、咖啡馆和市场的场景。与DXSLAM-no-INCREASE相比,DXSLAM具有更多的正确姿势估计和重新定位,可以评估我们采用增量方法构建的视觉词汇表是否更有效,更合理。DXSLAM还实现了对不断变化的环境的显着稳健性。例如,与其原始框架ORB-SLAM2相比,DXSLAM跟踪更多的轨迹,而ATE RMSE要小得多。
定位的准确性也用TUM RGB-D进行评估。结果见表二。可以看出,DXSLAM具有很强的抵抗动态环境的能力,给出了与DS-SLAM相当的结果,尽管DXSLAM中没有明确解决动态功能。
高功率离散GPU通常是执行深度CNN模型的首选,但由于功率和空间限制,它们在大多数机器人平台上不可用。我们在GPU机器和通常用于构建机器人原型的无GPU迷你PC上测试了不同特征提取模型的性能。前者是配备NVIDIA GeForce GTX 1070 GPU(GPU TDP 150瓦)的Alienware笔记本电脑。后者是配备超低功耗CPU的英特尔NUC 英特尔酷睿i710710U(CPU TDP 15瓦,全系统TDP 25瓦)。结果见表三。这些数据是 OpenLORIS-Scene 数据集中处理 office11 序列中每个图像的平均时间成本,全部调整为 640x480 像素。对于HF-Net,我们将非最大抑制(NMS)的迭代次数和半径设置为1,以平衡效率和精度。所有其他型号均采用其默认配置。结果表明,HF-Net比其他CNN模型效率更高,因为它消耗更少的计算时间,同时给出更多的结果(全局描述符)。通过OpenVINO优化,HF-Net在CPU上的时间成本进一步降低了68%,达到46.2毫秒(21.6 FPS),能够整合到实时SLAM系统中。借助我们的 DXSLAM ROS 实施,其中特征提取和 SLAM 作为两台 ROS 节点在同一台计算机上运行,将实时 RGB-D 流作为输入,最终姿势估计值在英特尔 NUC 上以大约 15 Hz 的频率发布。我们希望通过CNN修剪,量化和软件优化等方式进一步提高性能。
在本文中,我们展示了基于CNN的深度特征可以很好地整合到现代SLAM系统中,并显着提高系统的性能。我们评估了不同的深度特征提取算法,并确定了HF-Net的鲁棒性、效率和提取局部和全局特征的能力。基于这些特性,我们分别提出了重新定位和闭环检测的新方法,这两种方法的性能都比基线系统ORB-SLAM2好得多。
完整的DXSLAM系统在动态环境中以低得多的误差提供姿态估计,即使我们没有明确解决动态问题。通过在现代 CPU 中利用 SIMD 技术,DXSLAM 能够在无 GPU 的移动计算平台上实时运行,从而在真正的机器人中轻松就业。
DXSLAM 是我们构建终身 SLAM 系统的第一步,证明了通过深度功能提高 SLAM 鲁棒性的概念。未来可能有两种研究方向。一种是通过改进专用于SLAM用例的CNN架构和训练策略来提取更好的特征,例如[39]。另一种是将深层功能整合到更高级的基于功能的SLAM系统中,例如ORB-SLAM3 [40]。通过利用深度学习和SLAM的进步,我们将进入D×SLAM时代。
会议论文的引用格式:作者名1,作者名2,作者名3, et al.论文名[C].会议名称.会议举办城市,会议举办国家,会议举办年份:开始页码-结束页码.