经典论文阅读笔记——BoW Model篇

来源:互联网 发布:java中封装面试题 编辑:程序博客网 时间:2024/06/01 13:12

一、文本表达的BoW模型

Bag of Words模型最初被用在NLP或IR中,将文档表示成特征矢量。该模型忽略掉文本的语法和语序, 用一组无序的单词(words)来表达一段文字或一个文档。简单说就是将文本看作一个装满了单词的袋子(模型名字的由来),根据袋子里装的是哪类型的词汇来将其分类,而不管这些单词出现在文本中的什么地方。

引用维基百科上的一个简单例子:

(1) John likes to watch movies. Mary likes movies too.
(2) John also likes to watch football games.

基于上面的句子,构建一个包含10个单词{"John", "likes", "to", "watch", "movies", "also", "football", "games", "Mary", "too"}的字典,则两个句子可以用以下向量来表达:

(1) [1, 2, 1, 1, 2, 0, 0, 0, 1, 1]
(2) [1, 1, 1, 1, 0, 1, 1, 1, 0, 0]
上面10维的向量就是两个句子的词包模型向量,第i个元素表示字典中第i个单词出现的频数,因此可将其看作统计直方图。获得了BoW向量后可以用其进行文本分类等等。


二、计算机视觉中的BoW模型

CV中的BoW模型将图像特征视为单词构造字典,通过统计不同图像特征出现的频数获得BoW向量,也用于图像分类等任务。

任意种类的图像特征都可以作为视觉单词,当前而言,因为SIFT特征在图像表达方面具有一定优势(各种不变性,稳定性较好),最常用视觉单词的还是SIFT。但一幅图像包含的SIFT特征数目非常多,如果将所有的特征都严格作为字典基的话维度太高,计算量太大。因此通用方法是先进行聚类,用聚类中的每一个簇作为字典的一个视觉词,也就是基。这就是字典训练部分。图像表达部分是通过矢量量化VQ,将图像中每一个SIFT特征映射至距离它最近的字典基上,将对应的向量分量加1,最终获得BoW向量特征。

由上所述,BoW模型表达核心思路如下:

字典训练部分:

  1. 对所有训练集图像提取SIFT特征(可以采用Dense SIFT);
  2. 输入字典尺寸s,对获得的SIFT通过聚类算法进行聚类(一般采用k-means),得到s个聚类中心,用聚类中心构建字典。

测试图像BoW向量生成部分:

  1. 对测试图像提取SIFT特征;
  2. 对每一个SIFT特征,通过VQ将其映射至最相近的视觉词中(词频+1);
  3. 完成后,即获得测试图像所对应的BoW向量。

BoW模型也是CV领域里程碑式的一种方法模型。实际上,SIFT已经是一种图像特征了,而该模型是对其进行了更深一层的抽象和描述,往往做更深一层的抽象效果会更好,Deep Learning也可以从这个角度来考虑。

BoW模型显然也有很多不足,因为视觉词是通过无监督聚类获得的,没有办法考虑其语义信息和性质。并且该模型完全抛弃了图像特征空间分布信息,也是一个显而易见的不足。

三、BoW模型论文阅读笔记

1.《The pyramid match kernel: discriminative classification with sets of image features》(ICCV 2005)

严格来说,这并不是一篇讲述BoW模型的文章,不过在文章中所提出的金字塔匹配核(Pyramid Match Kernel)是接下来好多BoW模型改进的基础(或者说是思路来源),因此也放在这儿了。

在BoW模型上利用PMK核的核心思想:

  1. 先对两幅图像提取SIFT特征;
  2. 对提取到的SIFT特征,根据不同的粒度(直方图间距)划分获得多个直方图;
  3. 通过直方图交叉核(Histogram Intersection)获得两幅图像相同间距直方图的相似度,再通过线性加权获得最终的PMK相似度。

值得注意的地方:

  1. 采用PMK核的话,就无需再进行聚类了,因为这个核本身就是对特征采取不同粒度进行比较的,这一点曾经困扰了我好久
  2. PMK核实质上是一个加权的直方图交叉核

上面的核心思想也许不容易懂,可以看看论文或者网上其他博客的详细解释。这篇文章引入了一种不同尺度(粒度)的分析方法,也是比较新颖的。


2.《Beyond Bags of Features: Spatial Pyramid Matching for Recognizing Natural Scene Categories》(CVPR 2006)

空间金字塔匹配,SPM方法,是很著名的对BoW模型改进的一种方法,思路借鉴了PMK,也非常容易理解。

核心思想:

  1. 与BoW模型一样,先提取SIFT特征,利用聚类方法获得字典;
  2. 将测试图像划分为不同尺度的块,也就是切分成不同尺度的方形(对半切分);
  3. 将每个块视为一幅图像求取BoW向量表达,然后将不同尺度内的不同块的特征连接起来,即为最终的图像表达特征。

值得注意的地方:

  1. 与PMK相比,实际上是用二维坐标空间代替了原来的特征空间,在二维坐标空间中进行划分
  2. 当仅采用最大尺度一幅图像时,SPM方法即退化成了传统的BoW模型
  3. 与SVM结合进行识别分类时也可以采用其他核函数(原文中好像使用的是直方图交叉核)
方法没什么好说的,不过对坐标空间进行划分也提供了一种新的思路,如pHOG也采用了这种方法,获得更精细的空间信息。


3.《Linear spatial pyramid matching using sparse coding for image classification》(CVPR 2009)

通过稀疏编码的空间金字塔匹配,ScSPM方法。这里的文章基本上都是下篇是对上篇论文的一个改进。

核心思想:

  1. 与BoW模型一样,先提取SIFT特征,但不通过聚类方法,而是通过稀疏编码方法生成字典(解LASSO,再通过最小二乘);
  2. 将测试图像划分为不同尺度的块,也就是切分成不同尺度的方形(对半切分);
  3. 将每个块视为一幅图像通过稀疏编码方法求取BoW向量表达,然后将不同尺度内的不同块的特征连接起来,即为最终的图像表达特征。

值得注意的地方:

  1. 与SPM相比改进就是利用了稀疏编码的思想
  2. 文章中采用Max pooling方法生成系数,经过对比该方法优于Averaging pooling(统计直方图方法)
  3. 原文中采用的是线性SVM就能获得较好的分类效果,因为稀疏编码的重构误差更小,也更加合理
对SPM的改进,现在看来思路较为简单,其实很多其他应用也都可以用稀疏编码的方法进行改进的。


4.《Locality-constrained Linear Coding for image classification》(CVPR 2010)

LLC方法,是在ScSPM方法上加以局部约束的改进。

核心思想:其思路与ScSPM基本一致,但引入了局部性(Locality),即限定采用与待重构特征最相似的几个特征进行重构,并以此为思路改进了训练目标函数和重构公式。

值得注意的地方:

  1. 原文指出的,Locality一定会获得Sparsity,但相反则不一定
  2. 引入Locality限制可以相似的特征是用相似的字典基所重构的,保留了相应的关系。而稀疏编码为了最小化重构误差,可能引入了不相邻的基,这一点可以从原文的图示中明显看出来
  3. 为了快速计算,原文采用了K-means方法选择基,然后解最小二乘获得系数
这篇文章的思路还是非常新颖且易于理解的,但是根据我自己推的公式原文好像有个地方写错了,而且作者网站上的代码没办法有不正确的地方,调了好久才弄通,这一点给个差评。


5.《Spatial-bag-of-features》(CVPR 2010)

BoW系列最后一篇文章了,最近几篇都是中国人写的。

核心思想:通过对SPM方法进行扩展,引入了直线BoW和环形BoW两种方法(就是在一条直线上或者一个圆上取BoW向量),然后通过巧妙的直方图标定,使其获得一定的平移、旋转和尺度的不变性。

值得注意的地方:

  1. 这篇文章本来是做图像检索的,不过其他的如检测、识别也都行
  2. 论文的核心贡献就是获得了具有一定不变性的BoW向量,在某种程度上提高鲁棒性,并且对不同的应用环境采用直线或圆不同的方法,提高了适用性
这篇文章其实没什么好说的,感觉这个方法也有很强的通用性,可以用在很多的检测和识别任务上。


四、BoW模型部分总结

BoW模型是采用视觉单词的直方图表示图像的,是一种相当可靠的方法,也能再次看出直方图统计在CV中是多么的常用。即使在今天,BoW模型及其变种仍然广泛的应用在CV研究中,可见其通用性和鲁棒性。
0 0
原创粉丝点击