何进荣 石延新 刘 斌 何东健
(1.延安大学数学与计算机科学学院, 延安 716000; 2.农业农村部农业物联网重点实验室, 陕西杨凌 712100;3.陕西省农业信息感知与智能服务重点实验室, 陕西杨凌 712100)
苹果分级分选是苹果产业后整理的关键环节,通过苹果分级包装、分级贮藏、分级定价和销售,可解决苹果优质不优价的难题,进而延伸产业链、提升价值链,促进苹果产业转型升级,让果农在苹果全产业链上获益。早期国内普遍采用人工分级,人工分级方法劳动强度大、效率低,且受主观影响[1]。随着计算机技术及其在相关领域的发展,越来越多的学者将计算机视觉技术应用于农产品无损检测中,计算机视觉技术具有精度高、效率高、无需接触等优点,已成为水果无损检测的主要方法[2-4]。
现有的苹果外部品质分级方法有基于苹果单一外部特征的方法,如颜色、大小、形状、纹理和可视化缺陷等,也有基于深度学习的苹果外观品质分级方法。廖崴等[5]建立了绿色苹果随机森林识别模型,对绿色苹果辨识准确率达到了90%。李蕙蕙等[6]对苹果表面纹理进行研究,探索纹理与甜度的相关性。赵娟等[7]对苹果图像进行提取与分割,采用计算机视觉技术提取苹果缺陷并与人工辨识结果进行比较,其缺陷检测准确率达到了92.5%。李龙等[8]通过纹理和梯度特征对苹果伤痕进行识别,80个样本的正确率为95%。这些手工提取苹果单一外部特征的方法,其分级准确率有限,无法全面客观地对苹果外部品质进行直观评价。薛勇等[9]利用GoogLeNet深度迁移模型对苹果缺陷进行检测,对测试样本的识别准确率为91.91%。王丹丹等[10]提出基于区域的全卷积网络的苹果目标识别方法,识别准确率为95.1%。张力超等[11]将改进后的LeNet-5用于苹果种类识别,准确率可达93.7%。武星等[12]使用YOLO v3模型对苹果进行检测,平均精度为94.69%。
为提升苹果无损分级方法的准确率和稳定性,本文提出一种基于深度学习的延安苹果分级方法。提取传统卷积神经网络的卷积块作为苹果图像的特征提取器,对学习到的特征图分别进行全局最大池化和全局平均池化,将池化后的2个一维向量进行拼接,并输入以全连接层为主的分类器进行分类。
试验材料为陕西省延安市2019年11月本地产的富士苹果,在白天光照充足的环境下使用小米8手机自带相机拍摄苹果图像,摄像头为索尼IMX363型(1 200万像素),在延安市超市及周边果园地区各拍摄3 000幅,拍摄部位包含苹果顶部、侧面以及底面。保证数据来源多样且分布区域广,符合真实场景,共采集15 000个苹果,得到15 000幅图像作为初始数据集,根据表1中的各项指标[13]将采集到的苹果图像分为A、B、C、D、E共5级,每级包含3 000幅图像。采集到的数据集存在大量噪声干扰,包含苹果位于图像的边缘位置、图像中有其他物体干扰或1幅图像中有多个苹果。对图像中占比最大的苹果进行级别标注。苹果图像在采集时受到背景、光照等因素影响,对苹果外观分级产生一定的干扰。
表1 苹果分级标准
15 000幅原始苹果图像的30%作为测试样本、20%作为验证样本评价模型训练状况,其余7 500幅图像经数据增强后得到15 000幅图像作为训练集,每个数据集中各级别图像数量相同。
试验平台由计算机硬件和开发平台两部分组成。计算机配置为英特尔酷睿I7-8750H CPU,16 GB内存,GTX1060显卡。开发平台为Windows 10操作系统上的Keras深度学习框架,编程语言为Python。
对采集到的延安苹果图像进行数据预处理,预处理完成后的图像数据输入到特征提取器中进行学习,使用分类器对学习到的特征图进行分类并得到分级结果。采用验证集上的分级准确率曲线、损失函数值曲线以及测试集上的分级准确率和F1作为模型性能的度量标准。
1.2.1数据预处理
深度学习属于监督学习的范畴,相比传统计算机视觉方法,可通过数据驱动使模型自动学习特征,省去人工寻找特征的步骤,深度网络通过数据学习到表达能力更强的特征。因此需要大量样本训练神经网络模型,故对现有图像进行数据增强成为模型训练中较为关键的一步[14]。扩充数据集可以提高模型的泛化能力,降低过拟合的风险。数据增强采用传统数字图像处理方法,具体步骤为:对现有图像在70°角范围内旋转、垂直和水平移动20%、放缩80%~120%、垂直和水平翻转和沿逆时针方向旋转20°剪切变换,所有增强方法均以相同的概率随机进行。将增强完的数据进行规范化得到224像素×224像素的输入图像,对5个级别的苹果同时进行数据增强保证输入数据保持不变。每一轮数据读入显存时,框架会生成32幅增强后的图像,共64幅图像进行当前轮的训练,确保参与训练的图像总数为15 000幅。部分增强后的图像如图1所示,由图1可知,完成数据增强后,苹果的大小和角度等方面发生了明显变化。本文采用基于像素几何变换的图像数据增强方法,在扩充图像数量的同时,提升深度学习模型的鲁棒性。首先,几何变换不会改变图像内容,从而保持了图像场景的真实性;其次,图像样本个数的增多可防止深度学习模型过拟合,剪切、旋转等几何变换使得模型对图像拍摄角度具有一定的不变性。因此,这种基于像素几何变换的图像数据增强方法并不是单纯以复制的形式增加样本个数,而是增加了图像数据空间的抽样覆盖度,对提升模型的准确率具有重要意义。
1.2.2单模型
首先对VGG16[15]、ResNet50[16]、Inception_V3[17]、DenseNet121[18]、Xception[19]共5种经典卷积神经网络进行比较。
图像特征可以根据复杂度和表示能力粗略地分为高、中、低3种,一般越复杂的特征有越强的表征能力。在深度网络中,各个特征经过线性、非线性的综合计算,越深的网络能够输出表示能力越强的特征。VGG16的出现引发了卷积神经网络深度的大幅增加。VGG16采用5个卷积块提取图像特征,卷积后使用池化层降低参数量并与下一个卷积块连接。最后使用全连接层加激活层进行分类,网络结构如图2所示。
ResNet解决了VGG16中深度增加带来的梯度消失和网络退化的问题。随着层数的增多,在网络中反向传播的梯度会随着连乘变得不稳定。其次,随着深度的增加,网络性能下降,深度网络反向梯度较难传导。ResNet50解决了这两个问题,ResNet的思想是恒等映射即注重学习残差而非误差。残差模块如图3所示。
Inception_V3丰富了VGG16中卷积块的功能,主要以高和宽逐渐减小为主,输出特征图的深度随着网络层数的增加而增加。减小高和宽有助于减小计算量,而特征图深度的增加则使每层输出的可用特征数量增多。Inception_V3引入Inception模块,采用了分支结构。采用多尺度的卷积核并将大卷积核分解为多个小卷积核,使用了卷积池化并行结构,最终的拼接可使不同尺度特征融合。Inception模块如图4所示。
DenseNet121是在ResNet的基础上实现密集连接机制。构建每层到其他层的连接,即每层都会接受前面所有层输出的特征图作为其输入,并且其输出的特征图是后续所有卷积层的输入。DenseNet121相比传统卷积神经网络需要更少的参数,达到特征重用的效果。在参数效率更高的同时,通过提升网络的信息流动和梯度使训练神经网络更加容易,密集连接具有一定的正则化效果,缓解了模型过拟合并减少了特征冗余。Dense模块结构如图5所示。
Xception是基于Inception_V3并将Inception模块进行简化提出的深度可分离卷积方法。首先对每个通道独立进行跨空间的卷积,接着使用跨通道的1×1卷积来映射跨通道的关系,大量1×1卷积核可以减少参数量。修改后的Inception模块如图6所示。
1.2.3多卷积神经网络融合
DXNet模型由数据预处理、特征提取器和分类器3部分组成。采用2个卷积块提取图像特征,将网络学习到的特征图进行汇总,即将2个特征张量按照维度进行拼接,拼接得到的一维向量输入分类器进行分类后输出结果。DXNet模型图像分级过程如图7所示。
利用数据增强方法对图像数据进行增强,并输入到DenseNet121模型和Xception模型中。采用2个网络的卷积层对苹果图像进行学习,将训练后得到的1 024×7×7特征图和2 048×7×7特征图分别进行全局平均池化和全局最大池化替代传统的全连接方式。全局平均池化将最后一个卷积层输出的每幅特征图进行全局的均值池化,即计算所有像素点的平均值。形成一个特征点后将这些特征点组成最后的特征向量,全局最大池化则计算每幅特征图中所有像素点的最大值。故1 024幅特征图和2 048幅特征图池化后可分别得到1 024、2 048个数据点,数据点连接后可分别得到长度为1 024和2 048的一维特征向量。全局平均池化可以使参数量大幅下降[20],减小网络规模的同时降低特征提取中邻域大小受限造成的估计值方差偏大的问题。
特征提取完成后,2个特征向量输入到分类器中。Concatenate层作为分类器的顶部,可产生特征联合的效果。将两个卷积特征网络提取到的特征信息进行融合,图像自身的特征增加了,而每一特征下的信息未增加,即根据向量的维度将2个一维特征向量拼接,拼接后得到长度为3 072的一维向量,并将此向量输入到第1个全连接层中。第1个全连接层的节点个数设置为1 024个,并且激活函数采用ReLU。ReLU可使网络产生一定的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生[21]。此全连接层采用L2正则化,进一步增加参数的稀疏性进而降低模型过拟合的风险。
然后连接一个批归一化层,批归一化层在每个批次上将前一层的激活值重新标准化,即确保前面全连接层输出的结果标准差接近1,平均值接近0,在深度神经网络训练过程中使得每层神经网络的输入尽可能保持相同的分布。可以避免梯度消失的问题,加快模型的训练速度,提高模型的泛化能力[22]。
将归一化全连接层参数输入到包含5个节点的全连接层,设置Softmax函数为多分类任务的激活函数,输出每个类别对应的分级结果。Softmax函数的计算公式为
(1)
式中si——图像为第i个级别的概率
ei——图像为第i个级别的上层函数值
j——级别数
将测试集输入到训练好的融合模型中进行分级。为确保测试集图像的可信度,测试集不再进行数据增强,只将需要分级的图像进行归一化,将像素值调整为0~1内的浮点数,即模型引入了非线性元素,加快神经网络的推理速度。分级后得到的最终结果与单一模型得到的最终结果进行比较并进行分析。DXNet网络结构如图8所示。
融合多种卷积网络模型来提升识别准确率和稳定性的优势包括:
(1)不同于传统模型采用全局最大池化或传统全连接方式,DXNet的全局平均池化操作针对输入的空间变化可表现出较强的鲁棒性,可有效解决数据集中出现的各类噪声问题。同时DXNet包含全局最大池化,可以较好地保留纹理特征从而提升分级精度。
(2)多个不同尺寸的卷积核可以根据苹果尺寸提取不同尺度的特征,并且适当增加卷积核个数可使神经网络提取到更底层的纹理特征,从而提升分类精度。
(3)多个模型可提升网络整体的稳定性,针对不同的输入也可保持较好的性能。
1.2.4损失函数
选择交叉熵损失函数作为模型的损失函数进行优化求解。交叉熵用来评估当前训练得到的概率分布与真实分布的差异情况,越小越好。交叉熵损失函数计算公式为
(2)
式中Loss——交叉熵损失函数
yj——真实等级
aj——Softmax函数值
1.2.5模型评价指标
使用模型在验证集和测试集上的分级准确率(Accuracy)和损失函数值(Loss)作为评价模型训练情况的指标。记录模型在各类别上的F1值,来衡量模型的精确度,F1值同时兼顾了分类模型的精确率和召回率,是精确率和召回率的一种调和平均[23]。由于试验为五分类试验,将五分类的评价拆分成5个二分类的评价,依次将每个类别看作是正类,其余类别看作是负类,于是可以在每个类别上计算F1值,5个F1值的平均值作为所有类的F1值,用于评价模型在各类别上的分类性能。
2.1.1超参数选取
批尺寸设置为32,即每一轮迭代输入32幅图像,取批尺寸为2的幂能够充分利用显卡的并行计算能力,若设置为64或128等较大数值,会导致模型收敛到最优解时间过长且效率低;若设置为8或16等较小数值,则训练过程曲线会产生振荡波动。为保证验证集和测试集数据的真实性,验证集和测试集数据不进行数据增强,只对训练集进行数据增强。学习率作为监督学习和深度学习中重要的超参数,决定损失函数能否收敛到最小值以及何时收敛到最小值。合适的学习率能够使损失函数在合适的时间内收敛到最小值。模型优化中学习率设置为0.001,编译器设置为RMSprop,其采用加权平均方式计算梯度,避免某一方向梯度下降过快或过慢即减弱摆动幅度过大的现象,同时自适应学习率,接近最优解时衰减学习率。试验进行50轮迭代。RMSprop的计算方法为
∑Δw=β∑Δw+(1-β)Δ2w
(3)
式中β——衰减系数 Δw——梯度
2.1.2验证集试验结果
试验为单变量试验,使用完全一致的数据集和完全一致的超参数在同样的环境下运行。模型训练完成后对验证集和测试集的图像进行分级,对比不同模型的最终结果。
随着迭代次数的增大,各模型的分级准确率整体呈上升趋势。在迭代30轮之后,除VGG16外均保持在90%以上且不再发生显著变化。DXNet具有较好的性能,准确率曲线在迭代过程中表现稳定。各模型准确率曲线如图9所示。随着迭代次数的增大,各模型在验证集上的损失函数值整体呈下降趋势。DenseNet121随着迭代次数的增加,损失值曲线产生振荡波动。而DXNet自第5轮起,损失值不再发生明显变化,维持在较低值的同时表现稳定,未发生明显过拟合情况。各模型损失值曲线如图10所示。
2.1.3测试集试验结果
通过模型在测试集上的表现来证明模型的泛化能力与鲁棒性,试验中使用预先划分好的测试集对模型进行评估。DXNet的准确率为97.84%,损失值为0.055 9,准确率高出其他模型的同时具有较低的损失值,结果较好,表现出了较好的泛化能力与较强的鲁棒性。测试集试验结果如表2所示。
表2 不同模型在测试集上的试验结果
各模型在5个类别苹果图像上的F1值如表3所示。融合模型在每个类别的分级中都表现较好,达到了较高的F1值,表明DXNet的精确度和召回率都较高。
表3 各模型在5个类别苹果图像上的F1值
网络需要优化的参数量与网络深度是影响网络整体效率的主要因素。通过对比各模型需要优化的参数、网络拓扑结构中的层数、模型迭代一轮需要的时间以及测试集完成分级需要的时间,比较融合模型与经典卷积神经网络的效率。DXNet需要优化的参数以及网络层数较多。训练一轮的时间较长,这是由于参数在2个卷积块之间传递导致的。但DXNet完成测试集分级时间与其他表现较好的模型相比仍在可接受范围内,时间控制在两位数,效果较好且满足实际需求。DenseNet121效率高于DXNet,但DenseNet121的精确率低于DXNet,且易产生震荡,鲁棒性较差。各模型效率对比如表4所示。
表4 各模型效率对比
针对富士苹果后处理中的外部品质分级问题,本文综合考虑影响苹果外部品质的多种指标,提出基于深度学习的苹果外观分级方法,该方法可提取出更加底层的纹理特征,且稳定性及准确率均有显著提升,端到端的建模策略可融入人工评分的先验知识,显著提高了苹果外部品质分级精度。在对比分析经典卷积神经网络模型结构基础上,提取网络结构中的有效模块进行组合设计,对经典卷积神经网络模型进行改进。试验结果表明,DXNet在测试集上的准确率达到97.84%,分级效果较好,且鲁棒性强,满足智能选果生产线的应用需求。