V-SLAM整理4

第11讲 回环检测

11.1 概述

11.1.1 回环检测的意义

累积误差在所难免,导致漂移

回环检测模块能够给出除了相邻帧的一些更久远的约束(经过同一处),其关键在于如何有效的检测出相机经过了同一个地方。

意义:

  • 关系到估计的轨迹和地图在长时间下的正确性
  • 回环检测可以提供当前数据与历史数据的关系,因此可以利用回环检测做重定位

11.1.2 回环检测的方法

一些方法:

  • 基于外观的回环检测
    • 核心是计算图像间的相似度
  • 室外:GPS提供全局信息

两个概念:

  • 感知偏差
  • 感知变异

11.1.3 准确率和召回率

准确率 & 召回率:

  • 准确率:提取的所有回环中确实是真实回环的概率
  • 召回率:真实回环中被正确检测出来的概率

一般为了评价算法的好坏,会做Precision-Recall曲线。

  • SLAM中对准确率要求更高,对召回率相对宽容。
    • 回环检测算法参数设置更严格
    • 检测之后加上回环验证步骤

11.2 词袋模型BoW

词袋的目的是用“图像上有哪几种特征”来描述一幅图像,重点是“是否出现某特征”,而不是“在哪出现某特征”

【试试NLP?】

步骤:

  • 单词-字典
  • 确定图像中出现了字典中的哪些单词:图像转换成一个向量的描述
  • 比较上一步中的描述的相似度

11.3 字典

11.3.1 字典的结构

字典生成问题类似于一个聚类问题。

已知对大量图像提取的特征点,目标是找一个含k个单词的字典,每个单词是局部相邻特征点的集合。也就是说,有N和数据,想把他们归成k个类,用K均值算法

进阶:层次聚类法、K-mean++等


我们已经将提取到的大量特征点聚类成了含有k个单词的字典,现在的问题是:如何根据图像中某个特征点查找字典中相应的单词。

方法:

  • Fabmap
  • Chou-Liu tree
  • k叉树

为了提高查找速度,在K-mean基础上使用k叉树来表达字典:

k叉树:N个特征点,目标是构建一个深度为d、每次分叉为k的数。该字典有k^d个单词。

11.3.2 编程:创建字典

生成、使用ORB字典

BoW库:DBoW3

11.4 相似度计算

11.4.1 理论部分

对于任意特征fx,都可以在字典树中找到与之对应的单词wj。

我们还希望对单词的区分性或重要性加以评估——附权值:

方案:TF-IDF

  • TF:某单词在一幅图像中越经常出现,它的区分度就越高
  • IDF:某单词在字典中出现的频率越低,用它分类图像时区分度越高

IDF:在建立字典时计算IDF,统计某叶子节点wi中特征数量相对于所有特征数量的比例

TF:某个特征在单幅图像中出现的频率

wi权重:

对于某图像A,通过词袋,可以用单个向量vA来描述它:

A、B图像差异性计算(相似度=1-差异性):

11.4.2 编程:相似度的计算

代码没有出错,但结果并不令人满意:相似图像的相似度5%,无关图像相似度2%

11.5 实验分析与评述

11.5.1 增加字典规模

使用更大的字典检测图像相似度,效果能好一点

11.5.2 相似性评分的处理

引入先验相似度:表示某时刻关键帧图像与上一时刻关键帧的相似性

先验相似度对相似度进行归一化处理:

如果当前帧与历史关键帧的相似度 超过了 当前帧与上一个关键相似度的3倍——>存在回环

  • 避免引入绝对相似性阈值

11.5.3 关键帧的处理

如果关键帧选的太近,会导致两相近帧的相似度过高,不利于在历史帧中检测回环。因此,用于回环检测的帧最好稀疏一些,彼此区别,且覆盖整个环境。

另外,为了避免重复检测,会把”相近”的的回环聚成一类,以免算法总重复检测回环n帧的邻居们。

11.5.4 检测之后的验证

为了降低假阳性(感知偏差),在回环检测之后加设验证步骤。

方法:

  • 时间一致性检测:设立回环的缓存机制,只有一段时间中一直检测到的回环,才是正确的回环
  • 空间一致性检测:对回环检测到的两帧进行特征匹配,估计相机运动。在之前的位姿图中,检测运动是否有很大变化。

    11.5.5 与机器学习的关系

    聚类问题

可以引入CNN,比如BoW的改进版VLAD


第12讲 建图

在实际使用SLAM时,除了对相机本体进行定位,还有许多其他需求,

  • 定位
  • 导航
  • 避障
  • 交互

显然,特征点地图不能满足所有需求,需要根据需求引入各种形式的地图。

12.1 概述

有需要再整理

12.2 单目稠密重建

12.2.1 立体视觉

12.2.2 极线搜索与块匹配

12.2.3 高斯分布的深度滤波器

12.3 编程:单目稠密重建

12.3.1 实验分析与讨论

12.3.2 像素梯度的问题

12.3.3 逆深度

12.3.4 图像间的变换

12.3.5 并行化:效率的问题

12.3.6 其他的改进

12.4 RGB-D稠密建图

12.4.1 编程:点云地图

点云库PCL

12.4.2 从点云重建网络

12.4.3 八叉树地图

12.4.4 编程:八叉树地图

12.5 TSDF地图和Fusion系列

12.6 小结

  • Copyrights © 2021-2022 阿波罗猫

请我喝杯咖啡吧~

支付宝
微信