美文网首页
BoW实现图像分类报告

BoW实现图像分类报告

作者: Fruit_初 | 来源:发表于2017-04-21 09:35 被阅读0次

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

    因此,我们可以认为

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


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

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

    • 每张图片都有成千个SIFT特征,因此1000张的测试图片提取出来的特征向量可能有超过1e6个。数据量过于庞大。
    • 每张图片中本身存在一些实际上为噪音的特征点。比如,背景上的SIFT特征,对于我们的分类本身属于一定程度的干扰,当然我们可以对SIFT特征进行一些筛选。
    • 每张图片能提取出的SIFT特征数目与图片的大小有关。在实际测试中,比较大的图片上,比如fruits等等类的图片可以有几千个特征点,而bear类因为每张图片比较小只有几百个特征点。这样会导致训练数据的失衡。(此处的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特征开始就已经破坏了图像的结构特征。所以这也是这种方法不能得到完美的原因。

    相关文章

      网友评论

          本文标题:BoW实现图像分类报告

          本文链接:https://www.haomeiwen.com/subject/lwgrzttx.html