2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > matlab图像分类器 一个用BoW|Pyramid BoW+SVM进行图像分类的Matlab Demo

matlab图像分类器 一个用BoW|Pyramid BoW+SVM进行图像分类的Matlab Demo

时间:2019-08-16 21:41:26

相关推荐

matlab图像分类器 一个用BoW|Pyramid BoW+SVM进行图像分类的Matlab Demo

快毕业了,整理点东西。

先做了一个简单的图像分类的Demo。是能够让图像分类的初学者能够直观的从实际中观察揣摩理解图像分类的环节,各个环节的步骤以及重要性,哪些环节是问题的 本质 等等。

图像的特征用到了Dense Sift,通过Bag of Words词袋模型进行描述,当然一般来说是用训练集的来构建词典,因为我们还没有测试集呢。虽然测试集是你拿来测试的,但是实际应用中谁知道测试的图片是啥,所以构建BoW词典我这里也只用训练集。

其实BoW的思想很简单,虽然很多人也问过我,但是只要理解了如何构建词典以及如何将图像映射到词典维上去就行了,面试中也经常问到我这个问题,不知道你们都怎么用生动形象的语言来描述这个问题?

用BoW描述完图像之后,指的是将训练集以及测试集的图像都用BoW模型描述了,就可以用SVM训练分类模型进行分类了。

在这里除了用SVM的RBF核,还自己定义了一种核:histogram intersection kernel,直方图正交核。因为很多论文说这个核好,并且实验结果很显然。能从理论上证明一下么?通过自定义核也可以了解怎么使用自定义核来用SVM进行分类。

代码下载链接: PG_BOW_DEMO.zip ,如果无法下载,当然可以再发邮件问我要,pagelee.sd at 。

Demo中的图像是我自己研究中用到的一些Action的图像,我都采集的简单的一共6类,每一类60幅,40训练20测试。 请注意图像的版权问题,自己研究即可,不能商用 。

分类器用的是 libsvm ,最好自己mex重新编译一下。

Demo中的版权我也已经注明。

下面是默认的demo结果:

Classification using BOW rbf_svm

Accuracy = 75.8333% (91/120) (classification)

Classification using histogram intersection kernel svm

Accuracy = 82.5% (99/120) (classification)

Classification using Pyramid BOW rbf_svm

Accuracy = 82.5% (99/120) (classification)

Classification using Pyramid BOW histogram intersection kernel svm

Accuracy = 90% (108/120) (classification)

当然结果这个样子是因为我已经把6类图像提前弄成一样大了,而且每一类都截取了最关键的子图,不太符合实际,但是为了demo方便,当然图像大小可以是任意的。

下图就是最好结果的混淆矩阵,最好结果就是Pyramid BoW+hik-SVM:

这是在另一个数据集上的结果:

Classification using BOW rbf_svm

Accuracy = 34.5714% (242/700) (classification)

Classification using histogram intersection kernel svm

Accuracy = 36% (252/700) (classification)

Classification using Pyramid BOW rbf_svm

Accuracy = 43.7143% (306/700) (classification)

Classification using Pyramid BOW histogram intersection kernel svm

Accuracy = 55.8571% (391/700) (classification)

有什么意见或者建议,还有问题等,欢迎留言。

本文转载自:丕子

欢迎加入我爱机器学习QQ14群:336582044

微信扫一扫,关注我爱机器学习公众号

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。