最近学习BoW模型,将自己网上看到的资料及对论文的理解,将BoW模型总结如下!
BoW模型
Bag-of-words model (BoW model) 最早出现在自然语言处理(Natural Language Processing)和信息检索(Information Retrieval)领域.。该模型忽略掉文本的语法和语序等要素,将其仅仅看作是若干个词汇的集合,文档中每个单词的出现都是独立的。BoW使用一组无序的单词(words)来表达一段文字或一个文档.。近年来,BoW模型被广泛应用于计算机视觉中。
基于文本的BoW模型的一个简单例子如下:
首先给出两个简单的文本文档如下:
John likes to watch movies. Mary likes too.
John also likes to watch football games.
基于上述两个文档中出现的单词,构建如下一个词典 (dictionary):
{"John": 1, "likes": 2,"to": 3, "watch": 4, "movies": 5,"also": 6, "football": 7, "games": 8,"Mary": 9, "too": 10}
上面的词典中包含10个单词, 每个单词有唯一的索引, 那么每个文本我们可以使用一个10维的向量来表示。如下:
[1, 2, 1, 1, 1, 0, 0, 0, 1, 1]
[1, 1,1, 1, 0, 1, 1, 1, 0, 0]
该向量与原来文本中单词出现的顺序没有关系,而是词典中每个单词在文本中出现的频率。
BoW模型用于图像分类
2004年Gabriella Csurka、Christopher R. Dance等人基于词袋模型提出了一种图像的分类方法--Bag of Keypoints。图像中的单词(words)被定义为一个图像块(image patch)的特征向量(feature vector),图像的BoW模型即 “图像中所有图像块的特征向量得到的直方图”。
关于BoW模型用于图像分类提取特征直方图包含以下几个步骤:
提取训练样本图像块中的特征向量,提取特征向量的方法可以使SIFT、SUFR等。该步骤生成的图像特征的描述子应该具有不变性对于光照的的变化、变形、碰撞等。
图1表示一幅通过SURF方法提取的特征点图像。
图1 SURF方法检测特征点
通过上步的特征提取,我们得到了所有训练样本图像中的特征。比如有N张训练图片,使用SIFT方法提取图像特征,我们最终将得到个特征点。接下来我们将使用NF个特征点构建词典,构建词典过程需要使用一些聚类算法,通常选用k-means方法。首先选取n个聚类中心,通过迭代算法算出最终的n个聚类中心。
图2为K均值聚类示意图。其中菱形、圆形、长方形、五边形代表四个类(由黄色圆框分别包围),通过K均值聚类算法后,将形成4个新的聚类中心,如图2中4个蓝色实心原点表示。
图2 K均值聚类示意图
n个聚类中心即我们构建的词典,以后每来一个新的特征点,都将该新特征点映射到n个聚类中心中的一个。
3 计算图像特征直方图
通过K均值聚类算法后,得到n个新的聚类中心,即得到了特征直方图的一个基,如图3所示。
图3 特征直方图的基
接下来我们将图像的特征点聚类到n个已经生成的词典(即n个聚类中心)中,并且统计落入每个词典中的特征点的个数。这样我们可以得到一幅图像的特征直方图。
不同类别的特征直方图不一样,图4表示类1的特征直方图,图5表示类2的特征直方图,图6是一幅真实图像的特征直方图。
图4 类1的特征直方图
图5 类2的特征直方图
图6 真实图像的特征直方图
上面是关于Bow用于图像分类提取特征直方图的基本方法,关于BOW模型用于图像分类,使用SVM训练请看下篇博文!
如有不正确希望多多包涵,欢迎指出共同交流学习。
Surf和Sift特征提取代码下载地址http://download.csdn.net/detail/u010213393/8159185