杨 森,冯 全,*,张建华,王关平,张 鹏,闫红强
(1.甘肃农业大学机电工程学院,甘肃 兰州 730070;2.中国农业科学院农业信息研究所,北京 100081)
马铃薯是我国重要的农作物之一,马铃薯的外部品质直接影响产品的经济效益,同时也是制约马铃薯包装、贮藏和深加工的主要因素[1]。现阶段马铃薯的品质分级主要采用人工检测方式,该类方法具劳动强度大、效率低、成本高和一致性差等缺点[2-3],阻碍了马铃薯产业的规模化发展。图像信息直观反映了马铃薯外部特征,利用机器视觉技术能够实施马铃薯外部品质的快速、无损检测[4-6],且在马铃薯收获后的在线分级方面有较大的应用价值。目前对于马铃薯的分级研究主要集中在外部缺陷与薯形检测方面,汤全武等[7]结合高光谱技术与图像处理技术,利用主成分分析和小波变换法提取马铃薯外部缺陷特征,正确率达到94.20%;苏文浩等[8]运用高光谱图像技术检测7 种类型马铃薯缺陷,对选取的5 个特征波进行主成分分析法和图像差值算法,缺陷的正确识别率达到96.43%;郭红艳等[9]采用偏最小二乘回归系数法对高光谱成像马铃薯提取特征,建立马铃薯环腐病的线性判别模型,识别准确率达到93.33%。李小昱等[10]提出一种基于高光谱图像与果蝇优化算法相结合的马铃薯轻微碰伤检测方法,模型识别的准确率为100%;Angel等[11]利用高光谱技术快速检测结痂的马铃薯,系统的分类准确率为97.1%;Trong等[12]结合高光谱技术与图像处理技术,通过计算剩余的生料部分面积与马铃薯总面积的比率,可以预测出马铃薯最佳蒸煮时间。Dai Fen等[13]利用近红外拉曼光谱对3 类马铃薯品种进行识别,结果表明近红外拉曼光谱相比荧光光谱法具有较好的分类效果。以上方法都采用高光谱成像技术与图像处理结合进行检测,该类方法识别的准确率相对较高,但需要特定的图像光谱仪采集马铃薯图像,与机器视觉技术相比成本高,处理速度慢。此外,国内外学者利用机器视觉技术实现马铃薯的自动分级,Hassankhani等[14]利用阈值法分割出马铃薯目标,提取直径,面积和周长特征参数,建立大、中、小3 类马铃薯的分级模型。王红军等[15]利用机器视觉技术提取9 个马铃薯特征数据,结合主成分分析法和多元线性回归法,建立马铃薯质量与形状预测模型,分级准确率为86.7%。Razmjooy等[16]基于马铃薯颜色特征和支持向量机分类器,设计了一种马铃薯表面缺陷识别系统。Barnes等[17]利用自适应增强算法从分割区域自动提取最佳特征,准确检测出不同品种和不同新鲜程度的马铃薯斑点缺陷。
通过已有的分级方法分析,该类检测方法主要通过提取颜色、纹理、直径和形状等特征参数,利用特定的分类器训练出马铃薯分级模型,虽然取得了较好的效果,但实验多为单一类型缺陷的识别,且对特征相似的不同缺陷难以区分,具有适应性差的特点。轻量卷积神经网络相比传统的学习方法在特征提取方面具有更强的表达能力,MobileNet和ShuffleNet网络[18]在工业表面缺陷检测方面具有较好的效果,但在农产品缺陷分级检测方面研究相对较少。姚明海等[19]结合SSR-Net轻量级卷积神经网络与主动学习对工件4 类疵病进行识别,平均识别精度达到98.30%。陈俊松等[20]提出了一种基于改进YOLOv3的筷子毛刺缺陷检测方法,改进后网络能够同时提高检测速度和精度。刘洋[21]和Kamal[22]等利用轻量卷积网络MobileNet对38 类健康和患病植物缺陷进行识别,分类精度达到98.34%,参数比VGG网络降低29 倍,表明高精度和小尺寸的轻量卷积网络更适合于嵌入式设备的移植。针对马铃薯存在缺陷种类繁多和外形相似性高的问题,本实验利用轻量卷积网络自动提取马铃薯特征信息,通过迁移学习的方法训练出分级检测模型,以期完成马铃薯外部缺陷的快速和准确检测。
图1 不同背景下马铃薯外部缺陷示例Fig.1 Examples of potato external defects in different backgrounds
马铃薯样本采购于甘肃兰州市蔬菜批发市场,挑选绿皮、发芽、机械损伤、腐烂4 类主要缺陷及合格马铃薯组成外部缺陷样本集。部分缺陷样本直接在市场上收集困难,将合格马铃薯通过黑色食品袋包装,并在潮湿环境下放置1 个月,获得绿皮、发芽和腐烂的马铃薯。马铃薯样本采集的硬件设备为型号Cannon EOS1200D的数字相机,分辨率1 080像素×720像素,并在实验台上方安装4 个LED灯,保持拍摄的所有的数据集光照条件一致。为增加马铃薯外部缺陷检测网络的适用范围,实验中设置不同背景对马铃薯图像进行采集,消除背景对模型的干扰。实验中利用三脚架固定工业相机,设置相机距离马铃薯的高度为60 cm,且拍摄角度垂直于样本,相机参数调节为近拍模式、自动白平衡和固定的相机焦距,拍摄时通过相机的蓝牙功能控制图像采集,保证所有的拍摄样本位置一致。由于深度学习需要具备大量的样本集,采集实验同时拍摄马铃薯样本的俯视图、左视图和右视图,将马铃薯各类样本集扩展3 倍。图1所示马铃薯外部缺陷的不同状态。
卷积神经网络的搭建是深度学习的关键技术,VGG-Net、ResNet网络[23-24]在分类识别中取得了较好的效果,但该类网络基本思路都是通过卷积堆积的方式重复进行卷积和池化操作,利用加深网络的深度提取丰富的图像特征信息,使得网络模型参数规模巨大,训练的模型占用较大内存,模型移植到马铃薯在线分级嵌入式设备运行效率较低。Xception卷积网络是一种高效率的新型轻量级卷积形式,利用可分离卷积网络模块代替Inception网络模块[25],对空间信息和通道信息完全解耦,进一步减少网络模型参数,适应于嵌入式设备的应用。Xception网络的结构[26-27]结合了深度可分离卷积与ResNet网络的思想,主要由输入流、中间流和输出流3 部分构成,具体结构如图2所示。基于Xception网络的马铃薯分级检测步骤如下:
1)对输入的299×299×3的马铃薯图像通过2 次卷积操作产生64 个特征图谱。
2)基于可分离卷积层对输入特征图的每个通道单独进行3×3卷积运算,利用1×1的卷积运算遍历所有的特征图,并对特征图进行相加融合运算,经过重复可分离卷积操作获得深度为2 048的特征图。
3)对通道数为2 048的特征图转化为一维特征向量,将向量输入全连接层和逻辑回归层预测出图像类别的概率。
图2 Xception卷积网络结构Fig.2 Xception convolutional network structure
Xception卷积网络共32 层,若对模型的所有参数初始化进行重新训练,需要大量的样本才能使得模型收敛,而马铃薯缺陷样本数量相对较小。在本研究中,为了获得Xception网络模型最佳的识别效果,将ImageNet数据集训练的模型作为马铃薯外部缺陷预训练的初始模型,通过迁移学习[28-29]的方式训练缺陷模型,以缩短模型的训练时间,提高模型的泛化性。马铃薯外部缺陷的识别主要包括3 部分,数据集的预处理、马铃薯外部缺陷模型的训练和输出类别的判断。图3示出了马铃薯外部缺陷识别过程,具体流程如下:
1)利用缩放和旋转的方法对原始马铃薯缺陷数据集进行扩充,随机选取数据集70%的样本作为训练集,且将样本在输入网络之前统一固定尺寸299×299×3。
2)利用ImageNet数据集训练Xception网络,使得模型参数获得充分训练,删除模型1 000 类的Softmax层,形成Xception预训练模型。
3)重新设计出5 类缺陷标签的全连接层,并与Xception预训练模型组合,构建出马铃薯缺陷预训练模型。
4)利用马铃薯缺陷数据集训练模型,网络在训练过程中通过不断迭代的方式微调全连接层参数,若模型连续迭代11 轮次损失不降低,则训练将终止,输出马铃薯缺陷识别模型。
5)利用测试数据集验证识别模型对5 类样本的分级精度。
图3 马铃薯外部缺陷识别流程Fig.3 Process flow chart for potato external defect recognition
马铃薯外部缺陷模型的训练和测试均是基于Keras深度学习框架完成的。硬件环境CPU采用Inter®Xeon E5-2683V3,主频2.00 GHz,GPU采用NVIDIAteslaK20GPU,内存16 GB,显存5 GB。软件环境采用Ubuntu16.04,python3.65的编程环境。
在设计的实验环境下共采集马铃薯外部缺陷图像1 113 幅,其中发芽马铃薯221 幅,绿皮马铃薯184 幅,机械损伤马铃薯308 幅,腐烂马铃薯194 幅,完整马铃薯206 幅。从数据库5 类样本中随机选取60%的样本作为训练集,20%作为验证集,20%的作为测试集。实验的主要参数设置为:模型的训练和测试样本bach size设置32,学习率设置0.000 01,最大训练次数初始设置1 000 轮。为减小模型的过拟合,模型训练实际轮数设置早停模式,在训练过程不断保存精度最高的验证集模型,连续训练11 轮后验证集模型相比最佳模型精度不在提高,整个训练结束。
为衡量训练模型的识别精度,采用平均准确率[30]、查全率、查准率[31]和加权得分作为模型的评价指标,平均准确率计算公式为:
式中:Acc为平均准确率;n为缺陷类别数;Fi为单个类别识别准确率;Nc为预测正确的第i类样本数;Np为第i类样本总数。
查准率和查全率计算公式为:
式中:Pre为查准率;Prc为查全率;Tp为正确标记有该类缺陷的样本数量;Fp为错误标记有该类缺陷的样本数量;FN为错误标记非该类缺陷的样本数量。
结合每个类别的查准率Pre与查全率Prc,计算单个类别的加权得分S为:
2.4.1 学习率对模型性能的影响
学习率是网络模型在训练阶段需要设置的重要超参数,不同的学习率将影响目标函数的收敛速度,合理置模型的学习率使得目标函数能够收敛到局部最小值。实验基于Xception网络模型将学习率分别设置为0.01、0.001、0.000 1和0.000 01进行讨论。图4示出了模型迭代过程中4 种学习率下的训练准确率和损失值曲线变化。从曲线中可知,学习率为0.01时模型的准确率与损失值曲线波动幅度相对较大,且随着训练轮数的增加,损失函数值下降速度较为缓慢,无法趋于稳定。当学习率为0.001和0.000 1时,模型准确率曲线相比0.01时波动程度减小,但损失函数值在达到稳定后出现间断波动,不能达到较好的收敛效果。学习率设置为0.000 01时,训练准确率与损失函数值曲线的变化相对平滑,模型趋于稳定需要迭代的轮数相对较少,训练模型的性能取得较好的效果。为验证学习率取值对测试集识别准确率的影响。从表1可知,学习率设置为0.000 01时,验证集准确率为98.88%,模型训练结束后损失函数值为0.034 9,表明该学习率下网络模型整体性能最优,与图4分析的结果保持一致。此外,在学习率为0.000 01条件下,模型在测试集上5 种缺陷类别的平均准确率为96.37%,识别的准确性达到最高,在相同条件下模型平均准确率相比其他3 种学习率分别提高5.57%、4.94%和1.13%。为保证马铃薯外部缺陷识别模型获得最佳的识别效果,本实验中学习率取0.000 01完成模型的训练。
图4 不同学习率下模型的训练曲线Fig.4 Training curves of the model at different learning rates
表1 不同学习率下缺陷识别准确率Table 1 Accuracy of defect recognition under different learning rates
2.4.2 马铃薯外部缺陷数据集测试实验
为验证网络模型对不同缺陷的识别精度,利用测试集对5 类样本分别统计识别的查准率、查全率和加权得分,模型识别结果如表2所示。由表2可知,腐烂马铃薯查准率相比其他4 类缺陷最低,仅为90.79%,机械损伤马铃薯查全率也相对较低,仅为92.00%,表明机械损伤马铃薯容易误识别为腐烂马铃薯,主要原因是机械损伤面积较大的马铃薯风化后与腐烂马铃薯特征相似,且在损伤边缘存在腐烂,导致两者之间的错分率提高。合格和发芽马铃薯在5 类缺陷中加权得分获得更好的表现,分别为98.59%和98.55%,结果表明合格和发芽的马铃薯特征比其他3 类缺陷区分度更明显。总体来看,5 类马铃薯缺陷的加权得分均高于93%,本网络模型能够完成马铃薯缺陷的有效分级。
表2 模型的识别精度Table 2 Model recognition accuracy
2.4.3 不同网络模型对比实验
为验证本实验网络模型识别的有效性,在相同马铃薯数据集下与9 种不同规模网络模型的识别准确率进行比较实验。根据网络模型的复杂程度,将对比的9 种卷积网络划分为4 类,其中LeNet种网络为浅层简单网络,AlexNet、ZF-Net和TSL16为大型深度卷积网络,VGG16、ResNet50和ResNet152通过进一步加深网络深度提高模型的性能,而InceptionV3和MobileNet模型的准确度与深度模型相当,但模型的参数明显更少,运行速度更快。表3示出了马铃薯缺陷在不同网络模型中的识别准确率,本实验构建的轻量级网络模型识别的平均准确率为96.04%,识别效果优于轻量级网络MobileNet和InceptionV3,平均准确率分别高出14.7%和2.68%。对于LeNet网络只有2 个卷集层、2 个池化层和2 个全连接层组成,模型参数较少,但平均准确率为88.43%,识别效果相对较差。对于深度较深的ResNet152和ResNet50网络平均准确率为95.82%和92.16%,2 类网络模型的平均准确率均高于其他深度网络模型,表明适当加深网络深度能够提高网络模型的性能,但网络模型的参数和尺寸大幅度增加,计算效率下降。此外,ZF-Net网络平均准确率高于深层ResNet50网络1.99%,主要是由于小样本数据集训练深层次网络,模型不容易收敛,导致网络深度增加而准确率下降。
表3 不同网络模型的识别准确率Table 3 Recognition accuracy of different network models
在对比的9 种网络模型中,ResNet152网络对于马铃薯外部缺陷的识别效果较好,平均准确率仅低于本实验网络模型0.22%。在训练模型的尺寸方面,ResNet152模型尺寸257.8 MB,本实验模型尺寸89.6 MB,2 个模型之间尺寸相差较大,表明本实验模型占用内存空间较小,更适合移植到在线检测的嵌入式设备。在模型运行时间方面,ResNet152模型识别速度为1.7 幅/s,本实验网络模型的识别率为6.4 幅/s,模型运行速度是ResNet152模型的3.76 倍,表明本模型能够满足马铃薯外部缺陷在线分级的实时性。
本实验以腐烂、机械损伤、发芽、绿皮和合格的5 类马铃薯图像为例,基于Xception深度卷积网络重新设计出5 类标签的马铃薯预训练模型,再利用迁移学习的方法获得马铃薯外部缺陷识别模型。对模型性能进行对比实验,结果表明:
1)比较0.1、0.001、0.000 1和0.000 01不同学习率下训练模型的精度。采用学习率0.000 01训练模型,训练准确率为98.88%,损失函数值为0.034 9,外部缺陷识别平均准确率为96.37%,实验结果显示,该学习率下模型性能达到最优。
2)在测试集上对网络模型进行评估,腐烂马铃薯查准率和机械损伤马铃薯查全率相对较低,该模型对腐烂和机械损伤马铃薯两者之间容易误判。整体上,腐烂、机械损伤、绿皮、发芽和合格5 类马铃薯识别的加权得分分别为93.31%、95.28%、94.49%、98.55%和98.59%,结果表明本实验网络模型对马铃薯的外部缺陷识别取得了较好的效果。
3)利用相同的测试数据集与不同深度的9 类网络模型进行比较实验,本实验模型的识别平均准确率高达96.04%,相比识别效果较好的深度网络ResNet152和轻量级网络InceptionV3模型平均识别率提高0.22%和2.68%,且识别所需的时间较短。综合模型的平均准确率和运行速度指标,表明本实验建立的轻量级网络模型对马铃薯的外部识别效果优于其他9 种网络模型。
基于深度学习技术对马铃薯外部缺陷图像进行识别,具有准确率高、硬件成本低和运行速度快等特点,该技术将对实现马铃薯在线分级检测提供了可行性。