(目标检测)关于SPPNet中一些基础知识的理解

前言

一、(Bag of words)词袋模型的基本原理

该部分内容主要来自博客
词袋一词最初源于信息检索,是信息检索领域常用的文档表示方法。在信息检索中,BoW 模型假定对于一个文档,忽略它的单词顺序和语法、句法等要素,将其仅仅看作是若干个词汇的集合,文档中每个单词的出现都是独立的,不依赖于其它单词是否出现。也就是说,文档中任意一个位置出现的任何单词,都是不受该文档语义影响而独立选择的。例如有如下两个文档:

  1. Bob likes to play basketball, Jim likes too.
  2. 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”}。
这个词典一共包含10个不同的单词,利用词典的索引号,上面两个文档每一个都可以用一个10维向量表示,向量中的每一维表示词典中该索引所对应的值在文本中出现的次数。

  1. [1,2,1,1,1,0,0,0,1,1]
  2. [1,1,1,1,0,1,1,1,0,0]

在图像的词袋模型中,用直方图来代替上述的向量。在构造文档向量的过程中,我们可以看到,我们并没有表达单词在原来句子中出现的次序(这正是Bag of words模型的缺点之一)。
在判断两句话的相似性的任务中,我们就可以计算上述两个向量的余弦相似性来判断了:
c o s ( θ ) = A ⋅ B ∣ ∣ A ∣ ∣ ⋅ ∣ ∣ B ∣ ∣ cos(\theta) = \frac {A\cdot B}{||A||\cdot ||B||} cos(θ)=ABAB
上述值越接近1,说明两个向量越相似。

BoW 模型在图像方面的应用

为了将词袋模型用于图像的表示,我们可以将图像看作文档,即若干个“视觉词汇”的集合,同样的,视觉词汇相互之间没有顺序。
在这里插入图片描述
由于图像中的词汇并不像文本文档中的那样是现成的,我们需要首先从图像中提取出相互独立的视觉词汇,这通常需要经过三个步骤:(1)特征检测,(2)特征表示,(3)单词本的生成。如下图所示:
在这里插入图片描述
观察发现,同一类目标的不同实例之间虽然存在差异,但我们仍然可以找到它们之间的一些共同的地方,比如说人脸,虽然说不同人的脸差别比较大,但眼睛,嘴,鼻子等一些比较细小的部位,却观察不到太大差别,我们可以把这些不同实例之间共同的部位提取出来,作为识别这一类目标的视觉词汇。
而SIFT算法是提取图像中局部不变特征的应用最广泛的算法,因此我们可以用SIFT算法从图像中提取不变特征点,作为视觉词汇,并构造单词表,用单词表中的单词表示一幅图像。

在计算机视觉中,构建词袋模型的具体方法如下:
在这里,我们有三个目标类,分别是人脸、自行车和吉他。
一、利用 SIFT 算法,从每类图像中提取视觉词汇,将所有的视觉词汇集合在一起,如下图所示:
在这里插入图片描述
二、利用 K-Means 算法构造单词表,即将 SIFT 提取的视觉词汇向量根据距离的远近,聚类成 K 类,作为单词表中的基础词汇。假定我们将K设为4,那么单词表的构造如下图所示:
在这里插入图片描述
三、用单词表中的词汇表示图像。在第一步中已经通过SIFT从图片中提取出了很多特征向量, 这些特征都可以属于单词表中的某一个所在的类,因此可以用单词表中的词汇来代替,通过统计单词表中每个单词在图像中的出现次数,可以将图像表示为一个K=4的数组向量:
在这里插入图片描述
我们从人脸、自行车和吉他三个目标类图像中提取出的不同视觉词汇,而构造的词汇表中,会把词义相近的视觉词汇合并为同一类,经过合并,词汇表中只包含了四个视觉单词,分别按索引值标记为1,2,3,4。通过观察可以看到,它们分别属于自行车、人脸、吉他、人脸类。统计这些词汇在不同目标类中出现的次数可以得到每幅图像的直方图表示(我们假定存在误差,实际情况亦不外如此):

人脸: [3,30,3,20]
自行车:[20,3,3,2]
吉他: [8,12,32,7]

其实这个过程非常简单,就是针对人脸、自行车和吉他这三个文档,抽取出相似的部分(或者词义相近的视觉词汇合并为同一类),构造一个词典,词典中包含4个视觉单词,即Dictionary = {1:”自行车”, 2. “人脸”, 3. “吉他”, 4. “人脸类”},最终人脸、自行车和吉他这三个文档皆可以用一个4维向量表示,最后根据三个文档相应部分出现的次数画成了上面对应的直方图。
需要说明的是,以上过程只是针对三个目标类非常简单的一个示例,实际应用中,为了达到较好的效果,单词表中的词汇数量K往往非常庞大,并且目标类数目越多,对应的K值也越大,一般情况下,K的取值在几百到上千,在这里取K=4仅仅是为了方便说明。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值