黄玉富,朴燕,张汉辉
(长春理工大学 电子信息工程学院,长春 130022)
伴随着以互联网技术为核心的大量高科技产品的普及,人工智能[1-3]在现实生活中发挥着越来越重要的作用。作为一个农业大国,农业生产成本不断提高,大面积的水果种植使得水果自动采摘技术[4-5]应运而生。得益于深度学习技术的大力发展,使得水果自动采摘技术得到了快速发展。水果图像识别作为水果自动采摘技术的核心,其识别精度的好坏直接影响着水果自动采摘技术能否顺利准确的进行采摘。传统的水果图像识别技术已经无法满足现代农业大规模生产的需求,水果图像识别技术还需进一步研究。因此,研究基于深度学习的水果图像识别算法对水果的自动采摘具有重要意义。
传统的水果识别多利用特征描述方法获取其颜色、纹理等信息完成识别。例如Ji等人[6]针对上述特征,提出了一种基于区域生长和颜色特征的分割方法,并通过向量机的方法进行识别,但是在遮挡的情况下识别率较低;陶伟华等人[7]研究了一种颜色完全局部二值模式(CCLBP)和HSV颜色空间相结合的特征提取方法,该方法通过将提取出的颜色和纹理特征相结合,从而实现对水果图像的识别。Lu等人[8]通过分析色差信息和对RGB归一化的水果分割技术,提出了一种基于颜色信息和轮廓信息的水果识别方法,可实现自然光照下的水果识别,但是模型起初在水果分割阶段受光照影响较大;邹谜等人[9]利用水果的颜色信息,经过特征匹配实现对水果图像的识别,也取得了较好的效果。
深度学习[10]作为人工智能的一个分支,在图像识别方面获得了大量的运用。自然环境下水果类别之间具有很大的差异性,基于传统方法构建的图像识别系统找不到通用的特征提取方式,泛化能力较差。而深度学习方法大大减少人工规则的繁琐过程,特征提取表达能力强、泛化能力好,大量基于深度学习的水果图像识别方法被提出。例如Li等人[11]利用Otsu对草莓图像进行分割,并利用CaffeNet进行训练,完成对草莓的识别,取得了95%的识别率。Liu等人[12]提出基于CNN的SSD物体检测算法。
本文以苹果、香蕉、柠檬等34种水果为研究对象,针对现阶段水果图像识别过程中存在的漏检和误检问题,研究了以ResNet-50为骨干网络的一种多尺度特征融合水果识别算法,可有效解决在部分特征丢失、语义信息不完整导致的漏检和误检,从而进一步提高识别准确率。为防止训练时随着网络深度的加深而出现梯度消失或梯度爆炸现象,将ResNet-50作为骨干网络,并去掉ResNet-50末端的池化层和全连接层。同时采用多尺度卷积,增加网络宽度的同时采用不同尺度进行特征提取,全局特征与局部特征相融合有利于提升语义信息的多元化,增加多尺度的feature map输出,从而提升检测的准确性。
目前,为了提高在图像识别分类中的准确率,大量的卷积神经网络被提出。经过研究表明,网络深度将直接影响识别准确度,但一味简单粗暴的增加网络深度只会使梯度消失,或使梯度爆炸现象更加严重,庞大的权值参数对网络训练是一大难题。针对上述问题,2015年何凯明等人[13]提出了基于残差单元的网络结构,整个网络通过残差单元的堆叠,使得网络模型在加深的同时依旧能够保持较高的特征表达能力,成功解决梯度退化问题,残差单元如图1所示。
图1 残差单元结构
与传统的神经网络不同的是,残差单元采用跨层链接方式,通过shortcut connections(捷径连接)添加了输入到输出的连接,创建了输入的恒等映射,在不增加权值参数和计算难度的情况下,有效抑制了梯度消失问题,残差单元每层输出可以表示为:
其中,X为输入信息;W为需要学习的参数;σ(∙)为激活函数;F(·)表示卷积层对X的计算结果。在残差单元中,输入X通过捷径将会被直接输出,作为输出值的一部分,这将有效抑制深层网络中出现的梯度消失问题。当F(X) =0时,H(X) =X,即所谓的恒等映射。于是,在整个网络训练过程中,残差网络巧妙地将学习目标进行变化,不再是传统网络训练过程中的完整输出,而是残差单元的目标值为F(X)和输入值X的差值,也就是所谓的残差:F(X) =H(X)-X,因此,每一层的输入可以归结为:
通过梯度下降法对网络进行训练的最好目的便是将残差F(X)结果逼近于0,从而使网络加深,准确率也不会下降。设网络的损失函数为E,则在训练过程中反向传播可以表示为:
其中,ε表示网络经过前向传播之后得到的总的损失,即网络预测值与真实值经过对比之后得到的差距大小。小括号中的1表明采用捷径连接可以使高层的损失无损的传播梯度,从而解决梯度消失问题,增加网络可训练的层数。
提升卷积神经网络学习性能的最直接方法就是增加它的深度,这也是大多数研究员为提升网络准确率而不断改进的方向。更大的深度意味着更大数目的参数量,会带来更大的资源耗损和训练过拟合等问题。解决上述两个问题的一个简单方式是引入稀疏性,用稀疏的全连接层替换一般的全连接层,或者是在卷积的内部使用稀疏,然而现在的运算基础架构在处理非均匀稀疏结构的数值时效率低下,并且非均匀的稀疏模型需要更加复杂的工程和计算基础架构。所以Inception[14]采用了相应的方法来实现密集成分近似最优的局部稀疏结构。Inception扩充了模型的宽度,主要方法是采用多个卷积和池化对输入信息进行表征,然后再拼接起来作为输出,这样的方法相比单独一个卷积可以对输入进行更好地表征。不同目标尺度不一样,有的在图像中占据的位置较多,有的占据的位置较少,如果只使用单一的卷积核进行卷积操作,就会使得某些目标出现漏检的现象。毕竟大目标适合用大的卷积核进行检测,小目标适合用小的卷积核进行检测。为了防止漏检现象,采用多个尺度的卷积核进行卷积,网络越深,提取的特征越抽象,语义信息越丰富。同时采用多尺度卷积核并联可以提取不同尺度的特征,分别代表不同的局部特征,提取到的信息更加丰富。为了降低网络运算量,Inception采用1×1卷积来缩减通道数,具体做法为:在每个3×3和5×5的卷积层前,加上1×1的卷积层,在减少运算量的同时,还为网络引入了非线性,进一步增加了网络的表达能力。这种计算方式的改善,使得在不增加计算量的同时,拓宽每一层的宽度,同时可以加深网络深度。Inception结构如图2所示。
图2 Inception网络结构
本文在学习以上网络基础上,为了避免在检测过程中出现的漏检和误检现象,提升网络识别精度,提出基于多尺度特征融合的水果图像识别算法,与以前所提出的算法不同,不是仅仅通过增加网络深度来提升识别精度,而是在借鉴以上网络优势的基础上,采用ResNet-50作为骨干网络,多个尺度并行提取水果图像特征,在增加网络深度的同时也拓宽网络的宽度,从而进一步提高网络的识别精度。
如图3所示,本文提出的网络结构主要由骨干网络层、多尺度卷积层和分类层构成。采用残差卷积神经网络ResNet-50作为骨干网络,它前面有一个7×7卷积层(名为conv1),后面是四个残差block(名为conv2x到conv5x),每个block包含3、4、6、3个残差单元。将ResNet-50作为骨干网络,并对其做以下修改:去掉ResNet-50的第四个残差block后的全连接层和平均池化层。给定输入图像时,骨干网络将产生2 048个通道的特征图。将由骨干网络输出的原始特征图经过三个3×3的卷积核进一步进行特征提取,每一个卷积层后通过批量归一化函数BN使数据归一化,并采用ReLU作为激活函数,增加网络非线性表达能力。在多尺度卷积层,采用两个分支分别进行3×3和5×5的多尺度卷积,以提取语义信息更加丰富的全局信息和局部信息。每个分支首先通过1×1的卷积核进行空间维度的降维,减小后续运算量。两个分支联合优化既能优势互补,又能防止本文所提出的模型在训练过程中信息丢失。最后将两条支路提取的特征信息通过通道进行拼接,拼接起来的特征信息更有利于水果图像识别分类。在分类层,因为全连接层中的偏置项会影响网络的分类结果,故把全连接层中的全部偏置项都去除,并设置使全连接层输出一维数据个数为34,采取Softmax层实现最后的水果图像识别分类。
图3 模型结构
Softmax多用于利用深度学习进行分类识别的过程,它将一个具有k维的向量映射到(0,1)区间,从而转化为概率的形式。通过比较概率的大小,从而来进行多分类。同时其计算过程简单,对类间间隔优化效果显著。但是少数情况下会出现同一类间的距离大于不同类间的距离,致使Softmax函数判断错误。针对此问题,采用在Softmax层前增加BN层,对Softmax层所有输入进行归一化处理,同时根据文献[15]研究表明,去掉偏置项,使得特征点映射到单位超球面上,可以从方向上区分不同类。不同类位于单位超球表面的不同区域,在训练过程中,同一类的输出映射到表面上会慢慢地向中心点聚集,不同类的中心点会慢慢地分散开来,从而控制了不同类之间的距离,这将有助于提高识别效果。Softmax损失函数定义为:
其中,n为批量的大小;C为类别数量;f(bi)∈Rd表示第i个样本的深度特征,其真实类别为yi,特征信息维度为d;W为该层的权重。
本实验基于python进行编程,所有实验是在Windows10系统,PC的内存为8 GB,CPU主频为2.59 GHz的电脑上完成。采用TensorFlow搭建本文提出的多尺度卷积神经网络模型。在将训练集中的数据投入模型训练之前,通过程序随机选取训练集中20%的图片作为验证集。同时为了加快通过梯度下降法更新网络参数的速度,又能确保网络获得最优值,这里选用小批量梯度下降法,训练集中的所有图片都是分批投入模型用于训练,批量大小为32,学习率为0.01,采用Adam优化网络。
实验采用Fruits-360作为数据集,在其基础上开展算法设计。Fruits-360是专门用于基于深度学习的水果识别算法研究工作的数据集,如图4所示,整个数据集由训练集和测试集组成,每部分都包含103类不同的水果,每类水果具有不同拍摄角度的图片,可以从不同角度反映水果特征,本文从中选取34类水果进行实验。由于数据集中存在水果数据分布不均衡的现象,为了使网络学习到更好的特征,提高最后的识别效率,对样本进行多种预处理:(1)首先对数据集中部分水果图像通过镜像翻转、角度旋转等操作进行数据扩充,使数据集中的各类水果图像数量相近,经过数据扩充之后,训练集与测试集的比例为3∶1,训练数据为53 177,测试数据为17 845;(2)为了降低网络计算量,提高训练和识别速率,将样本大小调为100×100,同时将RGB图像进行灰度化处理转换为灰度图像,灰度化后的样本数据如图5所示。
图4 实验数据
图5 数据灰度化
为了验证所提方法的有效性,在fruits-360数据集上进行多组对比实验,并对实验结果进行分析。对比实验结果如表1所示。将Resnet-50作为 Baseline(骨干网络),分别对Baseline、Base⁃line+3×3Conv、Baseline+5×5 Conv以及 Baseline+3×3 Conv+5×5 Conv(两个尺度并行)进行实验,其中除Baseline单独进行实验外,其余均在Baseline后拓宽网络宽度,采用两个并行的支路分别对由Baseline产生的原始特征进一步特征提取,以提取语义更加丰富的信息。由表1可知,Base⁃line+3×3Conv+5×5 Conv 两个 不同 尺 度并 行组 合实现的效果最好,准确率高达99.4%。与上述三组实验相比,最后一组采用不同尺度组合的卷积核识别精度提升了将近2%,说明在原始特征相同的情况下,不同尺度的卷积核相互组合可以在深层网络中提取到更加丰富的语义信息,可以进一步提升网络识别精度。部分测试实验结果如图6所示,可以看出同类水果在不同拍摄角度以及不同类水果外表相似度较高的情况下仍能以100%的准确度识别。充分证明了本文设计的多尺度的卷积神经网络能有效缩短类内间距,扩大类间间距,具有出色的性能表现。
表1 对比实验结果
图6 实验效果
直观的观察模型在整个训练过程中识别精度和损失值的变化情况,可以更好地改进模型。当模型训练完成之后对其训练日志进行解析,得到模型的识别精度和损失曲线分别如图7和图8所示。实验总的训练迭代次数为2 000次,由训练集和验证集的准确率(accuracy)、损失率(loss)随迭代步数的增加变化曲线(截取了前120次)可知,随着迭代次数增加,训练集的准确率局部虽然有所起伏,但总体处于一个不断上升的趋势。验证集准确率变化和训练集准确率变化相似;同时训练集和验证集的损失率随着迭代次数的增加也在不断降低,最后趋近于0。说明本文提出的多尺度卷积神经网络结构在没有发生过拟合和欠拟合的现象下,模型收敛效果良好。当训练迭代次数到达150次时,准确率和损失率基本趋于稳定,但仍然存在微小浮动。随着训练迭代次数递增,浮动程度逐渐微弱。并且训练集和验证集最终分别得到的accuracy为99.96%和99.99%,loss值都趋于0。这充分证明所提出的多尺度卷积神经网络结构用于水果种类识别上的有效性。
图7 精度变化曲线
图8 误差变化曲线
模型训练完成之后,采用测试集数据进一步检测模型准确性,随机选取测试集数据输入模型,检测模型准确性,测试集混淆矩阵如图9所示,横坐标代表真实类别,纵坐标代表预测类别。只有当该点的横坐标和纵坐标一致时(即混淆方阵对角线上的点),则说明分类正确;反之,分类错误。由此可知,本文所提出的卷积神经网络结构是有效的。为了避免水果名称在坐标轴一侧拥挤重叠,采用数字(1,2,3,...,34)来代替相应水果类别名称,每类水果具体识别准确度如图10所示。经过计算,本文所提出的网络模型达到了99.4%的准确度。
图9 测试的混淆矩阵
图10 测试时各类水果识别准确度
为了比较本文所提水果图像识别算法与现阶段主流最优算法在性能上的差异,表2给出了几种具有代表性的水果识别方法的对比结果。
表2 实验方法对比
经过与上述四种典型的水果识别方法进行对比,本文的多尺度卷积神经网络识别精度最高。分析原因,主要在于本文在避免发生过拟合和梯度消失的情况下,采用在加深网络深度的同时适当拓宽网络的宽度。增加网络深度将会使模型提取到信息更加丰富的特征,适当增加网络宽度,采用多尺度卷积核并行卷积,可以提取更全面的信息,既有全局的整体信息,又有局部的详细特征。两者相结合使模型可以更有效地对水果图像进行特征提取,从而即使Resnet-50提取出来的原始特征存在部分信息丢失,经过多尺度卷积之后进行特征信息融合,可有效解决漏检和误检,提高识别准确率。
以深度学习为基础,结合图像预处理方法,研究了基于多尺度卷积神经网络的水果识别算法。首先针对样本数据不均衡现象,对样本数据进行扩充,避免模型训练过程中出现欠拟合和过拟合现象,影响模型性能;其次对扩充后的样本数据进行预处理,提高样本数据的质量,方便模型在训练过程中可以提取到更好的特征;最后通过搭建好的多尺度卷积神经网络进行训练,从而得到最佳的水果图像识别模型。通过实验证明,本文所提算法可以快速准确地进行水果图形识别,优于其他主流算法,可为果园智能水果采摘提供帮助。