计算视觉——Bag of features:图像检索

计算视觉——Bag of features:图像检索

  • 一、BOW模型简介
  • 二、 Bag of features基础流程
    • 2.1 特征提取
    • 2.2 学习"视觉词典"
    • 2.3 将输入的图像,根据TF-IDF转化成视觉单词的频率直方图
    • 2.4 构造特征到图像的倒排表,通过倒排表快速索引相关图像
    • 2.5 根据索引结果进行直方图匹配
  • 三、图像检索实验
    • 3.1实验要求
    • 3.2 实验准备
    • 3.3 实验结果及分析
  • 四、总结

一、BOW模型简介

Bag-of-words模型应用于文档表示:
在信息检索中,BOW模型假定对于一个文档,忽略它的单词顺序和语法、句法等要素,将其仅仅看作是若干个词汇的集合,文档中每个单词的出现都是独立的,不依赖于其它单词是否出现。 也就是说,文档中任意一个位置出现的任何单词,都不受该文档语意影响而独立选择的。
Bag-of-features模型应用于图像:
采用k -means 聚类方法对所提取的大量特征进行无监督聚类,将具有相似性较强的特征归入到一个聚类类别里,定义每个聚类的中心即为图像的“单词”,聚类类别的数量即为整个视觉词典的大小。这样,每个图像就可以由一系列具有代表性的视觉单词来表示, 在得到每类图像的视觉单词袋表示之后,便可以应用这些视觉单词来构造视觉词典,然后对待分类图像进行同样方法的特征提取和描述,最后将这些特征对应到视觉词典库中进行匹配,去寻找每个特征所对应的最相似的视觉单词,得到直方图统计表示,然后应用分类器进行分类。这样就将应用于文档处理的BOW模型思想成功地移植到了图像处理领域。

二、 Bag of features基础流程

图像库–>sift特征提取–>局部特征描述子–>K-means算法聚类–> 视觉词典

2.1 特征提取

运用sift算子提取图像特征。

2.2 学习"视觉词典"

利用K-Means算法构造单词表。用K-means对第二步中提取的N个SIFT特征进行聚类,K-Means算法是一种基于样本间相似性度量的间接聚类方法,此算法以K为参数,把N个对象分为K个簇,以使簇内具有较高的相似度,而簇间相似度较低。聚类中心有k个(在BOW模型中聚类中心我们称它们为视觉词),码本的长度也就为k,计算每一幅图像的每一个SIFT特征到这k个视觉词的距离,并将其映射到距离最近的视觉词中(即将该视觉词的对应词频+1)。完成这一步后,每一幅图像就变成了一个与视觉词序列相对应的词频矢量。
计算视觉——Bag of features:图像检索_第1张图片

2.3 将输入的图像,根据TF-IDF转化成视觉单词的频率直方图

在文本检索中,不同的单词对文本检索的贡献有差异。运用到图像检索中也是同样的道理,每张图片都具有的共性特征的权重应该被降低。
投票值的大小也就是直方图上柱体的高度。
计算视觉——Bag of features:图像检索_第2张图片

  • TF-IDF的主要思想是:如果某个单词在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。

  • TF是词频(Term Frequency)
    词频(TF)表示词条(关键字)在文本中出现的频率。
    在这里插入图片描述在这里插入图片描述
    其中 ni,j 是该词在文件 dj 中出现的次数,分母则是文件 dj 中所有词汇出现的次数总和;

  • IDF是逆向文件频率(Inverse Document Frequency)
    逆向文件频率 (IDF) :某一特定词语的IDF,可以由总文件数目除以包含该词语的文件的数目,再将得到的商取对数得到。如果包含词条t的文档越少, IDF越大,则说明词条具有很好的类别区分能力。
    在这里插入图片描述在这里插入图片描述
    |D| 是语料库中的文件总数。 ∣ j : t i ∈ d j ∣ |{j:ti∈dj}| j:tidj表示包含词语 ti 的文件数目(即 ni,j≠0 的文件数目)。如果该词语不在语料库中,就会导致分母为零,因此一般情况下使用 1 + ∣ j : t i ∈ d j ∣ 1+|{j:ti∈dj}| 1+j:tidj

  • TF-IDF实际上是:TF * IDF
    某一特定文件内的高词语频率,以及该词语在整个文件集合中的低文件频率,可以产生出高权重的TF-IDF。因此,TF-IDF倾向于过滤掉常见的词语,保留重要的词语。
    T F − I D F = T F ∗ I D F TF-IDF = TF *IDF TFIDF=TFIDF

2.4 构造特征到图像的倒排表,通过倒排表快速索引相关图像

倒排法也就是特征到图像的映射关系。

2.5 根据索引结果进行直方图匹配

三、图像检索实验

3.1实验要求

  1. 构造不小于100张图片的数据集
  2. 针对数据集,做SIFT特征提取
  3. 根据SIFT特征提取结果,采用k-means算法学习“视觉词典(visual vocabulary)”,其中维度至少满足4个量级(比如10, 50, 100, 1000, 5000 )
  4. 根据IDF原理,计算每个视觉单词的权
  5. 针对数据库中每张图片的特征集,根据视觉词典进行量化,以及TF-IDF解算。每张图片转化成特征向量
  6. 对于输入的检索图像(非数据库中图片),计算SIFT特征,并根据TF-IDF转化成频率直方图/特征向量
  7. 构造检索图像特征到数据库图像的倒排表,快速索引相关候选匹配图像集
  8. 针对候选匹配图像集与检索图像进行直方图/特征匹配

3.2 实验准备

  1. 实验环境:python 3.6.5
  2. 数据集:数据集为100张多个类别的图片,包括建筑,人物,风景,绘画,生活用品等。

3.3 实验结果及分析

比较不同维度下的检索效果(k=10,50,100,1000,5000)
目标图片1:

变形金刚玩具模型在我的数据集里总共有4张:
计算视觉——Bag of features:图像检索_第3张图片

  1. k = 50
    在这里插入图片描述
  2. k = 100
    计算视觉——Bag of features:图像检索_第4张图片
  3. k = 1000
    计算视觉——Bag of features:图像检索_第5张图片

小结:
变形金刚玩具的这组图片轮廓清晰,图片整体简洁,特征明显,存在旋转角度和拍摄角度的变换,随着维度的增加,检索到的正确图片增多,但维度过大过小时,检索效果都比较差。

目标图片2:
计算视觉——Bag of features:图像检索_第6张图片
尚大楼在我的数据集里总共有17张:
计算视觉——Bag of features:图像检索_第7张图片

  1. k = 500
    计算视觉——Bag of features:图像检索_第8张图片
  2. k = 100
    计算视觉——Bag of features:图像检索_第9张图片
  3. k = 1000
    计算视觉——Bag of features:图像检索_第10张图片
    小结:
    尚大楼的这组图片数量会比变形金刚的那一组多,而且图片内容整体比较复杂,存在比较多变的拍摄角度和光线,从不同维度的检索效果来看, 适当选取的维度值检索效果比较好。

四、总结

  1. 通过上面两组图片的检索效果来看,当维度k取值过小时,图片特征的类别会比较小,归类模糊,这样划分的图片字典特征性不强,所以检索结果也会不太理想,当维度设置的过大时,会产生过拟合的效果,划分的类别过多,只有一点差异的特征也会被划分为不同的字典,导致最终得到的检索结果也会比较差。应选取适当的维度值,最终检索到的结果才会比较好。
  2. 第一组图片存在旋转拍摄角度的变化,第二组图片存在远近距离拍摄角度光线变化的变化,在这些因素的影响下,算法依然能够有较高的检索正确率,说明算法对旋转角度,拍摄角度,以及距离和光线变化这些因素不敏感。
  3. 第二组图片数量大,相较第一组检索效果要好,说明字典频率越高,越容易检索到,数据集越大,更有助于k-means算法学习“视觉词典”,划分的类别特征性更强,更容易检索出正确的图片。

参考链接:
[1]:https://blog.csdn.net/qq_42617827/article/details/90048221
[2]:https://blog.csdn.net/Darlingqiang/article/details/81358531
[3]:https://blog.csdn.net/asialee_bird/article/details/81486700

你可能感兴趣的:(计算视觉——Bag of features:图像检索)