郭子琰,舒 心,刘常燕,李 雷
(南京邮电大学,江苏 南京 210023)
在日常生活中,花卉随处可见,花卉具有巨大的文化价值、经济价值以及生态价值。虽然同品种间的花卉之间存在着形态、结构、习性等显著性差异,但是,由于花卉种类繁多,给人们对花卉的认识和识别带来了很多麻烦。因此,建立一个花卉识别系统,对于快速正确地识别花卉是非常有必要的。
随着科学技术的快速发展,智能手机的普及,人们越来越倾向于用更生动形象、容易理解的图片来代替繁琐的文字。然而,信息的图片化也产生了很多问题。一般,对于传统的文字记录信息,可以直接搜索关键词来获取相应的内容,而当用图片来表达信息时,却无法直接对图片表达的信息进行搜索或处理。虽然,随着计算机技术的飞速发展,可以通过处理图片获得重要的信息,但是对花卉识别的工作还相对较少。而已有的可进行花卉识别的实验或者APP的识别率和计算速度偏低,因此要更加完美地识别花卉,还需要更好的算法来支持。
自20世纪60年代,Hubel和Wiesel提出卷积神经网络以来,卷积神经网络逐渐发展并得到了重视[1]。由于卷积神经网络可以直接输入图像,避免了对图像的前期复杂处理,而且卷积神经网络可以很好地识别位移、缩放及其他形式扭曲不变性的二维图形,因此得到了广泛应用。又因为目前国内外的研究人员利用神经网络对植物种类的识别已经取得了一定的进展,因此,文中利用卷积神经网络进行花卉识别,提高花卉识别的准确率,推进相关技术的发展。
神经网络是图像处理的常用方法,在图像处理中,图像通常用它的像素向量来表示,数据量很大,再经由神经网络的多层运算,数据量将以次方级递增,利用神经网络进行训练几乎是不可能完成的。而CNN通过局部感受野[2]和权值共享[3],可以有效地降低参数数目,提高训练速度。局部感受野的原理是,每个神经元不需要对全局图像进行感知,只需要对局部进行感知,然后在更高层将局部的信息综合起来就可以得到全局的信息。权值共享的原理是,由于图像的一部分的统计特性与其他部分是一样的,所以在一部分学习的特征也能用在另一部分上,所以图像上的所有位置,都能使用同样的学习特征。
首先,利用Matlab对图像进行灰度处理[4],再利用双线性插值法对其进行缩放,在此基础上设计的花卉识别CNN框架如图1所示。
图1 花卉识别的CNN框架
花卉识别的 CNN 框架具体如下:
(1)输入。当原始图像不是灰度图像时,首先进行灰度化;当大小不是28×28时,采用双线性插值算法对图像进行缩放,以满足输入要求。
(2)C1层。C1是一个卷积层,卷积层是指用一个可学习的卷积核与上一层输出的特征图进行卷积运算,并通过激活函数输出[5]。在C1中使用5×5大小的卷积核,最终获得24×24大小的一个特征图。卷积得到的结果并不是直接存储在C1层,而是先通过一个激活函数进行计算,再作为C1层某个神经元的特征值。传统的激活函数一般选取Sigmoid系函数,但是使用这种函数需要进行预训练,否则将会出现梯度消失无法收敛的问题。而近似生物神经激活函数ReLU在没有预训练的情况下,训练效果比普通激活函数更好,甚至比一些普通激活函数预训练后的效果更好,并且训练速度更快[6]。在实际操作中,卷积的时候还要加上一个偏置项。对于图像块x,采用卷积核w进行卷积,偏置项为b,输出为y的卷积,运算为:
y=ReLU(wx+b)=max(0,wx+b)
(1)
(3)S1层。S1是子采样层,它获得12个12×12大小的特征图。它是通过将C1中所有互不重叠的2×2的子块x求和,再乘以一个权重w,加上一个偏置项b得到的。子采样计算过程为:
y=ReLU(w∑xi+b)=max(0,w∑xi+b)
(2)
(4)C2层。C2也是一个特征提取层,跟C1有类似的地方,同时也有一定的差别。C2的特征图共有24个。C2中的每个特征图在作卷积时,是由S1中几个特征图或者全部特征图组合成输入,然后再做卷积得到。
(5)输出层。输出层是与S2的一个全连接层,它将S2中的所有神经元连接到当前层的每个单个神经元。使用softmax回归[7]进行分类,因为它产生输出的良好的概率分布,最终得到的激活值即卷积神经网络提取到的图片特征。
传统的神经网络中,常用Sigmoid函数作为激活函数:
(3)
从数学上来看,非线性的Sigmoid函数对中央区的信号增益较大,对两侧区的信号增益小,在信号的特征空间映射上有很好的效果。标准的Sigmoid输出不具备稀疏性,需要用一些惩罚因子来训练出接近0的冗余数据,从而产生稀疏数据,例如L1、L1/L2或Student-t作惩罚因子。因此需要进行预训练,否则将出现梯度消失无法收敛的问题。目前,一类近似生物神经激活函数被广泛运用于卷积神经网络中,其中主要包括ReLu函数[8-9]和Softplus函数,图像分别如图2所示。
图2 ReLU函数和Softplus函数图像
其中,ReLu函数定义为:
ReLu(x)=max(0,x)
(4)
ReLU是线性修正函数,作用是如果计算出的值小于0,就让它等于0,否则保持原来的值不变。这是一种强制某些数据为0的方法,然而经实践证明,训练后的网络完全具备适度的稀疏性[10]。而且训练后的可视化效果和传统方式预训练出的效果很相似,这也说明了ReLU具备引导适度稀疏的能力。因此与Sigmoid函数相比具有更强的优势。
Softplus函数是另一种近似生物神经激活函数,与ReLU函数图像近似,但更平滑,定义如下:
Softplus(x)=ln(1+e-x)
(5)
但是,一方面,在深度网络中,对非线性的依赖程度比较小;另一方面稀疏特征并不需要网络具有很强的处理线性不可分机制。所以,使用简单、速度快的线性激活函数ReLU更为合适。
2.2.1 参数设置
首先对CNN的基本参数进行设置,包括CNN的卷积、降采样层的数量、卷积核的大小,降采样的降幅、网络结构及训练参数。之后,初始化卷积核、偏置、尾部单层感知器的设计。因为卷积降采样需逐层设计,所以初始化设置权重控制在-1~1的随机数之间,并分别设计尾部单层感知器的权重和阈值。
2.2.2 函数设置
设置函数用于训练CNN,生成随机序列,每次选取50个样本进行批次训练:完成前向过程、误差传导和梯度(权重的修改值)计算过程,计算此随机样本的梯度,并求和进行训练更新到权重模型中,用于下一步更新权重。
(1)前向过程。
在CNN中,前向传播算法的重点是输入层的前向传播,卷积层的前向传播以及池化层的前向传播。用l表示当前层,那么当前层的输出可表示为:
xl=f(ul)
ul=Wlxl-1+bl
(6)
输出激活函数如前面提到的,选取了训练效果更好的ReLU函数。
在前向过程,首先取得输入参数,然后对其进行两次降采样处理,将此批数据送入尾部单层感知器,通过全连接的方式得到输出层。
(2)梯度计算。
在前向过程得出结果的基础上,计算并传递神经网络的误差,计算梯度。在提取误差时,分卷积层和降采样层进行讨论[11]:
①若该层为卷积层。
在卷积层,前序层的特征图通过可学习的核进行卷积,然后通过激活函数ReLU构成输出的特征图。每个输出的图可能包含多个输入图的卷积,一般来说:
(7)
计算卷积层中的每个图j,并将其相对的降采样层对应起来:
(8)
其中,up(·)表示升采样操作。
(9)
最后,核函数的权重的梯度通过反向传播计算,将该权重涉及到的所有梯度求和:
(10)
②若该层为降采样层。
降采样层产生输出图降采样后的结果,假设有N个输入,就会有N个输出,输出可表示为:
(11)
其中,down表示降采样函数。该函数会使输出比输入在不同维度都小。每个输出都有自己的乘子偏差β以及附加偏差b。
附加偏差b就是误差信号图中元素的求和:
(12)
其中
(13)
乘子偏差β和前向传播中当前层的原始降采样图有关,在前向传播过程中保存这些图有利于计算,定义如下:
(14)
所以β的梯度为:
(15)
最后进行梯度更新,包括更新特征抽取层的权重和尾部单层感知器的权重。
2.2.3 训练CNN
训练并调用已设置好的训练函数和更新函数,并测试样本的准确率。定义CNN中的各项参数:卷积核大小、输出样本的大小、初始权值、最大训练次数,每次训练选取50个样本进行批训练。
实验在MatlabR2014a平台下实现。通过图像灰度化和双线性插值法进行了预处理。
颜色会对花卉种类的识别造成一定的干扰,而且彩色图像存储量大,处理起来不方便,因此需要将彩色图像转化为包含同样信息量且处理过程更加简单快速的灰度图像。这个过程称为灰度化处理,有利于对图像进行模块化处理,消除图像噪声以获得更好的二值化图像,并减少图像处理的计算量[12]。
图像灰度化后,输入的图像的大小可能各不相同,有一些图像的分辨率较大,有一些较小。而且长宽比也不一定相同。而由于图像的大小直接关系到卷积核的选取,因此不宜太大;如果图像太小,又会引起图像关键细节的丢失[13]。因此文中的卷积神经网络结构要求输入图像大小固定,所以要对不同尺寸的图像进行缩放。目前大部分情况下采用的是通过双线性插值法进行缩放,使得输出的图像是固定分辨率,如图3所示。
图3 将不同大小的图片灰度化并缩放同一尺寸
CNN对旋转、光线、角度等影响因素不敏感,所以无需太复杂的图像预处理步骤[14]。
在花卉识别中,衡量算法性能的指标是识别错误率,定义如下:
(16)
为了验证基于ReLU函数的卷积神经网络对花卉识别的可行性,分别选取300张玫瑰和雏菊的图片进行检验。从每种花卉里选取50个样本作为训练集,识别错误率为7.5%,说明具有良好的识别性能。
为了验证ReLU激活函数的优越性,做了一系列对比实验,在MINST手写数字数据集[15]、CIFAR-10基础数据集、JC-NORB数据集上,在没有预训练的情况下,将ReLU函数与Sigmoid函数和Softplus函数的识别错误率进行对比,如表1所示。
表1 不同激活函数在不同数据集上的
由表1可以看出,在没有预训练的情况下,近似生物神经激活函数ReLU和Softplus函数相比Sigmoid函数具有很大的优势。ReLU函数相较于Softplus函数识别率近似且有一定程度的优势,并且由于ReLU函数简单、高效,会表现出更快的识别速度,进一步证明ReLU函数作为激活函数具有一定的可行性和优越性。
基于已有的植物识别技术和花卉识别技术进行进一步探究,以提高花卉识别的正确率以及分辨速度。通过将文中算法与其他算法进行对比,可以得出文中算法优于大多数传统算法,具有一定的可行性。
参考文献:
[1] GU Jiuxiang,WANG Zhenhua,KUEN J,et al.Recent advances in convolutional neural networks[J].Pattern Recognition,2018,77:354-377.
[2] 夏 勇.基于特征的纹理图像分割技术研究[D].西安:西北工业大学,2006.
[3] 李飞腾.卷积神经网络及其应用[D].大连:大连理工大学,2014.
[4] 张晓利.基于粒子滤波跟踪的步态特征提取算法研究[D].济南:山东大学,2010.
[5] 张丹丹.李 雷.基于PCANet-RF的人脸检测系统[J].计
算机技术与发展,2016,26(2):31-34.
[6] GLOROT X,BORDES A,BENGIO Y,et al.Deep sparse rectifier neural networks[C]//International conference on artificial intelligence & statistics.[s.l.]:[s.n.],2011:315-323.
[7] GREENE W H.Econometric analysis[J].Contributions to Management Science,2002,89:182-197.
[8] 孙艳丰,杨新东,胡永利,等.基于Softplus激活函数和改进Fisher判别的ELM算法[J].北京工业大学学报,2015,41(9):1341-1348.
[9] NAIR V,HINTON G E.Rectified linear units improve restricted Boltzmann machines[C]//Proceedings of the 27th international conference on international conference on machine learning.Haifa,Israel:Omnipress,2010:807-814.
[10] ZEILER M D,RANZATO M,MONGA R,et al.On rectified linear units for speech for processing[C]//IEEE international conference on acoustics,speech and signal processing.Vancouver,BC,Canada:IEEE,2013:3517-3521.
[11] 许 可.卷积神经网络在图像识别上的应用的研究[D].杭州:浙江大学,2012.
[12] 董红霞.基于图像的植物叶片分类方法研究[D].长沙:湖南大学,2013.
[13] 高惠琳.基于卷积神经网络的军事图像分类[J].计算机应用研究,2017,34(11):3518-3520.
[14] 龚丁禧,曹长荣.基于卷积神经网络的植物叶片分类[J].计算机与现代化,2014(4):12-15.
[15] 殷 瑞,苏松志,李邵滋.一种卷积神经网络的图像矩正则化策略[J].智能系统学报,2016,11(1):43-48.