齿轮啮合诗人
摘要
视觉同步定位与建图(Visual SLAM)系统是机器人自主导航和计算机视觉中的核心技术。这类系统的性能在很大程度上依赖于用于关键点检测和描述子的特征的鲁棒性和判别能力。ORB-SLAM3 是当前最先进的 SLAM 系统之一,采用的是传统的 ORB(Oriented FAST and Rotated BRIEF)特征,但在尺度、旋转和光照发生显著变化的情况下,这些特征可能存在一定局限性。本研究将 SuperPoint —— 一种基于深度学习的兴趣点检测与描述方法 —— 集成到 ORB-SLAM3 框架中,用以替代传统的 ORB 特征。此外引入了自适应非极大值抑制(ANMS)算法,以实现关键点在空间上的均匀分布。将这个改进后的系统称为“SuperPoint SLAM with ANMS”,并在 KITTI 里程计数据集和 EuRoC MAV 数据集上对其进行了评估。在 KITTI 数据集中,实验结果显示系统定位精度有了显著提升:平均平移误差从 4.15% 降至 0.34%,平均旋转误差从 0.0027 度/米 降至 0.001 度/米,六自由度位姿估计表现优于原始的 ORB-SLAM3。在更具挑战性的 EuRoC 数据集中,我们的系统在所有序列上也表现出显著的改进:平移误差从原来的 1.2%–1.6% 降至 0.5%–0.9%,旋转误差从 0.0035–0.0045 度/米 降至 0.0018–0.0028 度/米。这些结果表明,将 SuperPoint 特征与 ANMS 融入 SLAM 流程能够有效提升系统在多样化环境下的性能。源代码已开源,地址为:
https://github.com/shahram95/SuperPointSLAM3。
主要贡献
近年来,深度学习的发展催生了更为鲁棒的特征检测器与描述子。SuperPoint是一种自监督卷积神经网络,能够同时学习兴趣点的检测与描述。在具有显著几何和光照变换的场景中,SuperPoint 在重复性和匹配精度方面表现出色。此外关键点的空间分布在 SLAM 系统中也至关重要,均匀的分布有助于提升特征跟踪的稳定性和位姿估计的准确性。自适应非极大值抑制(ANMS) 是一种有效的方法,它根据局部特征强度动态调整抑制半径,从而实现关键点选择的空间均匀性。本研究提出将 SuperPoint 特征集成进 ORB-SLAM3,替代传统的 ORB 特征,并引入 ANMS 来优化关键点的空间分布。在 KITTI 里程计数据集上对改进后的系统进行了评估,该数据集包含具有真实位姿的具有挑战性的户外序列。实验结果表明所提出的改进在定位精度和鲁棒性方面均有显著提升,验证了将基于深度学习的特征与空间关键点分布策略整合进 SLAM 流程的有效性。
主要内容
这里将详细介绍为将 SuperPoint 特征和自适应非极大值抑制(ANMS)集成进 ORB-SLAM3 框架而进行的各项修改。将讨论算法层面的变更、数据处理结构上的调整,以及在实现过程中遇到的挑战。我们的目标是通过利用 SuperPoint 出色的特征检测与描述能力,并结合 ANMS 实现关键点的空间均匀分布,从而增强 SLAM 系统的鲁棒性与精度。系统架构的详细实现可以参考图 1 中所展示的内容。图 1. SuperPoint-SLAM3 的系统架构,将 SuperPoint 和 ANMS 集成到 ORB-SLAM3 流程中。
A. ORB-SLAM3 概述
ORB-SLAM3 是一种基于特征的视觉 SLAM 系统,利用 ORB(定向 FAST 和旋转 BRIEF)特征进行关键点检测与描述,从而实现实时运行。该系统由三个主要线程组成:
跟踪线程(Tracking Thread):处理输入图像,通过将当前帧特征与局部地图进行匹配来估计相机位姿。
局部建图线程(Local Mapping Thread):负责局部地图的创建与优化,包括关键帧的插入和局部束调整(Local Bundle Adjustment)。
闭环检测线程(Loop Closing Thread):通过基于词袋模型(BoW)的场景识别系统进行回环检测,并执行位姿图优化以修正累计的漂移误差。
尽管 ORB 特征在计算上高效,但由于其对尺度、旋转和光照变化较为敏感,在复杂视觉条件下可能限制系统性能。
B. SuperPoint 特征的集成
为了提升特征的鲁棒性,将 ORB 特征提取与描述模块替换为 SuperPoint,这是一种基于深度学习的方法,能够提供更具判别性和更具不变性的关键点与描述子。
1)SuperPoint 网络集成:
模型选择:采用了作者提供的预训练 SuperPoint 网络,该网络基于 PyTorch 实现,可借助 GPU 加速,且开发者易于使用。
输入处理:输入图像会根据 SuperPoint 网络的要求进行缩放与归一化处理,并转换为灰度图像,因为 SuperPoint 仅支持单通道输入。
特征提取:SuperPoint 网络输出一组关键点位置以及对应的 256 维描述子。关键点是通过检测网络生成的概率热力图中的峰值位置获得的。
非极大值抑制:SuperPoint 内部包含非极大值抑制机制,用于精细化关键点检测。
2)对 ORB-SLAM3 的修改:
跟踪模块的调整:修改了 Tracking 线程中的特征提取部分,使其使用 SuperPoint。关键点与描述子的相关数据结构也被更新,以支持浮点型描述子(取代原来的二进制 ORB 描述子)。
描述子匹配:由于 SuperPoint 描述子是高维浮点向量,我们用欧氏距离(L2 范数)替代了 ORB 特征中使用的汉明距离进行匹配。
数据结构:特征存储与地图点表示被更新,以适应更大尺寸的描述子。这包括对序列化和内存管理程序的修改,以处理增加的数据量。
C. 自适应非极大值抑制(ANMS)的实现
为了确保关键点在图像中的空间分布均匀,在 SuperPoint 初始关键点检测之后实现了 ANMS 方法。
1)算法描述:
ANMS 的工作原理是选择那些不仅响应强,而且在空间上分布均匀的关键点。对于每一个关键点,会根据其相对于邻近关键点的响应强度,计算一个“抑制半径”。
抑制半径计算:对于每个关键点 ki,计算最小半径 ri,使得在该半径范围内,不存在其他响应更高的关键点 kj,即 sj>si。
关键点选择:将所有关键点按其抑制半径 rir_iri 从大到小排序,选择前 N 个关键点,以同时确保响应强度和空间分布的均衡。
2)与 SuperPoint 的集成:
非极大值抑制的修改:调整了 SuperPoint 内部的非极大值抑制机制,使其输出更多初始关键点,以便 ANMS 能够执行最终的筛选。
参数调优:关键点数量 N 通过实验经验确定,以平衡特征丰富性与计算开销。在 KITTI 数据集中,发现 N = 1000 的效果较好。
实现细节:为提高效率,采用了如 kd-tree 等数据结构,在计算抑制半径时加速最近邻搜索过程。
D. 描述子匹配与数据关联
1)描述子匹配算法:
匹配策略:我们使用了基于 L2 距离的暴力匹配算法,并通过 GPU 加速进行优化。
比值测试:采用 Lowe 提出的比值测试来过滤不确定的匹配。当最近邻与次近邻之间的距离比低于某一阈值(通常为 0.7)时,才接受该匹配结果。
交叉验证:为提升鲁棒性,我们进行匹配的交叉验证,确保帧间匹配为“互为最佳匹配”。
2)对系统各模块的影响:
跟踪线程:相机位姿估计依赖于当前帧特征与地图点之间的精确匹配。使用改进后的描述子提高了匹配精度,从而提升了位姿估计效果。
局部建图线程:由于特征数量增加且分布更广,需要调整地图点和关键帧的生成策略,以适应新的特征数据量和空间分布。
E. 兼容性问题的处理
1)描述子维度问题:
描述子维度增加:SuperPoint 的描述子为 256 维浮点向量,而 ORB 的为 32 字节二进制,前者需要更多内存,并需在数据存储和传输方面进行调整。
序列化处理:对地图的序列化逻辑进行了更新,使其支持浮点型描述子,从而确保地图数据能够正确地保存与加载。
2)回环检测模块:
与 BoW 不兼容:ORB-SLAM3 中的词袋(BoW)回环检测系统是专为二进制描述子设计的,无法直接使用 SuperPoint 描述子。
临时解决方案:在初步测试阶段,我们暂时关闭了回环检测功能,从而专注于评估 SuperPoint 特征对跟踪与建图性能的影响。
未来工作:我们计划引入基于学习的场景识别方法,如 NetVLAD,它能够处理高维浮点描述子。
3)深度过滤策略:
实现细节:对于估计深度大于 20 米的地图点对应的特征,我们予以丢弃,以减少远距离特征的不确定性带来的影响。
原因分析:由于立体相机的基线有限,远处特征的深度估计往往不准确,这类特征对精确位姿估计帮助有限。
对建图的影响:该过滤策略提高了系统鲁棒性,使其更专注于距离较近、几何约束更可靠的特征点。
F. 计算优化考虑
1)性能优化:
GPU 加速:SuperPoint 的推理过程在 GPU 上执行,相比于 CPU,显著降低了计算时间。
批量处理:我们通过对图像批量处理来优化数据处理流程,从而减少每帧图像的处理开销。
并行化:特征匹配和 ANMS 的计算使用多线程进行并行化,以充分利用多核 CPU 架构的性能。
2)实时性运行:
性能分析:我们对系统进行性能分析,以识别瓶颈。结果发现特征提取和匹配阶段的计算量最大。
优化技术:采用高效的数据结构与算法(如近似最近邻搜索)以降低计算时间。
性能权衡:在计算负载与系统性能之间进行了权衡,通过调整关键点数量和匹配阈值等参数来达到平衡。
G. 实现中的挑战
1)内存管理:
内存占用增加:由于 SuperPoint 描述子维度较大,导致地图的内存占用明显上升。我们通过优化内存的分配与释放机制,防止内存泄漏并降低系统开销。
垃圾回收:对未使用的地图点和关键帧进行了更积极的清理,以控制内存消耗。
2)算法稳定性:
收敛问题:最初的实验显示,由于 SuperPoint 特征具有不同的特性,优化过程出现不稳定。我们调整了捆绑调整中的收敛条件和异常值剔除阈值,以提升稳定性。
3)系统集成:
代码复杂性:ORB-SLAM3 是一个模块间高度依赖的复杂系统,确保一个模块的修改不会对其他模块产生负面影响,需要进行细致的测试与验证。
文档与可维护性:我们对代码的修改部分做了详尽的文档记录,以便于后续的开发与调试工作。
实验结果与讨论
在 KITTI 里程计数据集(序列 00 至 10)和 EuRoC MAV 数据集上对三种系统进行了评估。评估指标包括绝对轨迹误差(ATE)、相对位姿误差(RPE),以及二维和六维位姿下的平均平移误差和旋转误差。
A. 定量结果轨迹可视化对比
我们绘制了所有序列(00 到 10)的二维投影轨迹(XZ 平面)和六自由度位姿轨迹。图中显示的是估计轨迹与 KITTI 数据集中提供的真实轨迹的对比叠加情况。
图 2. 序列 00 至 10 在二维轨迹(XZ 平面)上的对比分析,比较了 ORB-SLAM3、SuperPoint 及 SuperPoint + ANMS 的表现。
观察结果
1)ORB-SLAM3:
在缺乏回环检测的序列中表现出明显的漂移。
漂移随着时间积累,导致与真实轨迹产生显著偏差。
2)SuperPoint SLAM:
相比 ORB-SLAM3 漂移显著减少。
由于 SuperPoint 描述子更具鲁棒性,特征匹配效果更好。
3)SuperPoint SLAM + ANMS:
进一步减少漂移,提升轨迹估计精度。
关键点空间分布更加均匀,增强了位姿估计的稳定性。
图 3. ORB-SLAM3、SuperPoint 及 SuperPoint + ANMS 的六自由度位姿估计对比分析。
1)无回环检测的序列中的漂移:
ORB-SLAM3 在缺乏回环机会的序列中出现明显漂移。
启用 ANMS 的 SuperPoint SLAM 显示出更好的效果,轨迹更接近真实轨迹。
2)垂直轴和俯仰角的抖动:
当车辆行驶在不平整地面(如减速带)时,在 Y 轴(垂直方向)和俯仰角上出现明显抖动。
这一现象在 ORB-SLAM3 中更为严重,在 SuperPoint SLAM + ANMS 中有所缓解。
3)错误的回环检测尝试:
在 SuperPoint SLAM + ANMS 中,我们观察到系统尝试将当前位置与相距约 350 米的初始位置闭环,即使该序列中实际上并没有回环。
该问题的根本原因是 ORB-SLAM3 的词袋(BoW)回环检测机制与 SuperPoint 描述子不兼容,导致误判。
回环检测模块需要适配或替换,以便与 SuperPoint 特征有效结合。
总结
通过将 SuperPoint 特征和 ANMS 集成到 ORB-SLAM3 中,取得了定位精度和鲁棒性的显著提升。初步结果表明,基于深度学习的特征能够有效增强传统的 SLAM 系统。回环检测模块:由于 SuperPoint 特征描述子是 256 维浮点向量,而 BoWV2 基于汉明距离运作,我们需要通过调整相似度度量和阈值,引入基于学习的回环检测机制,以解决当前的回环检测问题。计划在更多数据集上进行测试,包括多模态数据集,以评估系统在不同场景和传感模式下的性能表现。