经典论文阅读笔记——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]
二、计算机视觉中的BoW模型
CV中的BoW模型将图像特征视为单词构造字典,通过统计不同图像特征出现的频数获得BoW向量,也用于图像分类等任务。任意种类的图像特征都可以作为视觉单词,当前而言,因为SIFT特征在图像表达方面具有一定优势(各种不变性,稳定性较好),最常用视觉单词的还是SIFT。但一幅图像包含的SIFT特征数目非常多,如果将所有的特征都严格作为字典基的话维度太高,计算量太大。因此通用方法是先进行聚类,用聚类中的每一个簇作为字典的一个视觉词,也就是基。这就是字典训练部分。图像表达部分是通过矢量量化VQ,将图像中每一个SIFT特征映射至距离它最近的字典基上,将对应的向量分量加1,最终获得BoW向量特征。
由上所述,BoW模型表达核心思路如下:
字典训练部分:
- 对所有训练集图像提取SIFT特征(可以采用Dense SIFT);
- 输入字典尺寸s,对获得的SIFT通过聚类算法进行聚类(一般采用k-means),得到s个聚类中心,用聚类中心构建字典。
测试图像BoW向量生成部分:
- 对测试图像提取SIFT特征;
- 对每一个SIFT特征,通过VQ将其映射至最相近的视觉词中(词频+1);
- 完成后,即获得测试图像所对应的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核的核心思想:
- 先对两幅图像提取SIFT特征;
- 对提取到的SIFT特征,根据不同的粒度(直方图间距)划分获得多个直方图;
- 通过直方图交叉核(Histogram Intersection)获得两幅图像相同间距直方图的相似度,再通过线性加权获得最终的PMK相似度。
值得注意的地方:
- 采用PMK核的话,就无需再进行聚类了,因为这个核本身就是对特征采取不同粒度进行比较的,这一点曾经困扰了我好久
- PMK核实质上是一个加权的直方图交叉核
上面的核心思想也许不容易懂,可以看看论文或者网上其他博客的详细解释。这篇文章引入了一种不同尺度(粒度)的分析方法,也是比较新颖的。
2.《Beyond Bags of Features: Spatial Pyramid Matching for Recognizing Natural Scene Categories》(CVPR 2006)
空间金字塔匹配,SPM方法,是很著名的对BoW模型改进的一种方法,思路借鉴了PMK,也非常容易理解。
核心思想:
- 与BoW模型一样,先提取SIFT特征,利用聚类方法获得字典;
- 将测试图像划分为不同尺度的块,也就是切分成不同尺度的方形(对半切分);
- 将每个块视为一幅图像求取BoW向量表达,然后将不同尺度内的不同块的特征连接起来,即为最终的图像表达特征。
值得注意的地方:
- 与PMK相比,实际上是用二维坐标空间代替了原来的特征空间,在二维坐标空间中进行划分
- 当仅采用最大尺度一幅图像时,SPM方法即退化成了传统的BoW模型
- 与SVM结合进行识别分类时也可以采用其他核函数(原文中好像使用的是直方图交叉核)
3.《Linear spatial pyramid matching using sparse coding for image classification》(CVPR 2009)
通过稀疏编码的空间金字塔匹配,ScSPM方法。这里的文章基本上都是下篇是对上篇论文的一个改进。
核心思想:
- 与BoW模型一样,先提取SIFT特征,但不通过聚类方法,而是通过稀疏编码方法生成字典(解LASSO,再通过最小二乘);
- 将测试图像划分为不同尺度的块,也就是切分成不同尺度的方形(对半切分);
- 将每个块视为一幅图像通过稀疏编码方法求取BoW向量表达,然后将不同尺度内的不同块的特征连接起来,即为最终的图像表达特征。
值得注意的地方:
- 与SPM相比改进就是利用了稀疏编码的思想
- 文章中采用Max pooling方法生成系数,经过对比该方法优于Averaging pooling(统计直方图方法)
- 原文中采用的是线性SVM就能获得较好的分类效果,因为稀疏编码的重构误差更小,也更加合理
4.《Locality-constrained Linear Coding for image classification》(CVPR 2010)
LLC方法,是在ScSPM方法上加以局部约束的改进。
核心思想:其思路与ScSPM基本一致,但引入了局部性(Locality),即限定采用与待重构特征最相似的几个特征进行重构,并以此为思路改进了训练目标函数和重构公式。
值得注意的地方:
- 原文指出的,Locality一定会获得Sparsity,但相反则不一定
- 引入Locality限制可以相似的特征是用相似的字典基所重构的,保留了相应的关系。而稀疏编码为了最小化重构误差,可能引入了不相邻的基,这一点可以从原文的图示中明显看出来
- 为了快速计算,原文采用了K-means方法选择基,然后解最小二乘获得系数
5.《Spatial-bag-of-features》(CVPR 2010)
BoW系列最后一篇文章了,最近几篇都是中国人写的。
核心思想:通过对SPM方法进行扩展,引入了直线BoW和环形BoW两种方法(就是在一条直线上或者一个圆上取BoW向量),然后通过巧妙的直方图标定,使其获得一定的平移、旋转和尺度的不变性。
值得注意的地方:
- 这篇文章本来是做图像检索的,不过其他的如检测、识别也都行
- 论文的核心贡献就是获得了具有一定不变性的BoW向量,在某种程度上提高鲁棒性,并且对不同的应用环境采用直线或圆不同的方法,提高了适用性
四、BoW模型部分总结
BoW模型是采用视觉单词的直方图表示图像的,是一种相当可靠的方法,也能再次看出直方图统计在CV中是多么的常用。即使在今天,BoW模型及其变种仍然广泛的应用在CV研究中,可见其通用性和鲁棒性。- 经典论文阅读笔记——BoW Model篇
- 经典论文阅读笔记——Feature篇(上)
- 经典论文阅读笔记——Feature篇(下)
- Language Model 论文阅读笔记
- 【论文阅读:LDA】The Author-Topic Model for Authors and Documents_2004(ATM经典论文)
- 论文阅读笔记
- 论文阅读笔记- Dremel
- 论文阅读笔记 - Pregel
- 论文阅读笔记1
- 论文阅读笔记2
- 论文阅读笔记3
- 论文阅读笔记4
- 论文阅读笔记---1
- 论文阅读笔记
- 论文阅读笔记:vTPM
- 论文阅读笔记
- KCF论文阅读笔记
- LCNN论文阅读笔记
- (转)Java中StringBuilder的清空方法比较
- 深入分析Linux自旋锁
- C#基本数据类型
- iOS开发之NSLayoutConstraint
- iOS开发实践之多线程(NSThread)
- 经典论文阅读笔记——BoW Model篇
- hdu-1495-非常可乐(bfs)
- C++ socket编程入门资源整理
- 傅里叶分析之掐死教程(完整版)
- linux下firefox浏览器的flash版本过低解决方案
- VS之头文件自动生成
- Java Swing JTable 表格【4:表格模型TableModel】
- 桥接模式
- ES6学习——类语法:基本概念介绍