APP下载

基于卷积神经网络的橘子分类识别研究

2020-07-09李琳芳王建军魏征冯向荣安金梁

关键词:池化橘子卷积

李琳芳,王建军,魏征,冯向荣,安金梁

(1.河南科技学院信息工程学院,河南新乡453003;2.河南科技学院新科学院,河南新乡453003)

我国现有的水果检测分类方法主要有人工检测和机械检测[1].人工检测耗费人力、效率低下、分类不够客观准确;机械检测容易对水果造成机械损伤,影响水果品质.采用机器视觉的图像处理技术可以消除这些弊端,实现水果的高效无损自动检测及分类.国内外许多学者对基于机器视觉的图像处理技术在水果缺陷检测及分类方面的应用进行了大量研究,并取得了较大进展[2-3].Aleixos等[4]应用贝叶斯决策理论实时对柑橘类水果表面进行多光谱检测;费尔南多等[5]基于颜色和纹理特征实现对柑橘类水果表面的缺陷诊断;López-García等[6]采用多变量图像分析法和主成分分析法实现柑橘类水果表面的缺陷检测.

传统图像分类主要包含特征提取和分类器设计两大步骤,但有两个突出的缺点[7]:一是需要人工设计特征,人工设计特征往往靠设计者的先验知识,具有很大的盲目性,此外,考虑到手工调参数,特征设计时只允许出现少量参数;二是分类器结构简单,可能无法将复杂的特征映射到最终识别结果.近年来,随着标记数据和算力的提升,针对卷积神经网络的研究被广泛应用于图像处理领域[8-11],它很好地克服了传统图像分类的缺点.卷积神经网络可以从大数据中自动学习特征的表示,对特征有很强大的表征能力,不仅避免了人工提取特征的繁琐,而且网络学习的特征比人工设计的特征具有更强的泛化性能.卷积神经网络的特征提取器和分类器是串联在一起的,训练一个卷积神经网络就同时训练了特征提取器和分类器.本文基于卷积神经网络设计了一个橘子检测分类模型.

1 数据集构建

当前,没有现成开源的数据集,自建了橘子数据集,主要包含数据采集、数据标注、数据划分3个步骤.

(1)数据采集.通过两种方式获取橘子数据集:一种是利用智能手机在不同光照、不同背景、不同场景下拍摄橘子图像;另一种是利用Python爬虫自动搜集互联网上的橘子图像.由于卷积神经网络是基于大数据下的特征学习,通常数据集越大,提取到的特征越多,训练得到的网络模型越好;如果数据集不充分,训练的模型容易发生欠拟合或过拟合.本文采取对获取的数据进行60°旋转、90°旋转、120°旋转、180°旋转的方式扩充数据集.为了方便卷积神经网络对数据的读入,对所有数据集格式进行统一化处理,将其尺寸统一固定为长为64、宽为64、水平分辨率为96、垂直分辨率为96.

(2)数据标注.整个数据集有2 000张图片,根据橘子表皮的色泽和亮度、表面是否有霉斑和黑斑、橘子本身是否完整等,以人工标注的方式,将橘子分为合格品和不合格品.其中合格品为1 000张,不合格品为1 000张.图1、图2分别给出了橘子的部分合格品样本图片与不合格品样本图片.

图1 部分合格品橘子Fig.1 Partial qualified oranges

图2 部分不合格品橘子Fig.2 Partial unqualified oranges

(3)数据划分.采用有监督学习的方式训练网络模型时,为了得到泛化能力强、效果佳的网络模型,一般会按照8∶2的比例将数据集划分为训练集和测试集.随机选取800张合格品橘子图片和800张不合格品橘子图片作为训练集,剩余200张合格品橘子图片和200张不合格品橘子图片作为测试集.

2 分类模型设计

2.1 卷积神经网络基本结构

卷积神经网络是一种多层前馈神经网络,该网络具备优异的特征自学习能力、强大的并行处理能力以及良好的容错能力.卷积神经网络的基本结构如图3所示,主要由输入层、卷积层、池化层、全连接层、输出层5部分构成,每一层都是由若干个包含独立神经元的二维平面组成.

(1)输入层:用于输入图像,输入图像的大小要统一.

(2)卷积层:卷积核在待提取特征的图像上,按照一定步长,依次扫描进行线性卷积运算,再加一个偏置,通过激活函数得到提取的特征图.通过引入非线性激活函数,使得网络可以表达非线性模型,增强了网络的表达能力.

(3)池化层:池化也称为下采样,主要用于特征降维,压缩数据和参数的数量,在一定程度上可以减小过拟合,提高模型的容错性.

(4)全连接层:将卷积和池化之后提取的特征图中的特征进行整合,映射成一个固定长度的特征向量,以便交给最后的分类器层.

(5)输出层:输出层一般为分类器层,最后输出的是一个把制定分类的类目数作为维度的概率向量.

图3 卷积神经网络基本结构Fig.3 Basic structureof convolutional neural network

2.2 橘子分类网络模型设计

设计的卷积神经网络模型如图4所示,由1个输入层、3个卷积层、3个池化层、1个全连接层和1个Softmax输出层组成.

图4 设计的卷积神经网络模型Fig.4 Convolutional neural network model designed

把64×64×3的RGB图像输入网络,64×64指图像的宽度×高度,3指图像的R、G、B三个色彩通道,在卷积层Conv1层设计了32个5×5×3的卷积核,5×5指卷积核的宽度×高度,3指卷积核的深度,对应图像的R、G、B三个色彩通道,卷积核遍历图像进行卷积运算后得到32个60×60的二维特征图,然后通过ReLU激活函数进行计算,ReLU激活函数具有实现简单、收敛快速的特点.卷积层的计算公式如式(1)所示

式(1)中:I表示输入矩阵,W表示卷积核,b表示偏置,f(·)表示激活函数.

已有研究表明,在图像特征提取方面,最大池化效果优于平均池化,设计的网络结构池化层均采用最大池化操作.下采样层Pool1层采用32个2×2的最大池化滤波器,池化步长为2,池化运算后得到32个30×30的二维特征图.池化层的计算公式如式(2)所示

式(2)中:down表示池化操作.

在卷积层Conv2层使用64个5×5×3的卷积核,计算过程类似于Conv1层,经过卷积运算后得到64个26×26的二维特征图,下采样层Pool2层采用64个2×2的最大池化滤波器,经过池化运算,得到64个13×13的二维特征图,保留主要特征的同时进一步实现了降维,减少了后续层中参数的数量.

经过Conv1层和Conv2层之后已经提取了大部分特征,考虑到自建的样本数目不是很大,在Conv3层使用128个3×3×3的卷积核,小卷积核虽然感知野小了,但不会影响训练精度,而且减少了网络训练参数.下采样层Pool3层采用128个2×2的最大池化滤波器,经过池化运算,得到128个6×6的二维特征图.

全连接层FC层将Pool3层产生的二维特征图转变为一维特征数据,利用Softmax逻辑回归对特征进行分类.Softmax函数计算公式如式(3)所示

式(3)中:Ii为所有输入组合中的第i个输入,K为输入神经元个数.通过Softmax函数,输出值就映射到了[0,1]范围的值,Softmax分类是根据概率值大小进行的分类.

3 实验与结果分析

3.1 实验环境

实验环境为64位的Win10系统,计算机的CPU为Intel(R)Core(TM)i5-6600K,CPU的主频为3.5GHz,内存为16 GB.模型训练是利用Anaconda下基于Python语言的Spyder编译工具,采用Keras深度学习框架.

3.2 网络训练

设计的网络模型训练过程如图5所示.将橘子图片数据集作为输入分批量提供给网络,经过卷积神经网络模型后提取分类特征,利用Softmax分类器进行分类,根据预测的橘子品类和实际的橘子品类计算损失函数,通过小批量梯度下降法,利用反向传播调整网络参数,不断减小损失直至网络收敛.

图5 网络训练过程Fig.5 Network trainingprocess

为了提高网络收敛速度,对输入网络的橘子图像进行像素值的去均值归一化处理.去均值归一化处理的计算公式为

式(4)中:I表示输入图像任意一点的像素值,μ表示输入图像的像素均值.

利用均方误差作为网络训练的损失函数.损失函数计算公式为

式(5)中:C为分类的类别数,表示训练集中第k个样本第j维所对应的期望值,表示第k个样本第j维所对应的实际输出.

3.3 实验结果分析

训练过程中设定批处理的批尺寸为64,初始学习率为0.000 1,迭代步数为30步,训练集包含1 600个正样本和1 600个负样本,测试集包含400个正样本和400个负样本,训练集的精度和测试集的精度分别如图6和7所示.

图6 训练集精度Fig.6 Accuracy of thetrainingset

图7 测试集精度Fig.7 Accuracy of the test set

由图6可以看出,训练集的精度呈上升趋势,经过一段时间的训练后,精度保持在98%以上,由此可知训练模型是比较成功的.利用测试集对训练模型进行测试,由图7可以看出,测试集的精度基本都在94%以上,某些时刻的精度比较低,可能是个别样本引起的,对运行结果中测试集的精度进行均值计算,整个测试集的平均精度为94.34%.整个测试集的平均精度明显低于训练集的平均精度99.38%,主要是因为训练的样本和测试的样本数量有限导致.

表 1给出了本文算法和现有检测分类算法 PCA+KSVM[12]、PCA+FSCAB[13]、FREE+BPNN[14]、FREE+IHGA[15]的精度对比情况,由于本文算法与其他分类算法的数据集不完全相同,因此分类精度是在分类的平均精度上进行比较,对比发现本文算法具有更优的分类性能.

表1 不同算法平均精度比较Tab.1 Comparison of theaverageaccuracy of different algorithms

4 小结

本文设计了基于卷积神经网络的橘子分类识别模型,并对网络模型进行了训练.模型在足够的样本学习之后,可以自动获取样本特征,与传统分类模型相比,具有更高的速度、更强的泛化性能和更好的识别效果.在训练样本和测试样本有限的情况下,模型准确率达到了94.34%,验证了模型的准确性和可靠性.

猜你喜欢

池化橘子卷积
基于高斯函数的池化算法
卷积神经网络中的自适应加权池化
基于3D-Winograd的快速卷积算法设计及FPGA实现
橘子分公母,母橘子更甜?
橘子沉浮记
漂浮的橘子
卷积神经网络的分析与设计
从滤波器理解卷积
基于卷积神经网络和池化算法的表情识别研究
用于手写汉字识别的文本分割方法