Bag of Words

文章目录
  1. 特征提取
  2. 构建词典
  3. 特征统计
  4. 分类器

Bag of words模型是信息检索领域常用的文档表示方法。

例如:

  1. :Bob likes to play basketball, Jim likes too.
  2. :Bob also likes to play football games.

基于这两个文本文档,构造一个词典:

  • Dictionary = {1:”Bob”, 2. “like”, 3. “to”, 4. “play”, 5. “basketball”, 6. “also”, 7. “football”,8. “games”, 9. “Jim”, 10. “too”}

这个词典一共包含10个不同的单词,利用词典的索引号,上面两个文档每一个都可以用一个10维向量表示(用整数数字0~n(n为正整数)表示某个单词在文档中出现的次数):

  1. :[1, 2, 1, 1, 1, 0, 0, 0, 1, 1]
  2. :[1, 1, 1, 1 ,0, 1, 1, 1, 0, 0]

向量中每个元素表示词典中相关元素在文档中出现的次数,在构造文档向量的过程中并没有表达单词在原来句子中出现的次序。

Bag of Words用于图像分类,为了表示一幅图像,我们可以将图像看作文档,即若干个视觉词汇的集合,同样的,视觉词汇相互之间没有顺序。

特征提取

如图所示,我们将一个样本文件提取为基本的元素特征,同一类目标的不同实例之间虽然存在差异,但我们仍然可以找到它们之间的一些共同的地方,比如人脸,虽然说不同人的脸差别比较大,但眼睛,嘴,鼻子等一些比较细小的部位,却观察不到太大差别,我们可以把这些不同实例之间共同的部位提取出来,作为识别这一类目标的视觉词汇。

我们可以选择SIFT、SUFT等特征作为训练样本特征的描述子,该特征对于光照、形变等具有不变性。

构建词典

根据每类图像中提取到的特征点,通过一些聚类算法构建词袋中的基本词汇,比如通过K-Means聚类得到K个聚类中心,那么词袋中就有K个基本词汇,将所有的视觉词汇集合在一起,如图所示:

特征统计

在完成每类图像特征点的映射之后,我们统计每类样本落在每个基本词汇(即聚类中心)的特征点个数:

通过统计单词表中每个单词在图像中出现的次数,可以将图像表示成为一个K=4维数值向量,实际应用中为了达到较好的效果,单词表中的词汇数量K往往非常庞大,并且目标类数目越多,对应的K值也越大,一般情况下,K的取值在几百到上千,在这里取K=4仅仅是为了方便说明。

BOW模型的优势

SIFT用128维的矢量的描述一幅图像中的特征点,而且一幅图像通常都包含成百上千个特征点,在进行相似度计算时,这个计算量是非常大的。BOW的做法是用聚类算法对这些特征点进行聚类,然后用聚类中的一个簇代表BOW中的一个视觉词,将同一幅图像的特征点映射到视觉词袋中聚类簇,通过统计特性生成码本,每一幅图像只用一个码本矢量来描述,计算相似度时效率就大大提高。

分类器

在得到这些训练样本基于统计特性的特征表达之后,就可以用训练分类器去做分类任务。

  • KNN

  • SVM

  • 贝叶斯分类器

测试新样本

  1. 对新样本进行基于统计特性的特征表达

  2. 将统计特征表达(统计向量)输入分类器进行分类