基于多尺度卷积神经网络的缺陷红枣检测方法
2021-03-10赵凤霞楚松峰吴振华
方 双 赵凤霞 楚松峰 吴振华
(郑州大学机械与动力工程学院,河南 郑州 450001)
红枣在生长、成熟、收获和存放过程中,会产生黄皮、霉变、破头等缺陷[1],这些缺陷降低了红枣的品质,因此深加工前需要进行缺陷枣的识别和筛选。目前主要依靠人工筛选红枣,劳动强度大、主观性强,而且费时、费力、效率低下[2]。为此,学者们对缺陷红枣的检测进行了深入研究,并取得了较大的进展。海潮等[3]根据红枣的表面缺陷特征提出基于Blob分析的红枣表面缺陷识别方法,该方法对缺陷枣的识别率达到90%以上,但是对黑斑枣的识别率较低且速度也较慢。詹映等[4]对南疆红枣颜色分级进行研究,提取预处理图片的红体均值、绿体均值和蓝体均值及其均方差,再将图片从RGB转换到HIS颜色空间,提取色度均值、亮度均值和饱和度均值及其均方差,利用提取的12个特征变量结合BP神经网络对南疆骏枣和灰枣的外部品质进行了定量化分级研究。苏军等[5]提出了基于GA优化SVM的干制红枣识别方法,但是该方法存在对霉变枣分类效果不明显的问题。以上基于传统机器学习的红枣缺陷识别方法主要依据经验,易受样本和人为主观性的影响,需要针对不同的分类情况精心设计特征,这需要耗费大量的时间和精力[6],且设计的特征很难具有普适性,鲁棒性差。
卷积神经网络(convolutional neural network,CNN)可以有效地克服上述弊端,其对图像的空间不变形具有良好的适应性,其强大的自主学习能力可以自动提取并学习图像中的特征信息,无需额外的监督训练[6-7]。近年来已被逐渐应用于人脸识别[8]、目标检测[9]和图像识别[10-11]等领域。将卷积神经网络用于缺陷红枣识别的研究也陆续展开。曾窕俊等[12]提出一种基于帧间最短路径搜索的目标定位方法和集成卷积神经网络模型对视频图像中的虫蚀枣、霉变枣、裂痕枣、黑头枣进行定位和检测,分类准确率达到98.45%。文怀兴等[13]提出了一种基于深度残差网络对红枣表面缺陷以及纹理识别的分类算法,对正常枣、霉变枣和破皮枣进行分类,其分类准确率达到96.11%。以上方法只针对常见的缺陷红枣进行了研究,但是对黄皮枣的研究较少。杨志锐等[14]提出一种基于网中网的卷积神经网络对红枣进行检测,对图片进行背景分离、消除噪声、匀光处理等数据预处理操作,使其总体准确率达到94.79%,对于黄皮枣的识别准确率为95.56%,但操作复杂且模型性能还有一定的提升空间。
黄皮枣制干后呈黄色,肉质不坚实、口感差,但其外观特征和颜色特征与正常红枣相似,且颜色特征受光照的影响比较大,增大了识别的难度。为了提高缺陷红枣的识别率,拟提出一种基于AlexNet[15]的多尺度卷积神经网络缺陷红枣识别方法,利用多尺度卷积模块提取多尺度的红枣特征信息;在卷积层中加入批标准化处理以减少训练过程中数据分布的变化,提高网络的泛化能力,避免过拟合。
1 研究对象
1.1 试验材料
试验研究对象是新疆干制红枣,图1为在生产环境下采集的红枣检测的部分图像,将图像进行分割、去背景操作之后,得到红枣数据集,数据集中包括4类红枣,分别为黄皮枣、霉变枣、破头枣和正常枣,如图2所示。对所采集到的图像进行特征分类和人工标记,并对所采集的红枣图像样本进行随机旋转、随机剪切、水平翻转和垂直翻转等数据增强处理共得到2 800张红枣图片,并将所有图片均匀混合,然后按照7∶2∶1的比例划分为训练集、验证集和测试集,即训练集图片1 960张,验证集图片560张、测试集280张。
图1 生产环境下红枣检测的部分图像
图2 训练集红枣图像示例
1.2 数据预处理
在进行训练之前,对图像进行必要的预处理可以增强样本数据,从而提高模型的性能。文中进行的预处理操作包括:
(1) 统一图片大小为227×227,作为模型的输入。
(2) 样本数据归一化:将图片格式数据转换为RGB三通道的矩阵向量,并将图像像素值从[0,255]映射到[0,1],以避免数据经激活函数处理时神经元进入“死区”,导致神经元失活,可以加速卷积神经网络的收敛速度。
(3) 样本数据标准化:对图像进行均值和方差的均衡处理,使得图片数据更加符合数据分布的规律,提高训练模型的泛化效果。
2 多尺度卷积神经网络模型
多尺度卷积神经网络模型是一种基于AlexNet改进的神经网络模型,将传统AlexNet模型中的部分卷积层替换为多尺度卷积模块,从而有效地提取红枣的多尺度特征;引入批量归一化层减少训练过程中数据分布的变化,提高网络的泛化能力。
2.1 传统的AlexNet模型结构
传统的AlexNet模型结构如图3所示,主要包括5个卷积层、2个池化层和2个全连接层以及一个输出层。卷积层用于提取目标不同层次的特征;池化层对特征进行压缩,降低分辨率,进而减少冗余特征;全连接层对最后一层卷积层提取到的特征进行加权,通过线性变换将特征空间映射到样本标记空间;并在最后的输出层用softmax对目标进行分类。
2.2 基于AlexNet的多尺度卷积神经网络模型
AlexNet模型采用传统的卷积滤波器,参数众多且卷积计算量很大,不利于模型充分学习数据的特征,采用多尺度卷积模块不仅可以大大减少模型中的参数,还可以在增加模型深度和宽度的同时充分学习和利用红枣的特征信息,从而提高模型的识别准确率;模型训练过程中参数一直不断地更新,会引起各网络层输出数据的分布随之发生变化,不利于提高模型的泛化性,从而影响模型对红枣的识别效果。针对上述问题,引入多尺度卷积模块和批量归一化层对AlexNet模型进行改进。
2.2.1 多尺度卷积模块 构建多尺度卷积模块如图4所示。该模块中有4个支路,每个支路对输入特征进行卷积操作提取特征之后,再进行特征融合操作,作为下一个模块的输入;每个支路中有不同大小的滤波器,这样可以增加网络对尺度的适应性,有利于提取多尺度的特征信息,在增加网络宽度的同时也增加了网络的深度;每条支路中都包括1×1卷积,主要用于压缩提取特征的维度,减少模型中的参数,同时添加非线性函数,有助于网络提取抽象的特征。
图3 传统的AlexNet模型结构示意图
2.2.2 批量归一化层 在模型进行卷积操作时加入批量标准化(Batch Normalization,BN)层,该过程可以保证网络容量、加快网络的训练速度并提高网络泛化能力,减少训练过程中参数更新引起的各层数据分布发生变化对模型的影响。批量归一化[16]过程如下,首先计算每个批次中m个样本x1~xm的均值和方差:
(1)
(2)
式中:
μ——批次的均值;
σ——批次的方差。
将数据进行归一化:
(3)
图4 多尺度卷积模块
式中:
β——防止方差σ为0时分式不成立而设置的常量。
(4)
βi=E[xi],
(5)
yi=γixi+βi,
(6)
式中:
γi、βi——通过训练得到的重构参数。
Var[xi]、E[xi]、yi——样本xi的方差、均值、标签。
2.2.3 多尺度卷积神经网络模型 引入多尺度卷积模块和批量归一化层后,基于AlexNet的多尺度卷积神经网络如图5所示。该网络在AlexNet模型中引入了5个BN层,将后面4个传统的卷积层替换为多尺度卷积模块,并在前2个多尺度卷积模块之后添加了池化层压缩图片的特征。4个多尺度卷积模块的参数如表1所示。
2.2.4 传统卷积层和多尺度卷积模块的参数和计算量对比 为了便于将传统卷积层和多尺度卷积模块进行对比,设置传统AlexNet模型和多尺度卷积神经网络模型的具体参数如表2所示。
按式(7)、(8)分别计算出AlexNet模型中各卷积层参数量、计算量和多尺度卷积神经网络中各多尺度卷积模块的参数量、计算量,并将对应的卷积层和多尺度卷积模块的参数量和计算量进行对比,其计算结果如表3所示。
(7)
(8)
式中:
A——参数量;
B——计算量;
n——卷积层数;
ki——尺寸为i×i的卷积核;
图5 多尺度卷积神经网络结构示意图
表1 模型中4个多尺度卷积模块的参数†
表2 传统的AlexNet模型和多尺度卷积神经网络模型的网络参数
表3 传统卷积层和多尺度卷积模块的参数和计算量对比
cl-1、cl——第l个卷积层的输入通道数和输出通道数;
Hl-1、Wl——第l个卷积层输入特征的高度和宽度。
由计算结果可知,卷积层2的参数量和计算量分别是多尺度卷积模块1的15.19倍和16.00倍,卷积层3的参数量和计算量均是多尺度卷积模块2的7.14倍,卷积层4、卷积层5的参数量和计算量分别是多尺度卷积模块3、多尺度卷积模块4的8.58倍和10.15倍。鉴于卷积运算中加法运算与乘法运算的次数近似相等,因此在此处仅计算出乘法运算的计算量,并进行对比,其比值与卷积运算中加法运算和乘法运算相加的比值近似相等。由表3 可知,设计的多尺度卷积模块可以大大减少模型中的参数和计算量,加快模型的训练速度。
3 试验与分析
为了验证多尺度卷积神经网络在缺陷红枣分类上的有效性,将提出的算法与浅层网络LeNet[17]、深层网络VGG16[18]和经典AlexNet网络进行对比。模型的训练和测试环境是Anaconda 4.8.5平台、运行内存为64 GB、NVIDIA GeForce RTX 2080 Ti显卡GPU、并行CUDA[19]编程平台,keras深度学习框架和python3.7.7编程语言。在模型训练过程中将训练集和验证集分为多个批次,综合考虑计算机的硬件环境,在试验过程中利用keras框架中的生成器函数[20],设置batch_size为64,通过数据流的形式,从训练样本中每次提取64个样本参与训练,采用Adam优化器,并设置初始学习率为0.001,训练总轮数为500次。
3.1 模型训练与测试
为了验证不同网络架构对缺陷红枣分类的影响和文中提出算法的有效性,将红枣数据集分别统一大小为32×32、227×227、224×224的尺寸,并分别将LeNet模型、AlexNet模型和VGG16模型在数据集上进行训练。4个模型在训练集和测试集上的准确率和损失函数如图6、7所示。
由图6可知,浅层网络LeNet模型的学习较缓慢,经近500轮迭代才达到收敛,且在学习过程中波动较大。而深层网络VGG16模型、AlexNet模型和多尺度卷积神经网络模型的训练过程都能够快速地收敛,在训练集上表现良好,其中AlexNet模型和多尺度卷积神经网络模型的训练过程相对平稳。
由图7可知,浅层网络LeNet模型在验证集上的表现随着迭代次数的增加逐渐变好,但整体表现不如其他3个模型,而且其波动较大。VGG16模型的验证准确率和验证损失函数在前80轮迭代中分别迅速上升和下降,但是随着迭代的进行,验证准确率有降低的趋势并收敛到91.8%,验证损失也有逐渐上升的趋势,这是因为VGG16出现了在验证集上出现过的过拟合现象。AlexNet模型和多尺度卷积神经网络在验证集上均表现良好,在前100轮迭代中,AlexNet模型的验证准确率高于多尺度卷积神经网络模型,但是在后面的迭代中,多尺度卷积神经网络模型的验证准确率收敛到97.4%,AlexNet模型的验证准确率收敛到95.4%,且多尺度卷积神经网络模型的验证损失函数远小于AlexNet模型的验证损失。
综上可知,LeNet模型学习缓慢且波动大主要是因为其结构过于简单,学习效率低,需要更多的迭代来充分学习图像中的特征;VGG16模型虽然学习很快,但是出现了过拟合,这主要是因为VGG16模型参数众多,比较复杂,图片数据集有限,模型得不到充分地训练,使得其泛化性能较差;AlexNet模型和多尺度卷积神经网络模型在训练集和验证集上都可以快速收敛,并且未出现过拟合现象,后者的收敛速度虽然稍慢,但其验证集收敛准确率与前者相比提高了2%,且验证损失远小于前者。完成500轮训练,AlexNet模型和多尺度卷积神经网络分别耗时0.924 h和0.483 h,多尺度卷积神经网络训练时间相对减少了40.13%,与2.2.4部分传统卷积层和多尺度卷积模块的对比结果相一致。说明所构建的多尺度卷积神经网络模型减少了大量的参数,可以缩短模型的训练时间,且与AlexNet模型相比,其性能得到了明显的提升。
图6 模型的训练准确率和训练损失函数对比图
图7 模型的验证准确率和验证损失函数对比图
3.2 模型验证
为了验证多尺度卷积神经网络模型的泛化性,用其对测试集中的280张图片分别进行识别,结果如表5所示。
表5 多尺度卷积神经网络模型在测试集的识别结果
由表5可知,多尺度卷积神经网络模型在测试集上的平均识别准确率为97.14%。与文献[12]中提出的基于深度残差网络对红枣表面缺陷分类的准确率(96.11%)相比,识别精度更高。
4 结束语
提出了一种基于多尺度卷积神经网络的缺陷红枣识别方法,并对黄皮枣、霉变枣、破头枣和正常枣进行了检验。与LeNet模型、VGG16模型相比,提出的方法可以充分学习红枣图片中的特征信息,且未出现过拟合现象;与AlexNet模型进行对比,训练时间减少了40.13%,验证准确率提高2%,说明多尺度卷积模块能够大大减少卷积运算中的参数,加速模型的训练,并提高了模型的准确率,其平均识别率达到了97.14%,而且对黄皮枣也有较高的识别率。
试验提出的多尺度卷积神经网络还存在优化的空间,后续可考虑制作包含更多缺陷红枣的较大数据集,结合更先进、高效的网络模块对其作进一步改进。