基于词袋模型(bag-of-words)的图像识别分类

基于词袋模型(bag-of-words)的图像识别分类

GitHub代码:https://github.com/doublecheckhjc/Image-classification_1

1. 词袋模型

词袋模型(bag-of-words,BOW)即将所有词语装进一个袋子里,不考虑其词法和语序的问题,即每个词语都是独立的,把每一个单词都进行统计,同时计算每个单词出现的次数。词袋中每个词语都是独立的,不考虑词法和语序的问题。这里举个例子。

文本1. I like apples,I like bananas.
文本2. I like playing games.

我们来建立一个词袋,[I,like,apples,bananas,playing,games],那么两个文本就可以表示成如下形式:

文本1. [2,2,1,1,0,0],
文本2. [1,1,0,0,1,1].

直方图表示两个文本
那文本1来说明,这些数字代表的是词袋中每次词在文本1中出现的次数,如I出现2次,like出现2次,applesbananas出现1次,playinggames出现0次,这样就得到文本1的序列。文本2同样的道理,这里不再重复。

词袋模型最初是出现在了NLP和IR领域,被用于文本特征的提取,近些年,Fei-fei Li[1]提出了用BoW模型表达图像的方法,他们认为, 图像可以类比为文档(document), 图像中的单词(words)可以定义为一个图像块(image patch)的特征向量,那么图像的BoW模型即是 “图像中所有图像块的特征向量得到的直方图”。

2. BOW模型应用于图像识别分类

首先介绍一下该模型的一般步骤:

  1. 特征提取
    类比一下上面文本特征的提取,把文本1这句话切成一个个单词,这个过程就是在提取这个文本的特征,那么在图像中提取特征也类似,就是把图像切成一个个的片(patch),每片当成该图像的特征。常用的特征提取方法有SIFT、LBP、SURF等。

  2. 生成字典/词袋(codebook)
    在上一步特征提取中我们得到了很多的特征点,我们不能把每个点都放进词袋吧,那么就需要想一个招找到这些点中具有代表性的几类点,这一般需要聚类方法来完成的。对全部特征点进行聚类,得到了几个聚类中心,这些聚类中心就是这些点的特征向量。这一步之后就得到了词袋。(不理解的可以类比一下上面文本形成词袋的过程,上面文本形成词袋是把所有单词都放进去了,但是对图像来说特征点太多不可能全部放进去,所以使用聚类把聚类中心就当成词袋中的点)。

  3. 根据词袋生成特征直方图
    对于每张图片都有大量的特征点,那么就把这些点对照着上面得到的词袋统计出来,这样每张图片都会得到一个特征直方图,可以参考一下上面文本直方图。

3. 实例

实验数据集来自于http://multibandtexture.recherche.usherbrooke.ca/normalized_brodatz.html,这是一组标准纹理数据集。更多实验数据集详见更多实验数据集
在本节将要结合实际数据来介绍BOW模型的应用。
1.数据集
原图
这里我只使用了Brodatz数据集的前五类样本,原图片是640640大小的tif格式图片,我先把每一类样本切割成6464大小的块,这样每类图片得到100张实验样本,80张作为训练样本,20张作为测试样本。为了方便后序实验,在切割保存时按照"类别-样本数"命名。如第一类第一个样本命名为"1-1.jpg"。下图是部分切割后的图片。
在这里插入图片描述
这里给出切片的代码:

M=10;N=
  • 13
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值