Josef和Andrew在2003年的ICCV上发表的论文[10]中,将文档检索的方法借鉴到了视频中的对象检测中。他们首先将图像的特征描述类比成单词,并建立了基于SIFT特征的vusual word dictionary,结合停止词、TF-IDF和余弦相似度等思想检索包含相同对象的图像帧,最后基于局部特征的匹配和空间一致性完成了对象的匹配。文档检索与计算机视觉之间渊源颇深,在CV领域常常会遇到要将图像的多个局部特征描述融合为一条特征向量的问题,比如常用的BoVW、VLAD和Fisher Vector等。下面,我们从文档检索为切入点,简单学习下这些局部特的融合方法。
Document Retrieval
文档检索系统中一般包含几个标志的步骤:
- 将整个文档分割成单词.英文文档的分词很容易完成,因为各单词间都是由空格隔开的,但是中文分词本身就是个颇有技术含量的事情了。目前比较好的中文分词项目有ICTCLAS,Paoding,FudanNLP,IKAnalyzer和Jieba等。
- 将每个单词用其词根表示(中文不需要此步骤)。比如walk,walking和walks都用walk表示。
- 利用停用词(stop word)表过滤最常见的单词,比如”的“、”啊“等。不过有些情况下,我们需要的也许正好是这些停用词表中的单词,所以现在有些系统中其实也保留了一部分停用词的。
- 剩下的单词组成整个语料库的词典,每个单词有一个用于标识的ID。对于超大的语料库,词典包含的单词数目至少也是百万级别的,所以也需要哈希标或树等高效的数据结构来组建词典,以加快搜索时的查询速度。
- 每个文档用一个向量 F={f1,⋯,fK} F={f1,⋯,fK}表示,其中向量的每个维度表是该维度对应的单词在文档中出现的次数。由于该向量很稀疏,所以可以用稀疏向量的形式存储,即用(word id,fequency)的形式存储每个非零元素即可。
- 建立倒排索引(inverted index),如图1所示。
- 为向量的每个维度计算权重形成新的向量
V={w1,⋯,wK}
V={w1,⋯,wK}:
wi=fiflogNni(1) (1)wi=fiflogNni其中 fi fi为第 i i个单词在文档中出现的次数; f f为文档经过过滤后的总单词数; N N为整个语料库的文档数目; ni ni为包含第 i i个单词的文档数目。TFIDF背后的思想也很直白:在一个文档中出现次数最多的单词更可能是该文档的主要关键词;如果该单词在很多文档中都出现,那么该单词其实并无很丰富的信息量。
- 根据查询关键词,从倒排索引中取出包含关键词的文档的向量,然后与查询关键词组成的向量直接计算余弦相似度,最后结合相似读和文档自身的权重进行排序后返回给用户。
Bag of Visual Words
大规模图像检索不仅要考虑检索的正确率,也要考虑时间和空间的开销.目前最流行的图像特征表示方法莫过于bag of viusal words(BoVW),该方法借鉴了自然语言处理(Natural Language Processing,NLP)中的词袋思想,如图2所示. BoVW的处理流程如图3所示,其过程描述如下:
- 在图像集上提取SIFT等特征描述子 {di∈Rn|i=1,⋯,N} {di∈Rn|i=1,⋯,N};
- 基于这些特征描述子用KMeans或GMM进行聚类分析,得到的聚类中心 {ck∈Rn|k=1,⋯,K} {ck∈Rn|k=1,⋯,K}即为viusal dictionary中的每一个visual word,到此词典的建立完成;
- 提取图像的特征描述子 {dj∈Rn|j=1,⋯,m} {dj∈Rn|j=1,⋯,m},用hard或soft的量化方法[11]计算特征描述子落到每个visual word的概率 γj=[γj1,⋯,γjK] γj=[γj1,⋯,γjK],并用 ∑mj=1γj ∑j=1mγj构成的直方图表示每一张图片。
- 最后的BoVW向量还需要进一步用 L2 L2范式归一化,然后用IDF(inverse document frequency)的思想为每个visual word分配权重。
那么基于BoVW,我们怎么来进行图像搜索?是否能从网页搜索中获得些许灵感呢?搜索引擎常用的倒排索引在这里也可以有用武之地。
BoVW的成功主要是源于两点:1)诸如SIFT等强大的局部特征描述子[7,12,13]为BoVW奠定了坚实的基础;2)用BoVW形式得到的特征描述是与词典(visual dictionary)容量等长的向量,很容易用欧式距离或余弦距离等度量准则计算两个样本之间的相似度,继而可以运用SVM或LR等成熟的分类或回归算法完成后续任务. 但是在大规模图像搜索中,基于BoVW的特征向量的维度通常会高达上百万.为了降低存储开销,有学者提出了将BoVW进一步压缩成二进制[4,10],即抛弃每个visual word出现的频度,仅用1或0表示出现或者未出现.如此一来,存储开销变成了原来的八分之一,但是准确度也比原始的BoVW低一些.据论文[4]中的实验结果,二进制形式的BoVW在visual dictionary的维度高达30,000的时候准确度才和原始BoVW特征的相当,如图4所示.其实高维向量通常都很稀疏,另一个降低存储开销的策略就是用(位置,值)之类的二元组存储非零元素;对于二进制的BoVW,仅存储位置信息即可.此外,若采用[10]中的倒排列表(inverted lists)会大大加快检索速度.
Vector of Locally Aggregated Descriptors
VLAD(vector of locally aggregated descriptors)[5]聚合了SIFT等局部特征后产生一种紧凑的特征描述,其计算复杂性/存储开销和有效性方面都介于BoVW和Fisher Vector[9]之间.VLAD构建词典 C={c1,⋯,ck} C={c1,⋯,ck}的过程与BoVW类似,只不过最后累加了分配到 ci ci的所有样本与 ci ci的差值 x−ci x−ci。VLAD可被视为Fisher Vector的简化版本,描述了各特征向量相对于visual word更丰富的一阶统计信息。假设局部特征描述子的维度为 d d,那么VLAD的特征维度 D=k×d D=k×d,其中与每个visual word相关联的特征向量
Fisher Vector
在图像分类和检索等应用中,基于BoVW集成的特征表述通常存在稀疏和高维度的问题。用FV(Fisher Vector)特征向量可以获得更为紧凑的特征描述,更适用于图像分类和检索等问题。FV可以作为Fisher Kernel[3]的一种特例推导出来。Fisher Kernel作为一种核函数,其作用也是计算两个样本间的相似程度。与多项式核函数、RBF核函数等普通核函数不同的是,Fisher Kernel计算的是样本 x x与 x′ x′在产生式模型 p(x|Θ) p(x|Θ)中相似度。模型参数 Θ Θ通常是基于一批训练样本通过最大似然参数估计的方法得到的,使得假定的概率模型能最大限度拟合数据的先验分部情况。在学习到概率模型 p(x|Θ) p(x|Θ)后,每个样本在核空间的表述形式如下:
据论文[9]的实验,结合了L2-norm、Power-norm和金字塔匹配,其结果对比如图7所示。
最后,我用Python为主要编程语言,编写了部分图像的特征提取的代码,包括Sift、Gist、LBP、HOG、颜色直方图、BOVW、VLAD和Fisher Vector。其中,SIFT和GIST特征提取需要调用可执行文件,因为这两个特征提取算法的底层实现不是我写的。GIST特征提取的源码可去http://lear.inrialpes.fr/software/下载,只不过我后来对其作了简单的改动;该源码依赖FFTW库,windows环境下的相关库我已经准备好了;linux下的用户可以前往http://www.fftw.org/download.html下载FFTW的源码,解压后依次执行./configure --enable-single;make;sudo make install即可编译源码了。Sift特征提取的可执行文件来源于VLFeat。BoVW、Vlad和Fisher Vector依赖Numpy、scikit-learn、Pillow。有需要的可以去这里下载~~
References
- [1] Whitening transformationn. http://en.wikipedia.org/wiki/Whitening_transformation.
- [2] Relja Arandjelovic and Andrew Zisserman. All about vlad. In Computer Vision and Pattern Recognition (CVPR), 2013 IEEE Conference on, pages 1578–1585. IEEE, 2013.
- [3] Tommi Jaakkola, David Haussler, et al. Exploiting generative models in discriminative classifiers. Advances in neural information processing systems, pages 487–493, 1999.
- [4] Herv ́e J ́egou, Matthijs Douze, and Cordelia Schmid. Packing bag-of-features. In Computer Vision, 2009 IEEE 12th International Conference on, pages 2357–2364. IEEE, 2009.
- [5] Herv ́e J ́egou, Matthijs Douze, Cordelia Schmid, and Patrick P ́erez. Aggregating local descriptors into a compact image representation. In Computer Vision and Pattern Recognition (CVPR), 2010 IEEE Conference on, pages 3304–3311. IEEE, 2010.
- [6] Svetlana Lazebnik, Cordelia Schmid, and Jean Ponce. Beyond bags of features: Spatial pyramid matching for recognizing natural scene categories. In Computer Vision and Pattern Recognition, 2006 IEEE Computer Society Conference on, volume 2, pages 2169–2178. IEEE, 2006.
- [7] David G Lowe. Distinctive image features from scale-invariant keypoints. International journal of computer vision, 60(2):91–110, 2004.
- [8] Florent Perronnin and Christopher Dance. Fisher kernels on visual vocabularies for image categorization. In Computer Vision and Pattern Recognition, 2007. CVPR’07. IEEE Conference on, pages 1–8. IEEE, 2007.
- [9] Florent Perronnin, Jorge S ́anchez, and Thomas Mensink. Improving the fisher kernel for large-scale image classification. In Computer Vision–ECCV 2010, pages 143–156. Springer, 2010.
- [10] Josef Sivic and Andrew Zisserman. Video google: A text retrieval approach to object matching in videos. In Computer Vision, 2003. Proceedings. Ninth IEEE International Conference on, pages 1470–1477. IEEE, 2003.
- [11] Jan C van Gemert, Cor J Veenman, Arnold WM Smeulders, and J-M Geusebroek. Visual word ambiguity. Pattern Analysis and Machine Intelligence, IEEE Transactions on, 32(7):1271–1283, 2010.
- [12] Simon Winder, Gang Hua, and Matthew Brown. Picking the best daisy. In Computer Vision and Pattern Recognition, 2009. CVPR 2009. IEEE Conference on, pages 178–185. IEEE, 2009.
- [13] Simon AJ Winder and Matthew Brown. Learning local image descriptors. In Computer Vision and Pattern Recognition, 2007. CVPR’07. IEEE Conference on, pages 1–8. IEEE, 2007.
邮箱:yunfeiwang@hust.edu.cn
出处:http://www.cnblogs.com/jeromeblog/
本文版权归作者所有,欢迎转载,未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。