【计算机视觉】基于BOW的图像检索

一、图像检索

1.1 Bag-of-words模型

  • BOW(Bag Of Words) 词袋模型起始可以被理解为一种直方图统计,被应用在文本分类中,将文档表示成特征矢量。它只统计频率信息,并没有序列信息。BOW是选择words字典,然后统计字典中每个单词出现的次数。
  • BOW的基本思想是假定对于一个文本,忽略其词序和语法,句法,仅仅将其看作是一些词汇的集合,而文本中的每个词汇都是独立的。简单说就是将每篇文档都看成一个袋子(因为里面装的都是词汇,所以称为词袋,Bag Of Words由此而来),然后看这个袋子里装的都是些什么词汇,将其分类。如果文档中猪、马、羊这样的词汇多一些,而大厦,公园,汽车这样的词汇少,我们就倾向于判断它是一篇描绘乡村的文档,而不是描述城镇的。
    在这里插入图片描述

1.2 Bag-of-features模型

  • 特征袋BOF是词袋BOW的一种改进,用于图像处理问题。只不过在图像中,我们抽出的不再是一个个word,而是图像的关键特征Feature,所以研究人员将它更名为Bag of Feature。
  • Bag Of Feature在检索中的算法流程和分类几乎完全一样,唯一的区别在于,对于原始的 BOF 特征,也就是直方图向量,我们引入TF-IDF 权值

二、BOF

2.1 原理

  • 将BOW的思想引入到图像中来,words在图像中用一种特定的特征描述子来代替。按照Bag of Features算法的思想,我们要找到图像中的关键词,这些关键词必须具备较高的区分度,通常会采用「SIFT」特征。
    在这里插入图片描述

  • 有了特征之后,我们会将这些特征通过聚类算法得出很多聚类中心。这些聚类中心通常具有较高的代表性。典型的聚类算法有k-means算法。我们将这些聚类中心组合在一起,形成一部字典。

2.2 图像检索基本流程

  1. 特征提取
  2. 学习 “视觉词典(visual vocabulary)
  3. 针对输入特征集,根据视觉词典进行量化
  4. 输入图像,根据TF-IDF转化成视觉单词(visual words)的频率直方图
  5. 构造特征到图像的倒排表,通过倒排表快速 索引相关图像
  6. 根据索引结果进行直方图匹配

2.3 sift特征提取

该特征提取原理可以参考之前写过的博文,指路:SIFT特征提取
在这里插入图片描述

2.4 学习视觉词典

  • 第一步提取完图像特征点之后,我们进行“视觉词典”的学习(流程图如下所示):
    在这里插入图片描述
  • 建立视觉单词的思想就是将描述算子空间量化成一些典型实例,并将图像中的每个描述算子指派到其中的某个实例中,这些典型实例可通过分析训练图像集确定。即从一个很大的训练集提取特征描述算子,利用一些聚类算法可以构建出视觉单词(聚类算法最常用的是K-means),视觉单词是在给定特征描述算子空间中一组向量集,采用K-means进行聚类得到的聚类质心;把输入图像,根据TF-IDF转化成视觉单词( visual words)的频率直方图 ,用视觉单词直方图来表示图像。

K-Means

K- Means是迭代动态聚类算法中的一种,其中K表示类别数,Means表示均值。顾名思义K-Means是一种通过均值对数据点进行聚类的算法。K-Means算法通过预先设定的K值及每个类别的初始质心对相似的数据点进行划分。并通过划分后的均值迭代优化获得最优的聚类结果。

  • 最小化每个特征xi与其相对应的聚类中心mk之间的欧式距离:
    在这里插入图片描述

K-Means算法流程

  • 随机初始化 K 个聚类中心
  • 重复下述步骤直至算法收敛:
  • 对应每个特征,根据距离关系赋值给某个中心/类别
  • 对每个类别,根据其对应的特征集重新计算聚类中心

对于算法步骤的理解

  • 第一步是为待聚类的点寻找聚类中心
  • 第二步是计算每个点到聚类中心的距离,将每个点聚类到离该点最近的聚类中去
  • 第三步是计算每个聚类中所有点的坐标平均值,并将这个均值作为新的聚类中心
  • 反复执行第二步、第三步,直到聚类中心不再进行大范围移动或者聚类次数达到要求为止

2.5 图像频率直方图

  • 上一步训练得到的字典,是为了这一步对图像特征进行量化。对于一幅图像而言,我们可以提取出大量的SIFT特征点,但这些特征点仍然属于一种浅层(low level)的表达,缺乏代表性。因此,这一步的目标,是根据字典重新提取图像的高层特征。

  • 具体做法是,对于图像中的每一个SIFT特征,都可以在字典中找到一个最相似的 visual word,这样,我们可以统计一个 k 维的直方图,代表该图像的SIFT特征在字典中的相似度频率。
    在这里插入图片描述

  • 例如:对于图中车的图片,我们匹配图片的SIFT向量与字典中的 visual word,统计出最相似的向量出现的次数,最后得到这幅图片的直方图向量。
    在这里插入图片描述

TF-IDF

TF-IDF即词频(Term Frequency,TF)与逆文档频率(Inverse Document Frequency,IDF)的乘积,将此值作为权值,降低一些重复特征所带来的影响。

  • 比如在BOW中,一些常用词汇譬如the,it,do等等词汇,不能体现文本内容特征,但是出现频率却很高,利用tf-idf可以降低这种不必要词汇的影响。同理,在BOF图像搜索中,图像之间也会有这样的无意义的特征出现,所以需要降低这类特征的权值。
    主要思想

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

  • TF:单词w在文档d的词频(其中分子表示某个特征在总的特征出现的次数,分母表示总特征的数量,所以tf表示某个特征出现的频率。)
    在这里插入图片描述

  • IDF:分子表示全部的图像数量,分母表示某个特征在总的图像下出现的次数。再对其取对数,就是IDF。
    在这里插入图片描述

倒排表

倒排索引是实现“单词-文档矩阵”的一种具体存储形式,通过倒排索引,可以根据单词快速获取包含这个单词的文档列表。倒排索引主要由两个部分组成:“单词词典”和“倒排文件”。
如图查找多个词汇构成一个倒排表:
在这里插入图片描述

训练分类器

当我们得到每幅图片的直方图向量(反映了字典各词出现的频率)后,接下来就是传统的分类问题,训练分类器模型。对于需要预测的图片,先一样的提取sift特征,再根据字典量化直方图向量,用分类器模型对直方图进行分类,常用的方法有SVM。当然,也可以直接根据 KNN 算法对直方图向量做相似性判断。

三、实验

3.1 数据集

猫(20张)
在这里插入图片描述
鸡(20张)
在这里插入图片描述
牛(15张)
在这里插入图片描述
狗(15张)

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值