BOW模型理解

Bag of word 模型简介

Bag of word模型最初被用在文本分类中, 将文档表示成特征矢量。它的基本思想是假定对于一个文本,忽略其词序和语法、句法,仅仅将其看做是一些词汇的集合,而文本的每个词汇都是独立的。
简单说就是将每个文档看成一个袋子,然后看每个袋子里装的都是些什么词汇,将其分类。通过统计文档中各个此出现的次数判断该文档在描述什么。例如,一个中如果猪、牛、马、羊、山谷、土地、拖拉机这样的词汇多,而银行、大厦、汽车、公园这样的词汇少,就可以断定该文档描述的乡村的场景,而不是城镇。
BOW也可以应用在视觉领域的图像分类中,其基本思想就是将图像的特征看成一个特征集合,通过统计图像中特征出现的次数来对图像进行分类。这里以SIFT特征为例来理解如何利用BOW对图像进行分类。

BOW实现步骤:

  • 1.创建词汇(特征)词典
  • 2.得到训练数据到字典的映射
  • 3.选择适当的分类器进行训练
  • 4.对新来的样本,先映射到字典空间,然后利用得到的分类器进行分类

1.创建词汇(特征)词典

以SIFT 128维特征作为例子。例如现在有1000张训练图片,对每一张训练图片都提取SIFT的128维特征,那么最终可以得到N(i)*128的特征,N(i)代表第i张图特征点的个数,因为每张图像不一样,所以每张图像的SIFT 特征个数也不一样。提取特征后对1000张图像提取出的所有SIFT特征进行聚类(目的是为了合并那些相近的特征,相当于集合的合并操作),常用的聚类方法是k-均值聚类。对以上例子对 N(i) 个特征选择1000聚类中心进行聚类,将这1000个聚类中心称为词典,这个词典好比一个容器,通俗一点就是一个直方图的基,利用这个基去统计这些样本的信息。

2.得到训练样本到字典的映射

此时已经得到一个直方图的基,如下图:
BOW模型理解_第1张图片
图1 直方图的基,n表示聚类中心个数
这些直方图的基像是在空间的一些三维空间基向量i,jk,利用这些基向量去构造别的向量,只需要知道特定的系数就行。所以接下来的步骤就是将原始的图像(SIFIT 128维)向这些基向量作映射,得到相关系数(图像中出现该特征的个数),如图:
BOW模型理解_第2张图片
图2 两个类别的直方图
通过相关的映射,得到不同类别的一个类别的直方图统计,这样整个BOW特征提取过程就算是完全实现了。接下来如何进行匹配,就是选择分类器的问题了。

3.选择适当的分类器进行训练

分类器可以选择朴素贝叶斯分类器或SVM。有研究表明BOW结合SVM效果比较好。训练的时候,将步骤2中得到的相关系数作为输入,送入到SVM分类器中进行训练。

4.对新样本进行识别

训练好分类器后,对于新来的样本,同样先提取SIFT特征,然后将SIFT特征映射到图1中的词典中去,然后得到的直方图就可以通过分类器进行分类了。
BOW模型理解_第3张图片
图3 新图片的BOW直方图特征。

参考文献

1.Bag of Word闲谈
2.Bag of Words(BOW)模型

你可能感兴趣的:(机器学习,深度学习)