您的位置:首页 > 编程语言 > MATLAB

BOW物体分类模型

2017-04-26 18:07 316 查看

单词袋模型(BOW)

• 用于图片和物体的分类

• 设计来处理距离、视角、光照亮度、遮挡、同类不同物体等因素引起的变化

基本性质

• 表达方式
  – 怎么去表示一个物体所属的类

•  学习

  – 给定一个训练数据,怎么去学习分类器?

•  辨识

  – 分类器怎么用到新数据上?

相关工作

•  早期的单词袋模型:大多用于对纹理的辨识

    –  Cula & Dana, 2001; Leung & Malik 2001; Mori, Belongie & Malik,

        2001; Schmid 2001; Varma & Zisserman, 2002, 2003; Lazebnik,

        Schmid & Ponce, 2003;

•  文件的分层贝叶斯模型(pLSA, LDA, etc.)

   –  Hoffman 1999; Blei, Ng & Jordan, 2004; Teh, Jordan, Beal & Blei,

       2004

•  物体分类

   –  Csurka, Bray, Dance & Fan, 2004; Sivic, Russell, Efros, Freeman

      & Zisserman, 2005; Sudderth, Torralba, Freeman & Willsky, 2005;

•  自然景物分类

  –  Vogel & Schiele, 2004; Fei-Fei & Perona, 2005; Bosch, Zisserman

      & Munoz, 2006

物体→一袋子的单词



关于单词袋的思想其实很简单。我们用一些有代表性的无序的特征来表示一个物体,而不是用一系列有序的特征来描述物体。例如,我们可以用一些简洁的有代表性的特征比如眼睛、鼻子、嘴唇等来表示人脸。

文章的分析



单词袋第一次被提出是在Natural Language Processing (NLP)社区上,早在1954年Z. Harris在Distributional Structure上的计算语言学板块第一次使用了单词袋。以下为NLP社区上单词袋的基本思想:单词袋模型将文件表示成在文章里高频的典型单词的分布而不是像平时一样用单词组成的句子来表示文章,也就是说文章里面的空间结构消失了。

单词袋的定义

 - 独立的特征
 - 直方图表示



更详细的说,我们先从训练集里建造一个由单词组成的字典。然后,我们把每个类别用不同的单词频次来表示,也就是说,用能纪录每个单词出现频次的直方图来表示物体。图片中的直方图表示了三个类。



现在我们具体讨论以单词袋模型为重要组成部分的物体分类方法。我们先看看该方法的综述。图片黑色加粗了该分类方法的三条性质。

假设我们想获得一个能把图片从K类不同图片中分出一类的分类器。

representation(表达方法):
1.我们建立一个用特征点组成的字典,特征点取自训练图片集。
2.我们用字典里的单词对训练集里的某类图片进行描述,即建立单词频次直方图。
3.因此,每类图片都由一系列直方图表示。这些直方图集合建立起了分类模型。

learning(学习):
1.我们学习一种分类器,这种分类器能把不同类别的直方图分开。

recognition(辨别):
1.给予一个待求图片,我们用字典计算相应的直方图。
2.我们用学习好的分类器去决定这个直方图最接近哪个类别。

(一)、程序流程

第一步、特征检测与描述

•  网格法

– Vogel & Schiele, 2003

– Fei-Fei & Perona, 2005

•  兴趣点法

– Csurka, et al. 2004

– Fei-Fei & Perona, 2005

– Sivic, et al. 2005

•  其他方法
– 随机取样 (Vidal-Naquet & Ullman, 2002)

– Segmentation based patches (Barnard, Duygulu, Forsyth, de

Freitas, Blei, Jordan, 2003)



对于每个关键点,我们都可以关联一个描述子(例如 SIFT,等等),一个描述子是一个 NX1 的向量。

第二步、单词字典形成



对于每张图片或每类图片我们将取得的描述子表示成一个集合。




这些向量可以被指派到不同的点(聚类中心)。如果描述子是高维度的话,这个坐标系就可以是一个高纬度的空间。



在这幅图片里我们用了SIFT描述子。为了使描述更直观我们可视化了SIFT描述子。相似的描述子会聚在一起。
每个聚类中心可以代表这一类,因此该聚类中心就选为字典里的一个单词。



这里就是一本由单词(聚类中心)组成的字典。



第三步、单词袋的表示




一旦字典已经建立,我们就可以将一张图片或一个物体表示成单词直方图。这需要以下步骤来实现:

1.我们先从待测图片里攫取特征点。(例如:图片里面的白色方框)
2.我们把这些特征点用描述子表示。(箭头所示 NX1 的向量)
3.我们通过分析描述子离哪个聚类最近给每个描述子指派一个字典里相应的单词。(红点属于红框所在的聚类)



4.通过计算每个单词出现的次数我们建立频次直方图

注意:给特征点指派单词需要找到距离最近的聚类中心,我们可以用 K-D 树加快运算速度。
然而,对于高维度的特征描述子,增速比O(log n)还差并且是sub-linear的。(n是字典里单词的个数)


(二)、有关该算法的一些问题

一、怎么选择字典里单词的数量?

 —  如果数量太少,单词不足以代表类内跟类间的不同。(不具备代表性)
 —  如果数量太大,过拟合。

二、计算效率

把单词指派给描述子的时候,会消耗大量计算机资源;把聚类组成树状(字典树)可以改良该问题
 —  单词树(Nister & Stewenius, 2006)

三、不变性问题(如何做到尺度、旋转、视角、遮挡不变性?)

 —  隐性的
 —  取决于关键点检测器跟关键点描述子

回到我们最初问的一个问题:单词袋对于一些几何变换是否具有鲁棒性?由于单词袋在最初构造的时候抛弃了任何有关空间的信息。所以,只要单词本身对于尺度、旋转具有鲁棒性那么模型就具备尺度、旋转不变性。

最后我给出一个自己用MATLAB编写的DSIFT+BOW+SVM的物体识别程序的下载链接。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  MATLAB BOW svm SIFT
相关文章推荐