计算机视觉——图像检索与识别

1. Bag-of-words模型

  • BoW起始可以理解为一种直方图统计,开始是用于自然语言处理信息检索中的一种简单的文档表示方法。BoW也只是统计频率信息,并没有序列信息。BoW是选择words字典,然后统计字典中每个单词出现的次数。

  • BoW(Bag of Words)词袋模型最初被用在文本分类中,将文档表示成特征矢量。它的基本思想是假定对于一个文本,忽略其词序和语法、句法,仅仅将其看做是一些词汇的集合,而文本中的每个词汇都是独立的。简单说就是讲每篇文档都看成一个袋子(因为里面装的都是词汇,所以称为词袋,Bag of words即因此而来),然后看这个袋子里装的都是些什么词汇,将其分类。如果文档中猪、马、牛、羊、山谷、土地、拖拉机这样的词汇多些,而银行、大厦、汽车、公园这样的词汇少些,我们就倾向于判断它是一篇描绘乡村的文档,而不是描述城镇的。

2. Bag-of-features模型

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

3. Bag-of-features算法

  • Bag of Feature的本质是提出一种图像的特征表示方法

    按照Bag of Feature算法的思想,首先我们要找到图像中的关键词,而且这些关键词必须具备较高的区分度。实际过程中,通常会采用SIFT特征

    有了特征之后,我们会将这些特征通过聚类算法得出很多聚类中心。这些聚类中心通常具有较高的代表性,比如,对于人脸来说,虽然不同人的眼睛、鼻子等特征都不尽相同,但它们往往具有共性,而这些聚类中心就代表了这类共性。我们将这些聚类中心组合在一起,形成一部字典(CodeBook)。

    对于图像中的每个SIFT特征,我们能够在字典中找到最相似的聚类中心,统计这些聚类中心出现的次数,可以得到一个向量表示(有些文章称之为直方图)这些向量就是所谓的Bag。这样,对于不同类别的图片,这个向量应该具有较大的区分度,基于此,我们可以训练出一些分类模型(SVM等),并用其对图片进行分类。

4. Bag-of-features过程

Bag of Feature大概分为四步

  • 1)提取图像特征

  • 2)对特征进行聚类,得到一部字典( visual vocabulary )

  • 3)根据字典将图片表示成向量(直方图)

  • 4)把输入图片转化成视觉单词的频率直方图

  • 提取图像特征
    特征必须具有较高的区分度,而且要满足旋转不变性以及尺寸不变性等,因此,我们通常都会采用SIFT特征(有时为了降低计算量,也会采用其他特征,如:SURF )。SIFT会从图片上提取出很多特征点,每个特征点都是 128 维的向量,因此,如果图片足够多的话,我们会提取出一个巨大的特征向量库。
    在这里插入图片描述

  • 训练字典( visual vocabulary )
    提取完特征后,我们会采用一些聚类算法对这些特征向量进行聚类。最常用的聚类算法是 k-means。至于 k-means 中的 k 如何取,要根据具体情况来确定。另外,由于特征的数量可能非常庞大,这个聚类的过程也会非常漫长。聚类完成后,我们就得到了这 k 个向量组成的字典,这 k 个向量有一个通用的表达,叫 visual word。
    在这里插入图片描述

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

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

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

  • 训练分类器
    当我们得到每幅图片的直方图向量后,剩下的这一步跟以往的步骤是一样的。无非是数据库图片的向量以及图片的标签,训练分类器模型。然后对需要预测的图片,我们仍然按照上述方法,提取SIFT特征,再根据字典量化直方图向量,用分类器模型对直方图向量进行分类。当然,也可以直接根据 KNN 算法对直方图向量做相似性判断。

5.TF-IDF

  • TF-IDF 最早是在文献检索领域中被提出的
    用一个文本检索的例子来了解 TF-IDF。

    假设我们要检索关于「原子能的应用」的文章,最简单的做法就是将查询分解为「原子能」、「的」、「应用」,然后统计每篇文章中这三个词出现的频率。比如,如果一篇文章的总词数是 1000 ,其中「原子能」、「的」、「应用」分别出现了 2 次、35 次和 5 次,那么它们的词频就分别是 0.002、0.035、0.005。将这三个数相加,总和 0.042 就是该文章关于「原子能的应用」的「词频」。一般来说,词频越高文章的相关性就越强。TF-IDF 中的 TF 也就是词频(Term Frequency)的意思。

    但这种方法有一个明显的漏洞,就是一些跟主题不相关的词可能占据较大的比重。比如上面例子中的「的」一词,占据了总词频的 80% 以上,而这个词对主题的检索几乎没有作用。这种词我们称为「停止词(Stop Word)」,表明在度量相关性时不考虑它们的频率。忽略「的」之后,我们的词频变为 0.007,其中「原子能」贡献了 0.002,「应用」贡献了 0.007。

    除此以外,这个优化后的结果还存在另一点不足。在汉语中,「应用」是个很通用的词,「原子能」是专业性很强的词,而后者对主题的检索比前者作用更大。

    综合以上两点不足,我们需要对每一个词给一个权重。而且这个权重必须满足以下两个条件:

    1)一个词对主题预测能力越强,权重越大;
    2)停止词权重为 0;

    观察一下我们就会发现,如果一个关键词只在很少的文章中出现,通过它就容易锁定搜索目标,它的权重就应该更大。反之,如果一个词在大量文章中频繁出现,看到它仍然不清楚要找什么内容,它的权重就应该小。

    概括地讲,假定一个关键词 w w w D w D_w Dw 篇文章中出现过,那么 D w D_w Dw 越大, w w w的权重越小,反之亦然。在信息检索中,使用最多的权重是「逆文本频率指数」,也就是 TF-IDF 中的 IDF(Inverse Document Frequency)。它的公式为 l o g ( D D w ) log(\frac{D}{D_w}) log(DwD),其中 D D D是全部文章数。假定文章总数是 D=10 亿,停止词「的」在所有网页中都出现过,即 D w D_w Dw=10亿,那么 它的 I D F = l o g ( 10 亿 / 10 亿 ) = l o g ( 1 ) = 0 IDF = log(10亿 / 10亿) = log(1) = 0 IDF=log(10亿/10亿)=lo

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值