Bag-of-words model (BoW model) 最早出现在NLP和IR领域. 该模型忽略掉文本的语法和语序, 用一组无序的单词(words)来表达一段文字或一个文档. 近年来, BoW模型被广泛应用于计算机视觉中. 与应用于文本的BoW类比, 图像的特征(feature)被当作单词(Word).
Wikipedia[1]上给出了如下例子:
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个单词, 每个单词有唯一索引, 注意它们的顺序和出现在句子中的顺序没有关联. 根据这个字典, 我们能将上述两句话重新表达为下述两个向量:
[1, 2, 1, 1, 1, 0, 0, 0, 1, 1]
[1, 1, 1, 1, 0, 1, 1, 1, 0, 0]
这两个向量共包含10个元素, 其中第i个元素表示字典中第i个单词在句子中出现的次数. 因此BoW模型可认为是一种统计直方图 (histogram). 在文本检索和处理应用中, 可以通过该模型很方便的计算词频.
Fei-fei Li[3]在中提出了用BoW模型表达图像的方法. 他们认为, 图像可以类比为文档(document), 图像中的单词(words)可以定义为一个图像块(image patch)的特征向量. 那么图像的BoW模型即是 “图像中所有图像块的特征向量得到的直方图”. 建立BoW模型主要分为如下几个步骤:
1. 特征提取
假设有N张图像, 第i张图像图像可由n(i)个image patch组成, 也即可以由n(i)个特征向量表达. 则总共能得到sum(n(i))个特征向量(即单词).
特征向量可以根据特征问题自行设计, 常用特征有Color histogram, SIFT, LBP等.
2. 生成字典/码本(codebook)
对上一步得到的特征向量进行聚类(可以使用K-means等聚类方法), 得到K个聚类中心, 用聚类中心构建码本.
3. 根据码本生成直方图
对每张图片, 通过最近邻计算该图片的每个 “单词”应该属于codebook中的 “哪一类”单词, 从而得到该图片对应于该码本的BoW表示.
[1]. Bag-of-words model. (2012, November 30). In Wikipedia, The Free Encyclopedia. Retrieved 11:48, December 3, 2012, from http://en.wikipedia.org/w/index.php?title=Bag-of-words_model&oldid=525730564
[2]. Bag-of-words model in computer vision. (2012, October 11). In Wikipedia, The Free Encyclopedia. Retrieved 11:50, December 3, 2012, fromhttp://en.wikipedia.org/w/index.php?title=Bag-of-words_model_in_computer_vision&oldid=517192612
[3]. L. Fei-Fei and P. Perona (2005). "A Bayesian Hierarchical Model for Learning Natural Scene Categories". Proc. of IEEE Computer Vision and Pattern Recognition. pp. 524–531.