Deep Learning and SVM Classification for Plant Recognition in Content-Based Large Scale Image Retrie

Deep Learning and SVM Classification for Plant Recognition in Content-Based Large Scale Image Retrieval 论⽂周报

Bálint Pál Tóth, Márton Osváth, Dávid Papp, Gábor Szűcs
CLEF 2016
(⼀种将CNN与SVM组合起来对植物识别的⽅法)


0. 基本思想概述

提出了什么以及为什么提出

植物识别是在农业还是⽣态领域都有很重要的地位,然⽽有些植物之间有很⼤的相似性,所以识别植物有时候是⼀个复杂⽽专业的⼯作。在这种情况下,⽂章提出了⼀种基于图⽚内容的识别⽅式,从7个viewpoint(茎、叶等)来分别对图⽚进⾏分类。另外为了让模型有更好的鲁棒性,⽂章针对未知类别的植物提出了⼀种⽅法来识别未知类别的植物。

怎么做

论⽂使⽤了三种⽅法来进⾏植物识别:
1 .  使⽤Fisher Vector与SVM进⾏分类
2 .  使⽤深度学习进⾏分类
3 .  集成1、2两种⽅法,并加上使⽤元数据构造的第三个分类器,集成起来进⾏分类


1. Fisher V ector & SVM

这是使⽤了传统的机器学习的⽅法来进⾏分类的,分成两个主要的步骤:

基于内容表达图⽚

这部分把RoW模型应⽤在图像上,使⽤了dense SIFT的⽅法来提取特征;模型分成3步:特征检测、特征描述以及图像表达。

对于前两个步骤,主要是使⽤了传统的dense SIFT来提取特征,再对特征使⽤PCA进⾏降维; 对于图像表达,作者对图⽚⽐较低级的特征使⽤GMM模型进⾏编码,得到Fisher-vector来描述图像。

分类

把SVM扩展成多类分类器,然后对7个viewpoint分别训练7个SVM和基于RBF的C-SVC进⾏分类。


2. Classification by Deep Learning

⽂章主要是使⽤了AlexNet来进⾏分类,主要思路是卷积层负责特征学习,带1000-way的softmax以及全连接层负责分类。

在训练之前,作者对数据进⾏了数据增强与标准化,AlexNet做了⼩⼩的改动,如下图,把ReLU改成PReLUs,并在每次max-pooling之前加上了BN。

优化算法使⽤了AdaDelta。

Deep Learning and SVM Classification for Plant Recognition in Content-Based Large Scale Image Retrie

 


⽂章使⽤了三个模型集成:除了上⾯两个模型,还构造了第三个模型,即使⽤元数据构造的随机森林;根据模型最终的效果对最终的集成模型进⾏加权,

  • SVM:0.3
  • CNN:0.6
  • metadata:0.1

另外对于未知类别的植物,作者构造了⼀个模型来识别这些图⽚并过滤掉,⽅法如下:
1 .  计算测试图⽚的FV与训练数据的最⼤距离,如果距离较远,则作为异常数据过滤掉。
2 .  如果测试图⽚的分类决策值⼩于0.3,也作为异常值过滤掉。

作者基于7个viewpoint训练了7个SVM,进⾏分类的时候,根据图⽚的viewpoint使⽤对应的SVM进⾏分类。

然⽽由于不⼀定所有图⽚都有viewpoint,所以对于图⽚中没有viewpoint的数据,作者对这7个SVM的决策值进⾏加权平均,每个viewpoint对应的SVM赋予不同的权重,得出的结果作为该样本的标签。


4. 个⼈理解

对RoW应⽤在图像上的理解

2006年,Li Feifei将RoW应⽤在object recognition上,我去查了相关资料,然后谈⼀下我的理解。

把RoW应⽤在图像上的⽅法主要分三个步骤:

⽅法主要分三个步骤:
1 .  特征提取
在本⽂中,作者是⽤dense SIFT来提取特征的,那我以SIFT特征为例,每张图像可以提取出多个关键点,⼀个关键点标记为⼀个patch。由于是SIFT提取,所以每⼀个patch应该由⼀个128维的特征向量表⽰。

对应原来的RoW模型(Row模型原本是应⽤于⽂本的),其实每⼀个patch就是⼀个单词。

2 .  字典构建
对上⼀步得到的特征向量,即所有的patch进⾏聚类, 能得到K个聚类中⼼,每个聚类中⼼就对应于词典中的单词,每个单词⼜由128维的特征向量表⽰,所以假设字典⼤⼩为m,我认为在图像上的“字典”可以理解为⼀个m x 128的矩阵。

3 .  对每张图⽚进⾏字典表⽰
对于每张图⽚,

  • 先初始化⼀个全0的m维的向量v;
  • 再计算测试图像每个patch与字典中单词的距离,距离patch最近的单词的在向量v上对应的分量计数加1;
  • 将所有patch计算完毕后的向量即为图像的字典表⽰,即表⽰为⼀个m维的向量。