Flower classification using deep convolutional neural networks 阅读笔记

**

Flower classification using deep convolutional neural networks

**
本博客主要是对该篇论文做一个阅读笔记 ,用FCN+CNN去做识别
期刊: IET Computer Vision

内容:

(1)自动分割花朵区域,然后用最小边界框进行花朵定位,裁剪图片。花朵分割使用FCN实现。
(2)建立一个具有鲁棒性的CNN分类器,识别裁剪后的花朵图片。建立一个具有鲁棒性的CNN分类器,识别裁剪后的花朵图片。
(3)结果:识别效果超过 97%结果:识别效果超过 97%

一.关于CNN

该论文是针对 2D图像做分割、检测、识别。
1.若输入图像的尺寸:I = w × h × c ,其中 I 是指图像对象,w表示图像的宽度,h表示图像的宽度,c表示图像的通道。
2.给定卷积核(滤波器)的大小:K = Kw × Kh × Kc × n ,Kw表示卷积核的宽,Kh表示卷积核的高,Kc表示卷积核的通道,n表示卷积核的个数。
3.填充图像。主要目的是学习图像的边缘信息。若填充像素为p,Kw = Kh ,则卷积后的特征图的大小为:
M = [(w-Kw+2p)/s] + 1 , s表示步幅。
4.对图像进行卷积后,使用ReLu函数,目的是加速网络的训练过程。
5.对特征图进行下采样,下采样后的特征图的大小变为输入之前图像大小的一半
6.可选择性采用全连接层。决定那些特征与识别的类别有关。

二.提出的方法

第一步:通过采用 FCN 来检测最小边界框进而定位花朵。
第二步:训练CNN来精确地分类不同种类的花。

识别花的种类的整体框架如下:
在这里插入图片描述

1.通过迁移学习进行网络初始化

CNNs中的卷积核虽然可以随机初始化,但是大多数深度学习的方法都采用已存在的在大数据集(例如IMageNet)与训练的模型来初始他们的模型,这就是所谓的迁移学习。以下时FCN模型的描述:

在这里插入图片描述

FCN包括5个卷积块和3个反卷积层,这3个卷积层对第5个卷积块生成的特征图进行上采样。使用双线性插值上采样来确保花朵边缘的平滑重建。此外,(S=2,2,8)也允许对细粒度结构的分割进行细粒度差值。使用反向传播来训练FCN。 但是最初在块1和2上修复内核(即使用ImageNet内核)并且只让模型在块3-5上学习内核。这使它可以在不优化低级内核的情况下学习中到全局的特征图。当验证准确度饱和时,我们停止训练,然后从最后学习的模型开始再次重新启动,让FCN学习前两个块中的内核。 这允许模型学习本地特征。 通过实验发现,与一步学习所有内核相比,此过程可提高分段准确性。 此外,由于具有小数据集,我们通过允许小旋转,水平翻转,图像边界的随机小裁剪或这些变换的任何组合来在训练期间增强图像。 这有助于创建更强大的FCN模型并避免过度拟合。
该篇论文采用VGG16模型来初始化FCN的前5个模块,实线表示的部分为FCN模型。然后使用FCN去初始化CNN。

2.使用FCN对花进行语义分割

在一张带有花的图片中使用FCN对花朵区域进行分割、检测。将分割任务看做一个二元分类问题,即0表示背景,1表示花朵区域。
以下图片详细展示了分割和花朵定位的过程:

在这里插入图片描述

图像a为原始图像,图像b是FCN输出的分割掩摸,其中白色区域就是花朵区域,保持最大连通量,并找出最小边界框(红色框标记),如图c所示,进而裁剪图片,如图d所示。

3.用CNN进行花朵分类

当获得裁剪图像之后,保留了高度可辨别的特征,而移除其他可能误导分类的区域。
1.使用softmax损失函数作为衡量特定参数好坏的标准
2.使用SGD(随机梯度下降)优化和更新参数,最小化损失函数

在这里插入图片描述
其中j = 1,…,N。我们注意到在CNN参数优化期间损失函数最初表现不佳。这有几个可能的原因,但主要是由于与二进制分割FCN中的学习权重相比的多类分类问题的复杂性。另外,我们学习的函数不是凸起的,不是平滑的,并且具有许多平坦区域的局部最小值。因此,我们提出了两个新的步骤来改善算法的收敛性。

首先,由于CNN中有比FCN更多的卷积层,我们建议以三步法学习内核参数。第一,我们让CNN在块6-8处学习卷积层中的内核,同时修复前五个块的参数。第二,我们让CNN学习块3-5中的参数。第三,我们让所有块的所有参数同时学习。以上为CNN提供了更好的收敛。

其次,由于存在大量的局部最小值,这样会阻止优化器的优化。因此,让优化器在某些情况下重新启动,同时找到的最佳值。为了解决这个问题,我们提出了一个多步骤的培训方法,在此过程中,我们强制学习率在每个步骤中降低,然后突然大幅增加。学习速率的提高允许优化器“重启”自身以允许搜索其他附近的解决方案。关于重启SGD的不同方法的更多细节在[50]中描述。

此外,由于3.2节中描述的花朵检测步骤,可以使用更广泛数据增强。例如,这里使用比FCN模型更大范围的旋转角度和垂直翻转。因为图像已经在花朵周围被裁剪,并且大旋转不会影响整个裁剪图像的整体外观。然而,在整个(未裁剪的)花图像上执行大旋转可能产生完全不现实的图像。最后,通过数据增强,生成的CNN对于更广范围的变换(尤其是对象旋转)可以更稳健。

4.实验

该论文在三个数据集上进行了实验,分别是:the Oxford 102 [5], the Oxford 17 [6] and Zou–Nagy [7]

4.1评估指标

对于花朵分割阶段,使用 IoU(人工分割和自动分割重合的百分比),如下公式:
在这里插入图片描述

精确的分割对于花的分类任务并不产生影响,因为在识别时,只是粗略检测出花朵的区域,因此只需评估检测的进度即可。该论文中使用边框的重叠来衡量,即Biou,如下公式:
在这里插入图片描述
其中,th表示阈值。
识别精度(CA)用以下公式表示:
在这里插入图片描述

5.实验结果

(1)采用数据增强 和 不采用数据增强的分割检测的精度,如下表所示:
在这里插入图片描述
分割精度提高7.5%,边框检测精度提高4.1%

(2)在不同数据集的不同阈值下,边框(Boverlap)重叠率的变化,如下图所示:
在这里插入图片描述

当th = 0.5时,Boverlap = 0.95, 任何一个边框的Biou > 10% 。 以下是该论文与已经公布的实验结果作比较:

在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_41644725/article/details/83180737