视觉SLAM十四讲——第十二讲:回环检测

@ 《视觉SLAM十四讲》知识点与习题

《视觉SLAM十四讲》第十二讲知识点整理+习题

正在学习SLAM相关知识,将一些关键点及时记录下来。

知识点整理

回环检测的目的在于使得机器人可以判断是否之前运动到过当前位置,目的在于构建全局一致的地图

  1. 回环检测:可以给出除了相邻帧之外的时隔更加久远的约束,它关系到估计的轨迹和地图在长时间下的正确性。且可以在跟踪算法丢失之后,利用回环检测进行重定位
  2. 基于外观的回环检测:仅根据两幅图像的相似性确定回环检测关系,核心问题在于如何计算图像间的相似性
  3. 注意,2中的计算相似性不能直接通过将两幅图像的像素直接相减来度量,因为灰度本身受光照影响,且当相机视角发生改变时也会对像素带来一个较大的差异值
  4. 回环检测的结果视觉SLAM十四讲——第十二讲:回环检测
    希望TP和TN要尽量高,而FP和FN要尽可能低
  5. 准确率和召回率视觉SLAM十四讲——第十二讲:回环检测
    其中准确率是指算法提取的所有回环中确实是真实回环的概率
    召回率是指在所有真实回环中被正确检测出来的概率
    准确率和召回率是一对矛盾,可以用它们俩来进行判断。构建Precision-Recall曲线,会关心整条曲线偏向右上方的程度,100%准确率下的召回率或者50%召回率时的准确率,作为评价算法的指标
  6. 在SLAM中对于准确率要求更高,而对召回率则相对宽容些。所以在选择回环检测算法时,更倾向于把参数设置得更严格一些,或者在检测之后再加上回环验证的步骤
  7. 词袋模型:用单词出现的情况描述整幅图像,相当于把一幅图像转换成了一个向量的描述,进而可以去比较描述的相似程度。描述向量说的是“是否出现”,而不管它们“在哪里出现”,所以有物体的空间位置和排列顺序无关,所以,即使相机发生少量运动时,只要物体仍在视野中出现,就可以保证该描述向量不发生改变
  8. 字典中的单词:一个单词不是从单幅图像上提取出来的,而是某一类特征的组合,因此字典生成问题类似于一个聚类问题,可以使用经典的k-means方法来实现。实际BoW使用时字典往往是从更大的数据集生成的,而且最好是来自与目标环境类似的地方
  9. 根据图像中某个特征点查找字典中相应的单词:使用k叉树来表达字典,构建一个深度为d,每次分叉为k的树,做法为:
    视觉SLAM十四讲——第十二讲:回环检测
    会对每一层中属于该结点的样本再聚成k类,的到下一层。叶子层即为所谓的Words
    可以实现对数级别的查找效率
  10. 相似度计算:有了字典之后,给定任意特征,只要在字典树中逐层查找,最后都能找到与之对应的单词。“那么假设一幅图像中提取了N个特征,找到这N个特征对应的单词之后,我们就相当于有了该图像单词列表中的分布,或者直方图”
  11. TF-IDF译频率-逆文档频率:可以对单词的区分性或重要性加以评估,给它们不同的权值以起到更好的效果。TF:某一单词在一幅图像中经常出现,它的区分度就高。IDF:某单词在字典中出现的频率越低,则分类图像时区分度越高
    视觉SLAM十四讲——第十二讲:回环检测
    视觉SLAM十四讲——第十二讲:回环检测
  12. 相似性评分的处理:有时单纯的分值的绝对值并不一定有很好的帮助,需要的时一个相似性。此时可以引入先验相似度,它表示某时刻关键帧图像与上一时刻的关键帧的相似性。之后,其他的分值都参照这个值进行归一化。此时,如果当前帧与之前某关键帧的相似度超过当前帧与上一个关键帧相似度的3倍,则认为可能存在回环。本步骤可以比秒引入绝对的相似性阈值视觉SLAM十四讲——第十二讲:回环检测其中,分母项即为先验相似度
  13. 关键帧的处理:实践上,用于回环检测的帧最好稀疏一些,彼此之间不太相同,又能涵盖整个环境同时可以将“相近”的回环聚成一类,是算法不要反复的检测同一类的回环,因此此时同一类中后面的几个帧对于回环检测的帮助来说没有那么大了
  14. 回环检测的验证是必须的:因为词袋模型完全依赖于外观,而没有利用任何几何信息,容易将外观相似的图像当作回环

习题

还没做,之后来填坑

  1. 计算PR曲线的小程序
  2. 根据TUM数据集给出的标准轨迹,学习
  3. 学习如何使用DBoW3或DBoW2来检测回环
  4. Chow-Liu树