zoukankan      html  css  js  c++  java
  • DBoW2 词袋模型笔记

    DBoW算法用于解决Place Recognition问题,ORB-SLAM,VINS-Mono等SLAM系统中的闭环检测模块均采用了该算法。来源于西班牙的Juan D. Tardos课题组。

    主要是基于词袋模型(BoW)https://en.wikipedia.org/wiki/Bag-of-words_model_in_computer_vision。在10000张train image图像数据库中找到query image的匹配图像耗时<39ms,并有较高的召回率和较低的false positive。

    理解词袋模型最重要的是要明白什么叫特征向量?什么叫一个视觉单词?又是什么叫词袋向量?

    特征向量 - 单个视觉特征描述子

    视觉单词 - 词典中的聚类中心,带有权重的单个视觉特征描述子

    词袋向量 - 一张图片用词袋中每个单词是否出现(+ 出现的次数 + TF-DF)组合而成的向量(体现多个视觉特征描述子)

    没看懂?请看下面

    一. 主要步骤:

    构建字典(Vocabulary):将图像数据库转换为索引图(k叉树)

    template<class TDescriptor, class F>
    class TemplatedDatabase
    {
      ...
    };

    近似最近邻(ANN)搜索:将一张图片中特征的描述子通过在k叉树种搜索转换为视觉单词(visual word),多个视觉单词组成词袋向量(BoW Vector)

    template<class TDescriptor, class F>
    class TemplatedVocabulary
    {
      ...
    };

    二. 具体算法:

    1. 离线步骤 - 构建字典(聚类问题,也称为无监督分类):

    • 主要采用K-means算法,将用于训练的图像数据库中的视觉特征(DBoW3中支持ORB和BRIEF两种二进制描述子)归入k个簇(cluster)中,每一个簇通过其质心(centroid)来描述,聚类的质量通常可以用同一个簇的误差平方和(Sum of Squared Error,SSE)来表示,SSE越小表示同一个簇的数据点越接近于其质心,聚类效果也越好。这里的“接近”是使用距离度量方法来实现的,不同的距离度量方法也会对聚类效果造成影响(后面会提到)。K-means优点是容易实现,缺点是在大规模数据集上收敛较慢,并且可能收敛到局部最小,造成该簇没有代表性。对于描述子这种高维空间的大规模聚类,粗暴使用K-means会有问题。因此会使用其变种Hierarchical K-means或者K-means++。

    将训练图像数据库中所有N个描述子分散在一个k分支,d深度的k叉树的叶子节点上,如下图,分支数为3,深度为Lw,这样一个树结构有叶子结点3Lw个。可以根据场景大小,需要达到的效果修改k和d的数值。这样query image进来检索时,可以通过对数时间的复杂度(d次 = logN)找到其对应的聚类中心,而不是使用O(n)的时间复杂度的暴力检索。

    然后,为了提高检索时的效率、成功率以及准确率,还采用了下述算法

    • 倒排索引(Inverse Index)
    • 正排索引(Direct Index)
    • TF-IDF(Term Frequency - Inverse Document Frequency)

    2. 在线步骤 - 近似最近邻检索(ANN Retrieval)

    由于ORB和BRIEF描述子均为二进制,因此距离度量采用汉明距离(二进制异或计算)。query image的描述子通过在字典的树上检索(找到最近邻的叶子节点)视觉单词,组成一个词袋向量(BoW vector),然后进行词袋向量之间的相似度计算,得到可能匹配的ranking images。最后还需要利用几何验证等方法选出正确(只是概率最大。。。)的那张图片。

  • 相关阅读:
    Github开源人脸识别项目face_recognition
    yolo源码解析(3):进行简单跳帧
    [转]详细解读TrueSkill 排名系统
    yolo源码解析(3):视频检测流程
    Java中replace和replaceall的区别
    对input输入框日期显示格式化
    Eclipse修改编码字体
    Eclipse修改控制台字体
    Eclipse文档注释导出doc
    数组的定义方式及初始化
  • 原文地址:https://www.cnblogs.com/shang-slam/p/9677973.html
Copyright © 2011-2022 走看看