BoW实现图像分类报告

2017-04-21  本文已影响0人  Fruit_初

在一般图像处理中常用的几种特征有:
SIFTSURFORBOpponentColor
对一张图片,其存在以上几类不同的特征点,这些特征点具有尺度不变性,所以放大缩小或者旋转,都不影响特征点的匹配。

因此,我们可以认为

将训练集中一张图片上的所有相应特征提取出来,进行分类学习。那么对于测试集合中的图片,我们可以根据其中所有的特征点属于某一类的概率,计算出这张图片最有可能属于的类。


但是,这样的做法确是低效的,而且效果不良好的。

主要原因有(不妨假定,我们现在提取的是SIFT特征):

针对上述问题,我们使用的是bag-of-words的方法来对每张图片提取特征。其主要的思路如下:

(1)依然是对每张图片提取其特征点,比如提取了SIFT特征点
(2)对所有图片的所有的SIFT特征点,整体进行kmeans聚类,将词划分成多个不同的类,类的个数定义为wordCount。
(3)对每张图片,计算不同的类的SIFT特征的个数,对应所要得到的特征向量中的一个维度。则我们可以对每张图片生成一个wordCount维的向量。


形象的理解bag-of-words可以这么看。
比如对于两张狗的照片:


dog1 dog2

它们两个是不同的。如果把眼睛部分截取出来,作为一个单词,相似度就会很高。而这两点相似度很高的局部,对应的SIFT特征也是很高的匹配度的。


word word

对所有的狗来讲,可能每个与dog eye这个词有关SIFT特征都会出现一次或者多次,而在其他类里面很可能这个词有关的特征就不会出现。

所以我们可以认为所有的SIFT特征是可以划分出不同的类的,也就是不同的词(比如dog eye),这些被划分出来的词在不同的类中的出现频率是不一样的。而这个分类,我们使用kmeans实现。

那么,比如狗、世界杯、枪的特征通过聚类,可以被划分成如下的单词本。

words

则相应的,比如dog类在dogeye维度上的频率就会更高一些,worldcup在football维度上频率会更高一些。


最后,使用的是SIFT+BoW模型+线性SVM,结果如下:
(截图here)

其实并没有那么理想,也是在意料之中的,因为对文本来讲单词的顺序也许不是那么重要。但对于图像来讲,图像的结构还是很重要的,而我们在从使用SIFT特征开始就已经破坏了图像的结构特征。所以这也是这种方法不能得到完美的原因。

上一篇 下一篇

猜你喜欢

热点阅读