社区所有版块导航
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前端改进框架

自动驾驶之心 • 5 月前 • 392 次点击  

点击下方卡片,关注“3D视觉之心”公众号

第一时间获取3D视觉干货

>>点击进入→3D视觉之心技术交流群

拥抱“炼丹”

视觉惯性SLAM领域已经发展出众多突破性的工作,但它们在快速移动环境、弱纹理环境和光照不足的环境中仍存在一些限制。图1展示了经典几何特征和深度学习特征在SLAM中的应用对比。在黑暗环境中,很明显仅提取到有限数量的几何特征,导致地图点稀疏。这是因为传统方法依赖于低级几何特征,在处理复杂环境时存在固有的局限性。

低级几何特征不足以处理复杂环境。先进的深度学习方案可以通过学习和利用场景数据中的隐含特征信息来弥补这一限制。与固定算法模型不同,深度学习模型不需要显式表达这些信息。在SLAM领域,已经有几项结合深度学习算法的工作,这些工作可以分为三类:

  1. 将深度学习特征应用于视觉里程计:这种解决方案侧重于创建没有传感器融合或回环检测优化的视觉里程计。
  2. 采用端到端方法:用于视觉里程计,然而这种方法在解释其原理和实现令人满意的姿态估计和映射效果方面面临挑战。
  3. 将当前的三维重建技术与深度学习结合起来:结合显式或隐式的3D表示方法来感知环境,同时优化姿态。这种方法将场景表达融合到姿态估计中,然而它需要大量的计算能力,并且实时性能较差。

本文介绍的SuperVINS[1]提出了一种结合深度学习技术的视觉惯性SLAM系统。基于VINS-Fusion框架,这种方法在SLAM的前端和回环检测阶段利用深度学习特征点和描述子。与传统几何特征不同,深度学习特征能够更全面、更可靠地提取图像特征,使其在极端环境中表现尤为出色。此外,使用深度学习特征描述子提高了回环检测的准确性,使本文系统能够更精确地选择回环帧。主要贡献总结如下:

  • 改进了VINS-Fusion框架。前端部分用深度学习特征点和描述子取代了原来的几何特征和LK光流跟踪算法,使用了深度学习特征匹配方法进行特征匹配。
  • 为应对极端场景,将深度学习特征应用于整个SLAM系统。通过话题发布将深度学习特征有效结合到SLAM的前端和回环检测中。
  • 单独训练了SuperPoint的词袋,并针对EuRoC、TUM和KITTI数据集训练了适用于这些数据集的深度学习词袋,为后续研究人员提供了实现回环检测方案的可行思路。

代码仓库链接:https://github.com/luohongk/SuperVINS

具体方法

系统概述

SuperVINS框架基于著名的视觉惯性SLAM框架VINS-Fusion。SuperVINS遵循与VINS-Fusion相同的架构设计,但在其基础上进行了优化和改进。具体流程如图3所示。算法的主要组件包括前端深度学习特征提取和跟踪、后端位置优化以及深度学习回环检测。深度学习特征提取有多种方案可选,这项工作可作为灵活替换深度学习方法的参考。此外提供了使用开源代码DboW3对SuperPoint和XFeat[2]特征进行词袋训练的示例。

首先,系统输入相机数据和IMU数据。系统利用SuperPoint和LightGlue对两个连续图像帧的特征进行匹配,同时进行预积分。在匹配过程中,使用RANSAC算法优化LightGlue的特征匹配结果。前端优化完成后,特征同时发送到负责回环检测的节点。SuperVINS构建关键帧,随后用于位置估计和优化。位置计算完成后,系统将关键帧的特征、位置和点云图传送到回环检测节点。回环检测节点使用DboW3进行特征检索并执行位图优化。该系统利用深度学习特征提取足够数量的特征点并提高特征匹配质量。相比传统几何特征,使用深度学习特征并通过匹配优化在整个SLAM系统中显著解决了在极端场景中遇到的各种挑战。

特征提取

SuperPoint特征提取网络框架能够提取图像的特征点和对应的描述子。主要过程是对输入图像进行编码,然后对特征点和描述子进行解码。解码以像素卷积的形式进行。整体框架如图2所示。

特征点检测网络作为一个编码器和解码器,对信息进行编码和解码。它为图像中的每个像素分配一个概率,表示其成为特征点的可能性。为了减少计算工作量,采用子像素卷积,因为解码器的计算量更大。类似地,描述子检测网络也作为一个解码器。它首先学习一个半稠密描述子,然后应用双三次插值算法获得完整描述子。最后,使用L2归一化以确保描述的单位长度。网络分为两个分支,损失函数也自然分为两个分支。为了简化训练过程,SuperPoint将两个分支的损失函数结合起来,作为最终损失函数。最终损失函数的具体公式如公式(1)所示:

其中, 是特征点的损失函数, 是描述子的损失函数,系数 用于平衡特征点损失函数和描述子损失函数的权重。

通过这种特征提取方法,SuperPoint能够在图像中准确定位特征点并生成高质量的描述子,为后续的特征匹配和SLAM过程提供坚实的基础。

特征匹配

LightGlue网络概述

LightGlue[3]是一种快速特征匹配方法。将LightGlue特征匹配方法与其他两种方法进行比较,如图4所示。LightGlue使用一个已经包含两组特征点和描述子的匹配网络,目标是输出图像A和图像B之间的一组对应点。然而,由于遮挡或不重复性,某些关键点可能没有匹配。为了解决这个问题,使用一个软分配矩阵来表示元素之间的关联程度。在这个匹配问题中,软分配矩阵用于表示图像中局部特征的匹配程度。LightGlue由多层组成,这些层在两组特征上操作。每一层由自注意力和交叉注意力单元组成,负责更新每个点的表示。在每一层,分类器决定是否执行推理,从而避免不必要的计算。最后,一个轻量级的头部计算表示集中的部分分配。LightGlue的整体框架如下,对网络细节进行简要介绍。

图像A和B在Transformer中使用自注意力和交叉注意力机制更新层次。每个单元基于从属于集合A,B}的源图像S的消息 更新状态 $x_I^i \leftarrow x_I^i + MLP([x_I^im_{I \leftarrow S^i])|S = IS = {A,B}/Im$ 通过注意力机制作为图像S中所有状态的加权平均值计算。

对于每个点i,当前状态 首先通过不同的线性变换分解为键向量 和查询向量 。然后,计算点i和j之间的注意力得分 。在这种情况下,图像I中的每个点查看另一张图像S中的所有点,并为每个元素计算一个键 ,但不计算查询。注意力得分可以用以下公式表示:

当且仅当两个点都被预测为可匹配点并且它们的相似度高于两张图像中的其他点时,点对(i, j)才有对应关系。损失函数设计如下公式(3):

损失函数公式描述了在训练过程中如何计算损失,以推动模型LightGlue尽早预测正确的对应关系。损失函数由三部分组成,对应于正确匹配和错误匹配的点。

  1. 计算正确匹配点(i, j) 的预测对应关系 的对数似然损失,其中l是层次信息, 是预测分配矩阵中的元素。
  2. 计算标记为不可匹配的点属于A的预测可匹配性得分 的对数似然损失,其中 是点i的可匹配性得分。
  3. 计算标记为不可匹配的点属于B的预测可匹配性得分 的对数似然损失,其中 是点j的可匹配性得分。

2. 匹配优化策略

在优化匹配过程中,与传统视觉惯性里程计相比,使用深度视觉特征进行特征提取和匹配可以提取和匹配更多的点对,导致错误匹配点对的数量也增加。通过减小掩码半径来提取更多的匹配特征点对。掩码用于防止特征点过于集中,从而禁止在指定半径内存在其他匹配特征点对。通过减小掩码,可以获得更多、更密集的点对,为后续的RANSAC优化提供更多点对。RANSAC算法的阈值设定为一个非常低的值,施加严格的条件以确保正确匹配,并保证准确匹配点对的质量。

在LightGlue特征匹配网络结束后,需要从匹配结果中随机选择4对特征点,并对每对特征点进行对应匹配。每对特征点在归一化平面上有对应的匹配关系:。其中, 是归一化平面上的匹配点对应关系,是同质矩阵。有8个自由度,同时具有尺度等价性。每对匹配点可以生成两个约束方程,因此具有8个自由度的同质矩阵只需4对点对应关系即可求解。为了解决这个问题,构建了一个最小二乘问题。由于尺度等价性,可以直接设置 。接下来,基于同质矩阵计算第一帧图像中特征点在第二帧图像中的重投影坐标,然后比较重投影坐标与匹配特征点坐标之间的距离。如果距离小于某个阈值,则认为是正确匹配点对,否则认为是错误匹配,并记录正确点对的数量。重复多次循环计算同质矩阵和重投影像素点,每次循环后统计正确匹配点对的数量。将最大数量的正确匹配点对情况作为最终结果,去除错误匹配点对,输出正确匹配点对,从而实现特征点匹配筛选。

对于上图中的两幅图像,之前帧的误差投影到下一帧的重投影误差分别为0.2、0.25和0.3。然而,由于掩码半径较大,大多数点需要被消除。当重投影匹配阈值设为0.28时,共有11个点满足条件,这些点被标记为绿色,其重投影误差小于0.28。通过减小掩码半径,可以获得更多特征点。如图5下方的两幅图所示,绿色特征点的数量显著增加。如果阈值设为0.22,匹配精度提高,因为只有重投影误差小于0.22的点才被视为满足条件。在此阈值下,图5下方两幅图匹配时有22个点满足条件,被标记为绿色点,其重投影误差小于0.22。因此,这种优化确保提取足够的点,同时减少匹配点对之间的重投影误差。

回环检测

词袋模型是一种文本表示方法,也用于位置识别。在回环检测中,SuperVINS采用VINS-Fusion中的词袋回环检测方案,但有所不同。SuperVINS使用SuperPoint深度学习特征描述子和更高效的DBoW3。与VINS-Fusion的DBoW2相比,SuperVINS生成词袋的速度更快,并在回环检测过程中实时生成词袋向量。

要生成词袋,首先收集覆盖广泛场景的多样化图像集合,从这些图像中提取深度学习特征描述子,这些描述子将形成高度代表性的词袋。在正式的词袋回环检测中,统计当前关键帧中每个视觉词的出现次数。为了加速识别与输入图像最相似的候选项,词袋使用类似树形的层次索引结构。

这个方法允许SLAM系统在复杂和动态环境中有效地进行位置识别和回环检测,提高整体系统的鲁棒性和精度。

实验效果

总结一下

SuperVINS是一种利用深度学习改进VINS-Fusion的SLAM系统。在前端和回环检测中引入了SuperPoint和LightGlue,并成功在工程中实现了SuperVINS。为了训练词袋,对数据集进行了单独训练,并灵活实现了DBoW3词袋的训练。使用EuRoC数据集进行了完整的实验,并从定性和定量角度分析了原始算法和改进算法的结果。SuperVINS在各种极端场景下具有更高的定位精度和更强的鲁棒性。

参考

[1] SuperVINS: A visual-inertial SLAM framework integrated deep learning features

[2] Xfeat: Accelerated features for lightweight image matching

[3] Lightglue: Localfeature matching at light speed


投稿作者为『3D视觉之心知识星球』特邀嘉宾,欢迎加入交流!



【3D视觉之心】技术交流群
3D视觉之心是面向3D视觉感知方向相关的交流社区,由业内顶尖的3D视觉团队创办!聚焦 维重建、Nerf、点云处理、视觉SLAM、激光SLAM、多传感器标定、多传感器融合、深度估计、摄影几何、求职交流等方向。扫码添加小助理微信邀请入群,备注:学校/公司+方向+昵称(快速入群方式)


扫码添加小助理进群

【3D视觉之心】知识星球

3D视觉之心知识星球主打3D感知全技术栈学习,星球内部形成了视觉/激光/多传感器融合SLAM、传感器标定、点云处理与重建、视觉三维重建、NeRF与Gaussian Splatting、结构光、工业视觉、高精地图等近15个全栈学习路线,每天分享干货、代码与论文,星球内嘉宾日常答疑解惑,交流工作与职场问题。



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