DBOW 词袋模型,图像池袋

BoW基本简介

Bag of words模型最初被用在文本分类中,将文档表示成特征矢量。它的基本思想是假定对于一个文本,忽略其词序和语法、句法,仅仅将其看做是一些词汇的集合,而文本中的每个词汇都是独立的。

举例说明

文档一:Bob likes to play basketball, Jim likes too.  
文档二:Bob also likes to play football games.

基于这两个文本文档,构造一个词典: Dictionary = {1:”Bob”, 2. “like”, 3. “to”, 4. “play”, 5. “basketball”, 6. “also”, 7. “football”,8. “games”, 9. “Jim”, 10. “too”}。

基于上述的词典可以构造出一个两个直方图向量 
1:[1, 2, 1, 1, 1, 0, 0, 0, 1, 1] 
2:[1, 1, 1, 1 ,0, 1, 1, 1, 0, 0] 
这两个向量共包含10个元素, 其中第i个元素表示字典中第i个单词在句子中出现的次数. 因此BoW模型可认为是一种统计直方图 (histogram). 

DBoW3库介绍

        DBoW3是DBoW2的增强版,这是一个开源的C++库,用于给图像特征排序,并将图像转化成视觉词袋表示。它采用层级树状结构将相近的图像特征在物理存储上聚集在一起,创建一个视觉词典。DBoW3还生成一个图像数据库,带有顺序索引和逆序索引,可以使图像特征的检索和对比非常快。

 DBoW3与DBoW2的主要差别:

        1、DBoW3依赖项只有OpenCV,DBoW2依赖项DLIB被移除;

        2、DBoW3可以直接使用二值和浮点特征描述子,不需要再为这些特征描述子重写新类;

        3、DBoW3可以在Linux和Windows下编译;

        4、为了优化执行速度,重写了部分代码(特征的操作都写入类DescManip);DBoW3的接口也被简化了;

        5、可以使用二进制视觉词典文件;二进制文件在加载和保存上比.yml文件快4-5倍;而且,二进制文件还能被压缩;

        6、仍然和DBoW2yml文件兼容。

        DBoW3有两个主要的类:Vocabulary和Database。视觉词典将图像转化成视觉词袋向量,图像数据库对图像进行索引。

1.词典生成流程

Vocabulary branch factor:kw
Vocabulary depth levels :Lw

整个步骤流程如下图:


产生词典树形结构的步骤:
所有特征描述子分布在特征空间->
根据设定好的树形结构参数,进行kmean++聚类,产生叶子结点->
对产生的节点依次进行kmean++聚类,直至产生根节点。


      逆序指针指向一个数据对<图像It, 视觉词袋向量vti>,可以快速获取图像上的视觉单词的权重。当新的图像It加入到图像数据库中的时候,逆序指针就会更新,也方便在数据库中查找图像。逆序索引用于提取与给定图像相似的图像。这个结构用于存储视觉单词,视觉单词组成视觉字典,视觉字典形成图像。检索图像、做比较操作时,就不会对比图像中相同的视觉单词,这对检索图像数据库非常有用。顺序索引有效地获取图像间的云点匹配,加快图像确认中的几何特征检验。顺序指针可以方便地存储每幅图像的特征。视觉字典中的节点是分层存储的,假如树一共有L层,从叶子开始为0层,即L=0,到根结束,l=Lw。对于每幅图像It,将l层的节点存储在顺序指针中,而l层的这些节点是图像It的视觉单词的父节点,局部特征ftj列表与每个节点关联。用顺序指针和词袋模型树估算BRIEF向量描述子空间中的最邻近的节点。对于那些特征属于相同的单词或具有第l层相同父节点的单词,计算特征的对应关系时,这些顺序指针可以加快几何验证过程。当获取一个将要匹配的候选特征时,几何验证非常必要,新图像加进数据库,顺序指针就会更新。

2、inverse index word(逆序索引单词):

1、逆序索引单词涵盖了所有出现的单词
2、每一个单词指向包含它的一系列图像
3、采用投票机制选取候选者,加速搜索

3、direct index image
主要用途:
在回环检测的最后阶段——几何结构验证阶段,可以加速匹配候选图像与当前图像之间的特征点对

inverse index 加快待比较的图像搜索速度 
由于 inverse index 存储了哪些图像也到达该叶子节点,在选择待比较的图像时,只需要比较到达相同叶子节点的图像,不需要和存储的每幅进行比较,从而加快比较速度。

direct index 加快特征比较速度 
假设图像  和  得分最高,在两幅图像特征匹配时,只需要比较 direct index 中属于同一个 node 的图像特征,node 指字典树的一层,如果是叶子节点层,那么选择是同一个 word 的特征做匹配。

感谢泡泡机器人大佬们和其他的博客辛勤整理

参考:

1.https://blog.csdn.net/qq_24893115/article/details/52629248

2.https://mp.weixin.qq.com/s?__biz=MzI5MTM1MTQwMw==&mid=2247487947&idx=1&sn=a161d5ba005adabbfef23ee823c3f34b&chksm=ec10afcfdb6726d9460e3992357b93a50fb622a805c785a9322d7cafb6f8d7d0b02494206fbd&mpshare=1&scene=25&srcid=0120tujPrzQBRJvOMRlHZuAr&pass_ticket=DyCv5iDYNGzqu%2FG5eHjGG4I5gZSFV%2B4a6kb08nDUOcc%3D#wechat_redirect

3.https://www.jianshu.com/p/023e5006499d

4.https://www.cnblogs.com/zhengmeisong/p/8446687.html

5.https://blog.csdn.net/amds123/article/details/72896807

猜你喜欢

转载自blog.csdn.net/u010451780/article/details/111186152