APP下载

基于网中网卷积神经网络的红枣缺陷检测

2020-04-13杨志锐郭中原许晓航

食品与机械 2020年2期
关键词:池化层亮度红枣

杨志锐 郑 宏 郭中原 许晓航

(武汉大学电子信息学院,湖北 武汉 430072)

红枣味道鲜美[1],具有极高的营养价值、食用价值和药用价值。而脱皮、裂口、虫害等缺陷会影响红枣的品质和价值[2]。目前红枣缺陷检测方法主要有:人工分级和基于机器视觉的分级方法。人工分级成本高、效率低、劳动强度大、精度差、易误检漏检等[3]。詹映[4]曾运用RGB和HIS模型提取红枣的红体均值、绿体均值、蓝体均值及均值方差,通过设置相应的阈值作为缺陷检测的方法。张萌等[5]针对红枣表面曲率变化导致其分布不均匀的特性,提出了使用单色CCD、滤光片和红外光源提取红枣近似图像,通过均值滤波器对去背景后的图像进行滤波获取亮度图像,并使用该亮度图像对去背景后的红枣图像进行亮度校正,提高了缺陷检测的实时性。这些方法利用图像处理和机器视觉技术来实现红枣的无损缺陷检测,需要根据枣的不同种类人工设计相应的特征提取器,步骤较为繁琐,且智能化程度不高。因此需要寻找高效、快速、准确、智能的红枣缺陷识别方案。

相较于传统的特征提取方法,卷积神经网络包含的卷积层具有更强大的特征学习和表征能力,并且具有自动学习特征[6]。Mohanty等[7]采用AlexNet成功实现了植物病害的检测;Wang等[8]通过训练卷积神经网络实现了对植物病害严重程度的自动和准确估计;Johannes等[9]使用改进的基于深度残差神经网络的算法进行了多种植物疾病的检测;Ferentinos[10]开发了卷积神经网络模型对健康和病害叶片的检测和诊断; Rangarajan等[11]使用Alexnet的预训练模型对番茄作物病害进行了有效分类。试验拟提出一种基于网中网(NIN-CNN)卷积神经网络的方法对红枣进行缺陷检测,利用含有隐藏层的MLP卷积层结构替换Alexnet中原有的单卷积层结构进行更加抽象复杂特征的提取,采用全局平均池化层替代原有的全连接层,以期在大大减少网络参数数量的同时实现更高准确率的红枣缺陷识别。

1 NIN-CNN网络模型

NIN-CNN卷积神经网络是一种基于AlexNet改进的卷积神经网络,在原有AlexNet卷积神经网络的基础上增加了1×1隐含感知层来增强网络的非线性,从而提取更抽象的特征;采用全局平均池化层替换全连接层,不仅可减少参数数量,还有利于提高检测准确率。

1.1 AlexNet卷积神经网络架构

如图1所示,AlexNet网络结构共有8层,其中包含5层卷积层和3层全连接层,在第1、2、5卷积层后添加了最大池化层来减少下一层输入的参数和计算量;全连接层对最后一层卷积层提取的特征进行加权,通过线性变换将特征空间映射到样本标记空间;在最后一个全连接层后接Softmax层进行分类。

1.2 基于AlexNet改进的NIN-CNN神经网络

Alexnet所采用的卷积滤波器属于广义线性模型,抽象程度较低,不利于高度抽象特征的提取;其全连接层参数量大,容易造成过拟合。针对以上缺陷,进行如下改进。

(1) 针对传统卷积层,通过堆加1×1大小的卷积层组成多层感知器(MLP)微型网络单元(又称网络中的网络,即NIN-CNN),使其提取特征的能力更强大。

(2) 用全局均值池化层替换全连接层,防止全连接产生的过拟合,并提高网络模型的泛化能力。

如图2所示,NIN-CNN模型由12个卷积层组成。网络的具体参数如表1所示。该网络在AlexNet网络的11×11,5×5,3×3卷积层后分别串联了两个1×1大小的卷积核,组成4个MLP结构,每个MLP结构之间采用类型为最大池化层,卷积核大小为3×3,步长为2的池化层进行连接采样,网络中的最后一个MLP结构之间采用类型为全局平均池化、卷积核大小为6×6、步长为1的全局均值池化层进行连接。

1.2.1 MLP卷积层 传统卷积层使用线性滤波器进行扫描输入,后接一个非线性激活函数,得到输出作为特征图。特征提取器由卷积层和空间池化层交替堆叠产生。按式(1)计算AlexNet特征图。

(1)

式中:

fa,b,m——AlexNet特征图;

xa,b——以(a,b)为中心的输入块;

图1 AlexNet网络结构示意

图2 NIN-CNN网络结构图

表1NIN-CNN网络参数

Table1TheparametersofNIN-CNNnetwork

层名称卷积核大小步长层名称卷积核大小步长卷积层111×111卷积层13×31级联跨信道参数池化层11×11级联跨信道参数池化层51×11级联跨信道参数池化层21×11级联跨信道参数池化层61×11最大池化层13×32最大池化层33×32卷积层25×51卷积层43×31级联跨信道参数池化层31×11级联跨信道参数池化层71×11级联跨信道参数池化层41×11级联跨信道参数池化层81×11最大池化层23×32全局最大池化层6×61

Wm——卷积参数。

当需要提取的特征较简单,是线性可分时,这种线性卷积足以用于提取抽象特征;当特征较为复杂,抽象度更高时,采用高度非线性函数进行抽象特征的提取。

根据CNN高层特征是底层特征通过某种运算的组合原理,NIN-CNN网络对传统的卷积层进行了改进:采用少量参数取得了超过AlexNet的性能,提出在每个局部感受野中增加更为复杂的运算,并引入基于感知机模型的卷积层。多层感知机作为一个深度模型,并按式(2)进行计算。

(2)

式中:

bm——第m层的偏置;

xa,b——以(a,b)为中心的输入块。

传统卷积层后串联两个大小为1×1并具有ReLU函数的卷积层即可组成MLP卷积层。改进的NIN-CNN网络使用的MLP卷积层实际上是由一个普通的卷积层和两个1×1卷积层构成,其中普通卷积层用来提取图像的局部特征,1×1卷积层增加了网络单元的非线性,有利于提取不同通道的特征图像。此外,NIN-CNN网络模型中的每个卷积层后都有一个Relu非线性层,增加了卷积层数量,使其具有更好的非线性决策函数的建模效果,提高了分类的准确率。

1.2.2 全局平均池化层 AlexNet网络的卷积层、池化层以及激活函数层将原始数据映射到隐层特征空间,最后一个卷积层得到的特征图被向量化后送入全连接层,全连接层将学到的“分布式特征表示”映射到样本标记空间,并连接归一化指数函数逻辑回归层进行分类。但全连接层因为参数数量太多,容易出现过拟合现象,阻碍网络的泛化能力。因此将dropout层用于正则化,在训练过程中将全连接层的一半激活值置0,改善了其泛化能力并在很大程度上预防了过拟合。

实际上,对最后一个卷积层输出的每个特征图进行全局均值池化,使每张特征图都可以得到一个输出,在大大减少参数量、减小网络的同时可避免过拟合;此外,每张特征图的输出特征可表示输出类的特征,通过增强特征图与类比间的对应关系使网络结构保留得更好。dropout层的引入造成了全连接层的参数量大大增加,模型复杂度高,泛化能力差,而NIN-CNN神经网络采用全局均值池化替代全连接层的策略使得dropout不复存在,并且达到了用更少的参数取得更准确分类效果的目的。

2 基于NIN-CNN的红枣缺陷检测

试验提出的基于NIN-CNN[12]的红枣缺陷检测流程包含网络模型的学习和网络模型的检测两大阶段,具体流程图如图3所示。

图3 NIN-CNN模型学习与检测流程图

2.1 网络模型的学习

首先要进行样本数据的增广得到不同亮度、角度的扩充数据样本;然后进行参数设置;最后利用预设参数的NIN-CNN模型对样本进行学习,直至得到最终的网络模型。

2.1.1 数据的增广 卷积神经网络对于数据量的要求比较高,首先对红枣进行数据增广以提高模型的泛化能力。自然图像的数据增广包括水平或垂直翻转、旋转、缩放、裁剪、平移、添加噪声、调整对比度和亮度等。红枣存在大小不均;在生产线上进行检测时,其摆放角度也是随机的;此外,红枣加工所处生产环境中存在各种图像噪声。综上,分别采用尺度统一化、水平及垂直翻转、旋转、高斯加噪的方法进行数据增广。

数据增广采用的是python数据增广库imgaug,具体步骤为:首先采用水平翻转、上下反转、镜像翻转改变红枣的空间位置。然后利用imgaug库中的函数进行高斯加噪模拟生产环境中的噪声,同时对空间进行明暗变换来模拟生产线上不同的光照。最后将红枣图像归一化到大小为256×256。试验中对空间的翻转、旋转、明暗变换以及空间加噪赋予一定的概率,每张样本图片可能随机地被翻转随机的度数,亮度随机增加或减少,随机加上噪声。此外,根据每类红枣的数量进行相应倍数的增广使其整体达到数据均衡,部分增广后的图片如图4所示。由图4可知,增广后的红枣在角度、光照强度等方面都发生了变化,大大提高了样本的数量和多样性。

图4 数据增广前后对比图片

2.1.2 网络的超参数设置 卷积神经网络超参数的选取与设置对训练结果有着至关重要的影响。其中学习率的选择决定学习算法的性能表现,学习率大,梯度下降比较快,可能会在某一步越过最优值;学习率小,学习速度慢,导致收敛速度慢,容易过拟合。试验采用从头训练的方式,学习率设置为0.010~0.001。此外,迭代次数也需通过选取比较进行确定,使用训练集的全部数据对模型进行一次完整训练为一次迭代,训练时设定的迭代次数为20~30。

2.2 基于NIN-CNN模型的红枣缺陷检测流程

由于生产线环境嘈杂、亮度不可控等,采集的图片存在亮度不均、噪声多、背景杂乱等不足。因此,采用NIN-CNN进行检测前需对红枣进行预处理,首先对红枣进行提取使其与背景分离,再进行图像增强以消除噪声,并使红枣表面亮度分布均匀,最后将图片输入NIN-CNN模型中进行预测,得到分类结果。

2.2.1 红枣的提取 如图5所示,红枣图像提取步骤分为红枣粗分割、红枣灰度化、图像二值化、二值化去噪、红枣分割。

(1) 红枣粗分割:首先对图片进行大致的分割,按比例将图片分为左半部分、中间部分和右半部分,分别提取左边红枣、中间红枣和右边红枣。

(2) 红枣灰度化:图片灰度化常见方法有最大值法、平均值法和加权平均法,试验采用加权平均法对红枣图像进行灰度化。加权平均法表示为:

图5 红枣提取步骤及图像增强前后对比图

Gray=(W×R+V×G+U×B)/3。

(3)

(3) 图像二值化:在进行加权平均时,已将红枣与背景进行了大致的分离。在进行二值化时,只需设置一个合适的阈值就可将红枣部分变为白色像素,背景变为黑色像素,根据多次试验经验,阈值设置为30。

(4) 二值化去噪:为了去除噪声,再次对图像进行最大轮廓的获取,将轮廓以外的部分图像像素变为0。

(5) 红枣分割:采用掩膜法,因为掩膜法在去除背景和噪声的同时,不会对关键区域进行破坏。由于红枣部分的灰度值明显高于背景部分的,因此将红枣灰度化后设置一个合适的阈值便可获得一个较好的掩膜。将掩膜作用于原始图片,进而成功提取红枣。

2.2.2 红枣图片的匀光处理 由于生产线环境为不可控因素,采集的红枣图片存在亮度分布不均匀现象[13]。此外,由于拍摄时间不同也可能造成红枣样本的整体亮度存在差异。为了增强深度学习的效果,图像增强第一步为亮度校正,其目的是消除红枣表面亮度分布不均匀的现象。

亮度校正算法采用的是基于照度—反射模型,图像亮度f(x,y)可表示为入射分量i(x,y)与反射分量r(x,y)的乘积。即

f(x,y)=i(x,y)×r(x,y)。

(4)

图像中变换缓慢的部分体现为入射分量,突变的部分体现为反射分量。根据该特性,将图像的低频部分从原始图像中提取出来,再经傅里叶反变换得到亮度图像,获得的亮度图像可对原始的分布不均匀的灰度图像进行亮度矫正。具体过程为在频域中进行中心变换,离散傅里叶变换,最后用低通量滤波器滤波,再进行傅里叶反变换,从而实现了在频域内处理图像,使图像亮度分布均匀[14]。图像增强后红枣表面光照分布更加均匀,高光照部分亮度略微降低。

3 结果与分析

试验针对新疆骏枣进行了实测,通过数据增广共采用41 467张红枣图片作为数据集,将红枣分为好枣、黑斑、黄皮、裂口、脱皮、皱枣和叠枣7类。按接近于6∶2∶2的比例划分训练集(25 129张)、验证集(8 424张)和测试集(7 914张)。将数据集中的每类红枣图片表示成一个一维向量,表征红枣的分类类别。训练前对红枣数据进行预处理,训练的每张图片的特征均要减去训练集所有图片的特征均值,将输入数据各个维度都中心化为0,从而减少计算量,避免数据过度变差,训练效果受到影响。表2为试验中不同种类红枣的训练集、验证集和测试集数量。

3.1 7类红枣分类标准

如图6所示,好枣由成熟的新疆骏枣进行晾晒后加工而成,表皮呈鲜红或紫红,无明显的脱皮、褶皱、霉烂。皱枣是由不成熟的红枣干制形成,果肉干瘪、表皮褶皱较多。脱皮枣是在红枣制造过程中由于鸟啄、虫蛀等导致红枣表皮脱落,内部果肉外漏。黄皮枣由于树龄短、种植技术不规范导致红枣表皮整体颜色泛黄。烂枣是指红枣受到微生物侵害,果肉变质或者霉变导致表皮呈现黑色霉烂区域。裂口枣是由于果枣生产过程中受到机器损伤导致表面存在较长的裂口。叠枣是因为在生产线中,由于机械的翻转、红枣的放置等导致相机抓取图像时视野中存在两个或两个以上的红枣。

表2 7类红枣数量

3.2 准确率计算

机器学习中常用的评价指标为准确率,即评估捕获的成果中目标成果所占的比例,试验中的准确率指预测正确的数量占总量的比重,并按式(5)计算准确率。

图6 红枣分类图

(5)

式中:

R——准确率,%;

TP——正类预测为正类的数量;

FN——正类预测为负类的数量;

FP——负类预测为正类的数量;

TN——负类预测为负类的数量。

3.3 NIN-CNN网络参数的设置

根据2.1.2中超参数设置的原则,将求解器类型设置为随机梯度下降,学习率策略设置为Step,每10个迭代次数降低为原来的1/10,记忆因子设置为0.9,分别选择迭代次数为20,25,30,学习率为0.010,0.001,将训练后得到的模型采用验证集进行预测,得到不同初始速率、迭代次数下的准确率,如表3所示。

由表3可知,NIN-CNN网络在学习率为0.010时的准确率高于学习率为0.001时的,其中迭代次数为30时的准确率最高,因此最终确定NIN-CNN网络的超参数为迭代次数30,学习率0.010。AlexNet网络在学习率为0.001 时的准确率高于学习率为0.010时的,其中迭代次数为20时的准确率最高,因此最终确定Alexnet网络的超参数为迭代次数30,学习率0.001。

3.4 试验比较与检测性能评估

3.4.1 不同网络参数总量的比较 将两个网络的参数性能进行比较可知,NIN-CNN在添加1×1卷积层加深网络深度的同时减少了大卷积核的数量,从而减少了参数数量;另一方面,采用局部均值池化代替全连接层极大地减少了参数量,同时防止了过拟合。AlexNet网络的参数数量为56 896 903,而NIN-CNN网络的参数数量为6 577 351,减少了88.44%。

3.4.2 数据增广对检测性能的影响 由表4可知,增广后,AlexNet网络的准确率提高了1.14%,NIN-CNN网络的准确率提高了1.05%,验证了数据增广对网络模型准确率提升的有效性。

表3 不同迭代次数和学习率下NIN-CNN和AlexNet网络的准确率

表4 数据增广前后准确率的比较

3.4.3 检测性能比较 试验引入了目前常用的基于SVM的机器视觉方法进行比较[15-16],采用手工设计规则提取红枣特征,然后将7类不同特征组合成特征向量输入SVM中进行分类,最后使用验证集对模型进行测试。由表5可知,SVM方法的好枣识别准确率最高,但其他6类缺陷红枣的准确率均低于NIN-CNN和AlexNet网络;AlexNet网络的黑斑、黄皮、裂口红枣识别准确率高于NIN-CNN网络的,但好枣、脱皮、皱枣、叠枣红枣识别的准确率低于NIN-CNN网络的。相对于SVM方法,NIN-CNN网络在红枣缺陷识别方面表现出极大的优越性[18];NIN-CNN网络的缺陷识别准确率比Alexnet模型的高1%左右,证明试验采用1×1卷积核加深网络,全局均值池化方式替代全连接层来提升缺陷识别准确率是有效的。

表5 不同方法检测准确率的比较

4 结论

针对红枣的缺陷特征,提出一种基于AlexNet卷积神经网络对红枣进行分类的方法,并进行验证实验,利用改进的网络NIN-CNN对红枣进行分类。结果表明,基于AlexNet网络的红枣识别准确率为93.81%,基于NIN-CNN网络的红枣识别准确率为94.79%,验证了NIN-CNN网络相对于AlexNet网络的优越性。试验提出的基于NIN-CNN卷积神经网络的分类方法对裂枣和黑斑枣的识别准确率还不够理想,后续可考虑引入残差网络等结构对试验方法进一步改进。

猜你喜欢

池化层亮度红枣
用于遥感影像亮度均衡的亮度补偿方法
卷积神经网络模型研究分析*
远不止DCI色域,轻量级机身中更蕴含强悍的亮度表现 光峰(Appptronics)C800
一颗大红枣
基于卷积神经网络的纸币分类与点钞
基于深度学习卷积神经网络的人体行为识别研究
我爱家乡的红枣
亮度调色多面手
基于全卷积神经网络的SAR图像目标分类*
亮度一样吗?