• 经典文献阅读之--BoW3D


    0. 简介

    相信大家在面试时候经常被问激光SLAM的回环方法。一般我们回答的比较笼统,我们在《SC-LEGO-LOAM 扩展以及深度解析》一文中提到了回环的策略,但是这两年又出来更多的方。相较于16年谷歌提出的《Real-Time Loop Closure in 2D LIDAR SLAM》2D激光雷达算法,最近文章《BoW3D: Bag of Words for Real-time Loop Closing in 3D LiDAR SLAM》就是提出了将词袋模型应用于3D激光雷达中。以实时构建词袋信息,目前作者并未开源代码,但是这并不影响其价值,可以使用视觉类似的词袋方法,不仅能有效地识别再次访问的回路位置,而且还能实时校正全6自由度回路姿态。BoW3D基于3D特征LinK3D构建词包,该特征高效、姿态不变,可用于精确的点对点匹配。

    1. 本文贡献

    在视觉SLAM领域,已经提出了许多算法来使用图像检索技术。它们通常通过将图像作为文字包(BoW)空间中2D特征的数值向量进行比较来匹配图像。BoW已被证明能够实现非常有效和快速的特征匹配,并促进了视觉SLAM的进展。但是在三维激光雷达SLAM领域,三维激光雷达点云的不规则性、稀疏性和无序性对三维特征提取和表示提出了挑战。在基于3D激光雷达的SLAM中,将3D特征应用于实时闭环和校正全6自由度环路姿态等问题仍然没有解决。

    在本文中提出了一种新的闭环方法,该方法为从激光雷达点云提取的三维特征构建一个词包。我们使用LinK3D作为3D点特征,并为名为BoW3D的3D点云提供词袋BoW。
    在这里插入图片描述
    同时为了实现快速检索,文中提出了一种基于哈希表的三维特征检索算法。找到匹配后,我们使用RANSAC和SVD的精确点对点LinK3D匹配结果计算全6自由度回路姿态。

    • 提出了一种基于具有3D特征的文字包的完整闭环系统。它建立了LinK3D特征数据库,可以实时有效地识别重访的地点。

    • 所提出的方法还可用于基于LinK3D的匹配结果实时校正全6自由度回路姿态,这使得我们的方法能够与在线操作中的后续回路优化过程一起使用

    • 所提出的方法已嵌入到最先进的激光雷达里程计系统中。实验结果表明,该方法可以显著消除漂移,提高三维激光雷达SLAM系统的精度。

    2. 主要内容

    2.1 LinK3D特征

    BoW3D基于LinK3D特征。LinK3D由三部分组成:关键点提取、描述符生成和特征匹配。如下图所示,LinK3D描述符的核心思想是使用邻域信息表示当前关键点,这是受2D图像特征SIFT和ORB的启发。LinK3D描述符由180维向量表示。描述符的每个维度对应于扇区区域。第一个维度对应于最近关键点所在的扇区区域,其他维度对应于按逆时针顺序排列的区域。LinK3D重量轻,可在32毫秒内构建。此外,LinK3D可用于实现精确的点对点匹配,因此适用于快速3D配准。等这篇代码开源后我们再详细的去看
    在这里插入图片描述

    2.2 词袋模型

    在2D图像领域,通过检索2D特征(如SIFT、ORB等),词袋(BoW)用于识别回环的地点。特别是,用于二进制ORB特征的BoW数据库已成功应用于实时位置识别任务。BoW通过从训练图像数据集中提取的一组描述符,在离线步骤中创建一个树结构的视觉词汇表。在处理新图像时,词汇表将提取的图像特征转换为低维向量,包含术语频率和逆文档频率(tf-idf)分数。tf-idf分数由下式计算:

    t f − i d f = n w i n i log ⁡ N n w tf-idf=\frac{n_{w i}}{n_{i}} \log \frac{N}{n_{w}} tfidf=ninwilognwN

    其中 n _ w i n\_{wi} n_wi为单词w在第i帧图片中出现的次数
    n i n_i ni为图片中的单词总数
    N N N所有的图片数 即当前记录了多少帧
    n w n_w nw单词w在所有图片中出现的总次数
    意思是如果一个词 w w w在所有图像中出现的次数越少,最终得分越高,这表明该词具有更高的辨别力。tf-idf总分越高,则代表图像中单词 w w w的频率越高,表明这个word不适合用来分类。

    如果一个词的分数足够高,则计算该词与数据库中的词之间的相似度。如果数据库中有相似的词,则使用反转索引搜索相应的图像。

    3. 详细方法

    所提出的系统主要由三部分组成。它首先提取原始点云中的LinK3D特征。然后,它使用A-LOAM的里程计和SLAM地图算法来估计机器人姿态。第三部分使用所提出的BoW3D来检测环路闭合并校正环路姿态。如果检测到并优化了环路,则环路闭合将向地图算法提供反馈并更新局部地图,这为后续步骤提供了更精确的姿态。
    在这里插入图片描述

    LinK3D描述符的每个维度代表相应区域中的特定关键点,这使得LinK3D描述符非常具有描述性。因此,我们的方法不需要通过在离线步骤中构建树的方法进行额外转换。因此,我们的BoW3D不需要加载额外的词汇文件,与原始的BoW算法相比,更便于实时位置识别。内存中数据库的结构下图所示,哈希表用于建立单词和单词出现的位置之间的一对一映射。哈希表的计算成本理论上是O(1)的复杂度,这使得它适合于高效检索。BoW3D词汇表中的单词由两部分构成:Dim_value为描述子计算得到的非零数,而Dim_ID为word相对应的维度数。对于每一张图片Place Set中的word集合也包含两种变量:FrameID为第几帧,DesID为一帧画面中的描述子的ID号
    在这里插入图片描述

    3.1 词袋存储

    …详情请参照古月居

  • 相关阅读:
    Java运算符
    el -table 多层级嵌套
    AlexNet网络结构详解与花分类数据集下载
    USB PD v1.0快速充电通信原理
    计算机毕业设计Java微博系统网站(源码+系统+mysql数据库+Lw文档)
    uni-app 使用 scss 实现推荐标签区域显示效果
    “华为杯”研究生数学建模竞赛2015年-【华为杯】B题:数据的多流形结构分析(附python代码实现)
    微信小程序|使用小程序制作一个世界杯球员识别工具
    进程管理(四)
    深度学习:pytorch nn.Embedding详解
  • 原文地址:https://blog.csdn.net/lovely_yoshino/article/details/126930234