社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

SuperVINS:一种集成深度学习特征的视觉惯性SLAM框架

点云PCL • 7 月前 • 378 次点击  


文章:SuperVINS: A visual-inertial SLAM framework integrated deep learning features

作者:Hongkun Luo, Chi Guo , Yang Liu , Zengke Li

编辑:点云PCL


欢迎各位加入知识星球,获取PDF论文,欢迎转发朋友圈。文章仅做学术分享,如有侵权联系删文。

公众号致力于点云处理,SLAM,三维视觉,高精地图等领域相关内容的干货分享,欢迎各位加入,有兴趣的可联系dianyunpcl@163.com。文章未申请原创侵权或转载联系微信cloudpoint9527。

摘要


本文通过引入深度学习特征和深度学习匹配方法,对VINSFusion进行了增强,实现了深度学习特征词袋的训练,并将这些特征用于回环检测。此外在深度学习特征匹配模块中引入了RANSAC算法以优化匹配。改进版的SuperVINS在定位精度、鲁棒性等方面优于VINS-Fusion,特别是在低照度和快速抖动等具有挑战性的场景中,传统的几何特征无法充分利用图像信息,而深度学习特征在捕捉图像特征方面表现出色,为验证提出的改进方案,使用开源数据集进行了实验,并从定性和定量角度对实验结果进行了全面分析。结果表明,这种基于深度学习的SLAM系统改进方案具有可行性和有效性,为了促进该领域的知识交流,已将本文代码公开,代码链接为:https://github.com/luohongk/SuperVINS。

图 1. 在EuRoc的MH05序列中,VINS-Fusion与SuperVINS在特征提取和建图方面的对比。

主要贡献


本文提出了一种结合深度学习技术的视觉惯性SLAM系统,在VINS-Fusion框架的基础上,该方法在SLAM的前端和回环检测阶段使用了深度学习特征点和描述子。与传统几何特征不同,深度学习特征能够更全面、可靠地提取图像特征,尤其在复杂环境中表现更为有效。此外使用深度学习特征描述子提高了回环检测的精度,使得本文的系统能够更精确地选择回环帧。对于SLAM系统前端的特征匹配,本文采用了轻量级特征匹配网络LightGlue。与依赖汉明距离计算的传统二进制描述子相比,LightGlue在捕捉特征点相似性方面表现更佳。这种方法在实时性和准确性之间取得了平衡,符合SLAM特征匹配的需求。为了将LightGlue集成到系统中,本文将特征匹配方法转换为ONNX模型,并使用onnxruntime进行模型部署。在回环检测方面,本文采用DBoW3视觉词袋模型训练基于深度学习特征的SuperPoint词袋,从而使SLAM系统能够利用SuperPoint词袋实现实时且精确的定位识别。总而言之,本文的贡献总结如下:

  • 1. 本文改进了VINS-Fusion框架,前端部分用深度学习特征点和描述子替代了原始的几何特征和LK光流跟踪算法,同时在特征匹配中也采用了深度学习特征匹配方法。

  • 2. 为应对极具挑战性的场景,本文将深度学习特征应用于整个SLAM系统,深度学习特征被集成到VINS-Fusion的每个ROS节点中,通过话题发布有效地结合了SLAM前端和回环检测,深度学习特征被用于词袋回环检测。

  • 3. 本文单独训练了SuperPoint词袋,并针对Euroc、TUM和KITTI数据集训练了适用于这些数据集的深度学习词袋,这为后续研究者实现回环检测解决方案提供了可行的思路。

  • 4. 本文使用公开数据集进行了实验,验证了该改进算法的有效性。此外还开源了实时深度学习视觉惯性SLAM代码,开源仓库地址为:https://github.com/luohongk/SuperVINS。

内容图集


系统概述

本文提出的SuperVINS框架基于知名的视觉惯性SLAM框架VINS-Fusion。SuperVINS遵循与VINS-Fusion相同的架构设计,但在此基础上进行了优化和改进。具体的算法流程图如图3所示。

图 3. SuperVINS的框架图

算法的主要组件包括前端的深度学习特征提取和跟踪、后端的位姿优化以及深度学习回环检测,深度学习特征提取有多种方案可选,本文的工作可以为灵活替换深度学习方法提供参考。此外本文提供了使用开源代码DboW3进行词袋训练的示例,结合了SuperPoint和XFeat特征。首先将相机数据和IMU数据输入系统,系统使用SuperPoint和LightGlue对两帧连续图像的特征进行匹配,同时进行预积分。在匹配过程中,使用RANSAC算法优化LightGlue的特征匹配结果,一旦完成前端优化,特征会被同时发送到负责回环检测的节点,SuperVINS构建关键帧,这些关键帧随后用于位姿估计和优化。位姿计算完成后,系统将关键帧的特征、位姿和点云地图传送至回环检测节点。回环检测节点利用DboW3进行特征检索并进行位图优化。该系统利用深度学习特征提取足够数量的特征点,并提升特征匹配的效果。与传统几何特征相比,深度学习特征结合匹配优化贯穿于整个SLAM系统,有效解决了极端场景中遇到的各种挑战。

特征提取

SuperPoint特征提取网络能够同时提取图像的特征点和对应的描述子。其工作流程是对输入图像进行编码,然后通过像素卷积解码特征点和描述子。特征点检测网络为每个像素分配概率,表示其成为特征点的可能性,并通过子像素卷积减少计算量。描述子检测网络则先学习半密集描述子,再通过插值算法生成完整描述子,并使用L2归一化确保单位长度。网络分为两个分支,最终通过结合两个分支的损失函数来优化训练。整体框架如图2所示。

图 2. SuperPoint特征提取算法框架

特征匹配

LightGlue是一种快速的特征匹配方法,本文对LightGlue特征匹配方法与其他两种方法进行了对比,LightGlue使用一个匹配网络,该网络已经包含两组特征点和描述子,目的是输出图像A和图像B之间的匹配点对,由于遮挡或图像变化,有些关键点可能没有匹配项,为了解决这个问题,使用软分配矩阵表示元素之间的相关性。LightGlue由多个层组成,每层包含自注意力和交叉注意力单元,用于更新每个点的表示。在每一层,分类器决定是否进行推理,以避免不必要的计算。最后,轻量级头部计算从表示集中部分分配。在匹配优化过程中,与传统的视觉惯性里程计相比,使用深度视觉特征进行特征提取和匹配会提取更多的点对,因此错误匹配的点对也会增加。本文通过缩小掩膜半径来提取更多的匹配特征点对,掩膜用于防止特征点过于密集。通过缩小掩膜,可以获得更多的点对,为后续RANSAC优化提供更多数据。RANSAC算法的阈值设定得非常低,以确保匹配点对的质量。在LightGlue特征匹配网络结束后,随机选取4对特征点进行匹配,并通过单应矩阵计算重新投影的特征点坐标与匹配的特征点坐标之间的距离,如果距离小于某个阈值,则认为是正确的匹配,否则为错误匹配。通过多次计算,可以获得最多正确匹配点对的情况,并输出正确的匹配结果。通过优化掩膜半径和投影匹配阈值,确保提取到足够多的特征点并提高匹配精度。

图 4. 三种特征提取与匹配方案的对比

闭环检测

词袋模型是一种文本表示方法,也用于位置识别。在闭环检测中,SuperVINS采用了VINS-Fusion中的词袋闭环方案,但有一些不同之处。SuperVINS使用了SuperPoint深度学习特征描述子以及更高效的DBoW3。与VINS-Fusion的DBoW2相比,SuperVINS生成词袋的速度更快,并在闭环检测过程中实时生成词袋向量。要生成词袋,首先收集覆盖广泛场景的图片集合,从这些图像中提取深度学习特征描述子,作为生成高度代表性词汇的基础。在正式的词袋闭环检测中,统计当前关键帧中每个视觉词汇的出现次数。为了加快识别输入图像的最相似候选项,词袋模型采用了类似树状的层次索引结构。

实验与结果



本实验在Ubuntu 18.04系统上进行,使用GeForce RTX 2060显卡和深度学习相关配置,测试了VINS-Fusion和改进的SuperVINS算法,目标是比较两者在EuRoC数据集上11个序列中的定位精度和鲁棒性。主要指标包括ATE(绝对轨迹误差)、RPEr(相对旋转误差)和RPEt(相对平移误差)。

实验结果显示,在11个序列中,SuperVINS在6个序列中的定位精度超过了VINS-Fusion,尤其是在复杂场景中表现更佳。在最困难的序列中,SuperVINS的绝对位置精度提高了39.6%。虽然在正常场景下,SuperVINS对绝对位置精度的提升有限,但相对位置精度有所改善。结果如TABLE I所示。

在鲁棒性方面,SuperVINS比VINS-Fusion更稳定,在快速抖动导致传统方法跟踪丢失的场景中,SuperVINS依然能够精确跟踪,证明其更强的鲁棒性。

对两个相对困难的场景(MH05和V201)的误差进行了可视化,结果显示在图6和图7中。VINS-Fusion和SuperVINS之间存在明显差异,图中的红线代表SuperVINS的误差分布。在这两个具有挑战性的序列中,SuperVINS的轨迹误差显著减少。此外,我们对误差进行了简单统计,发现误差的最大值、最小值和中位数都大幅降低。因此可以得出结论,改进后的算法在这两个挑战性序列上表现更好。使用高斯函数拟合了误差。从图7的结果可以看出,VINS-Fusion和SuperVINS的误差都遵循高斯分布。值得注意的是,改进后的高斯拟合曲线向左移动,表明误差总体上有所减少。此外,观察高斯曲线时,我们发现误差分布存在有趣的差异。SuperVINS的高斯曲线更窄,而VINS-Fusion的曲线更宽,表明SuperVINS的误差分布稳定性有所提高。

轨迹结果的可视化

为了清楚展示SuperVINS在定位结果中的优势,我们将两种算法与实际轨迹结合在一幅图中进行可视化。我们特意选择了三个序列:MH01、MH05和V201,分别代表简单、困难和中等难度的场景。通过包含这三种不同难度的场景,我们能够全面展示定位结果。图8、图9和图10展示了这些可视化结果。

总结


本文介绍了SuperVINS,一个融合深度学习的SLAM系统,应用于前端和回环检测。SuperVINS是对VINS-Fusion的增强,集成了SuperPoint和LightGlue技术,并成功实现了工程应用。为了训练词袋模型,我们分别对数据集进行了训练,并灵活实现了DBoW3词袋模型的训练。通过EuRoC数据集进行了完整实验,分别从定性和定量角度分析了原始算法和改进算法,并进行了详细对比。结果表明,SuperVINS在多种极端场景下具有更高的定位精度和更强的鲁棒性。

资源

自动驾驶及定位相关分享

【点云论文速读】基于激光雷达的里程计及3D点云地图中的定位方法

自动驾驶中基于光流的运动物体检测

基于语义分割的相机外参标定

综述:用于自动驾驶的全景鱼眼相机的理论模型和感知介绍

高速场景下自动驾驶车辆定位方法综述

Patchwork++:基于点云的快速、稳健的地面分割方法

PaGO-LOAM:基于地面优化的激光雷达里程计

多模态路沿检测与滤波方法

多个激光雷达同时校准、定位和建图的框架

动态的城市环境中杆状物的提取建图与长期定位

非重复型扫描激光雷达的运动畸变矫正

快速紧耦合的稀疏直接雷达-惯性-视觉里程计

基于相机和低分辨率激光雷达的三维车辆检测

用于三维点云语义分割的标注工具和城市数据集

ROS2入门之基本介绍

固态激光雷达和相机系统的自动标定

激光雷达+GPS+IMU+轮速计的传感器融合定位方案

基于稀疏语义视觉特征的道路场景的建图与定位

自动驾驶中基于激光雷达的车辆道路和人行道实时检测(代码开源)

用于三维点云语义分割的标注工具和城市数据集

更多文章可查看:点云学习历史文章大汇总

SLAM及AR相关分享

TOF相机原理介绍

TOF飞行时间深度相机介绍

结构化PLP-SLAM:单目、RGB-D和双目相机使用点线面的高效稀疏建图与定位方案

开源又优化的F-LOAM方案:基于优化的SC-F-LOAM

【论文速读】AVP-SLAM:自动泊车系统中的语义SLAM

【点云论文速读】StructSLAM:结构化线特征SLAM

SLAM和AR综述

常用的3D深度相机

AR设备单目视觉惯导SLAM算法综述与评价

SLAM综述(4)激光与视觉融合SLAM

Kimera实时重建的语义SLAM系统

易扩展的SLAM框架-OpenVSLAM

基于鱼眼相机的SLAM方法介绍


以上内容如有错误请留言评论,欢迎指正交流。如有侵权,请联系删除

扫描二维码

                   关注我们

让我们一起分享一起学习吧!期待有想法,乐于分享的小伙伴加入知识星球注入爱分享的新鲜活力。分享的主题包含但不限于三维视觉,点云,高精地图,自动驾驶,以及机器人等相关的领域。

分享与合作:微信“920177957”(备注:姓名+学校/公司+研究方向) 联系邮箱:dianyunpcl@163.com。

为分享的伙伴们点赞吧!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/174254
 
378 次点击