Bag of Words/Bag of Features的Matlab源码发布(转自丕子)

由于自己以前发过一篇文章讲bow特征的matlab代码的优化的《Bag-Of-Words中K-Means聚类的效率优化》,其中的代码也用过Spatial Pyramid Code的代码里面的几个函数,不过大部分还是根据本地的需要,根据大数据量计算的需要自己整合修改的,经过不少同学的改错,现在已经基本没有错误了,注释没怎么写,以后慢慢补上,如果有什么问题可以交流。

下载地址是我的实验室的链接,希望不要盗链了:

  • PG_SPBOW.zip: Matlab code for computing the bag of visual words at different levels of spatial pyramid of images.

另外在最新的一篇博文《一个用BoW|Pyramid BoW+SVM进行图像分类的Matlab Demo》详细讲了怎么结合SVM分类的问题和Matlab Demo,很直观,希望有用。

下面再次说一下基本的理解:

1、个人感觉Bag of Words/Bag of Features原理都差不多,个人还是当一个概念来理解的,可能bag of features涵盖的内容更加具体,特征更有代表性吧。

2、聚类的初始点可以自己选取,也可以随机选取,其实对于聚类的结果虽然有影响,但是最后用于分类的时候影响没那么明显。

-------------

最初的Bag of words,也叫做“词袋”,在信息检索中,Bag of words model假定对于一个文本,忽略其词序和语法,句法,将其仅仅看做是一个词集合,或者说是词的一个组合,文本中每个词的出现都是独立的,不依赖于其他词 是否出现,或者说当这篇文章的作者在任意一个位置选择一个词汇都不受前面句子的影响而独立选择的。

现在Computer Vision中的Bag of words来表示图像的特征描述也是很流行的。大体思想是这样的,假设有5类图像,每一类中有10幅图像,这样首先对每一幅图像划分成patch(可以是 刚性分割也可以是像SIFT基于关键点检测的),这样,每一个图像就由很多个patch表示,每一个patch用一个特征向量来表示,咱就假设用Sift 表示的,一幅图像可能会有成百上千个patch,每一个patch特征向量的维数128。

接下来就要进行构建Bag of words模型了,假设Dictionary词典的Size为100,即有100个词。那么咱们可以用K-means算法对所有的patch进行聚 类,k=100,我们知道,等k-means收敛时,我们也得到了每一个cluster最后的质心,那么这100个质心(维数128)就是词典里德100 个词了,词典构建完毕。

词典构建完了怎么用呢?是这样的,先初始化一个100个bin的初始值为0的直方图h。每一幅图像不是有很多patch么?我们就再次 计算这些patch和和每一个质心的距离,看看每一个patch离哪一个质心最近,那么直方图h中相对应的bin就加1,然后计算完这幅图像所有的 patches之后,就得到了一个bin=100的直方图,然后进行归一化,用这个100维德向量来表示这幅图像。对所有图像计算完成之后,就可以进行分 类聚类训练预测之类的了。

增加一点个人的理解,具体步骤如下:
1、将图像划分为一个个的patch(小块),计算每个小块的densesift,每个小块都为128维。
2、对train样本进行kmeans计算,计算出样本的中心,这个中心的个数一般要远远超出样本类别数目。
3、以train样本中心做为直方图的横坐标,将train样本和test分别进行直方图投影。
4、以train样本直方图作为训练样本放入svm进行训练。
5、利用svm对test样本直方图进行预测。
注:test的特征,直方图可以放到使用的时候再生成。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值