基于改进ShuffleNet V2网络的核桃破壳物料壳仁分类识别方法

2023-09-15 09:16张超宇王应彪王周梅李九峰刘梦迪
江苏农业学报 2023年4期
关键词:破壳核桃卷积

张超宇, 王应彪, 颜 旭, 王周梅, 李九峰, 刘梦迪, 周 丹

(西南林业大学机械与交通学院,云南 昆明 650224)

云南是中国第一大核桃生产基地,也是世界深纹核桃的原产地。目前,云南核桃加工技术相对落后,不仅加工率低,同时初加工占比高、加工工艺落后[1-2]。除了缺少能实现规模化生产加工的采收机、脱青皮机以及核桃破壳机以外,核桃破壳后壳仁物料的高效无损分类检测也是云南核桃产业升级,加工效益进阶的关键技术缺口。

计算机视觉的发展为农产品的无损检测提供了一条新方法,国内外学者已经开展了初步研究,并取得了较好的成效。早期的研究以传统机器学习方法为主。如刘星星等[3]提出的基于OpenCV的葡萄干色泽识别方法,识别效率得到了极大提高;李颀等[4]采用HSV颜色模型和CLBP(完全局部二值模式) 提取玉米种穗的颜色和纹理特征,利用 SVM(支持向量机) 实现 4 种异常玉米种穗的分类。但传统机器学习方法存在对图像拍摄环境要求高,复杂环境特征提取难度大、预测正确率低和鲁棒性差等问题,导致研究成果很难落地。随着深度学习和图形处理器(GPU)并行处理技术的飞速发展,基于卷积神经网络(CNN)的图像识别方法表现出更大的优越性。甘雨等[5]基于改进的EfficientNet网络在大规模作物害虫数据集IP102上进行训练与评估,作物害虫识别准确率达到69.45%,保持轻量计算的前提下获得了优于同类其他网络的识别准确率;Koklu等[6]基于VGG16与迁移学习对土耳其常见的5种水稻种子进行分类识别,准确率达到99.90%;Subeesh等[7]利用深度学习方法进行甜椒田的杂草识别,准确率达到97.70%;牛学德等[8]基于Densenet网络及迁移学习方法实现了番茄叶片的分类,测试准确率达到97.76%。

目前有关核桃破壳加工后物料识别分类的研究已得到初步开展。李文宝等[9]基于VGG16网络实现了山核桃破壳物料分类识别,准确率达到99.50%;赵腾飞等[10]利用卷积神经网络算法模型进行核桃仁分级,经过OpenVINO工具套件优化算法后,识别准确率达到99.44%,推理时间也大大缩短。上述模型虽在核桃破壳物料的识别中取得较高的准确率,但模型参数多、计算量大、识别时间长,导致识别效率较低。ShuffleNet网络模型是旷世科技提出的轻量化卷积神经网络模型,通过引入深度可分离网络以及通道划分与通道重组技术,牺牲部分准确率使得模型计算量大幅度降低,预测速度提高。李好等[11]将改进的ShuffleNet V2应用于农作物病害识别,实现了26种农作物常见病害的快速识别;张旭等[12]将改进的ShuffleNet V2部署在Android 移动端对4类苹果叶部病害图像进行识别,移动端单张图像的平均推理时间达到39.38 ms。但是ShuffleNet V2等轻量化网络模型为了达到快速识别的目的,或多或少牺牲了准确率,如何提升准确率,使得模型在精度和速度上达到平衡,是轻量级CNN设计需要解决的关键问题。此外,不同数据集具有不同特点,在应用图像分类时往往需要针对数据集特点进行相应的算法优化,以实现最优的识别效果。

针对云南深纹核桃的特点以及破壳物料深加工的需求,本研究对ShuffleNet V2模型进行改进,实现其对核桃破壳后壳仁物料轻量化识别分类,以期实现核桃破壳物料的快速无损检测,为进一步的核桃破壳物料快速无损检测设备研发提供支撑。

1 材料与方法

1.1 图像采集、数据增强与数据集划分

三台核桃是闻名全国的深纹优良核桃品种,本研究以三台核桃破壳后的壳仁物料作为研究对象,将破壳风选后的核桃仁按照完整度和品质[13]分为半仁、大三角仁、四分仁、碎仁和霉变仁5类进行识别,考虑到当前风选设备无法实现绝对的壳仁分离,故增加包括核桃壳和隔膜在内的壳类共6个类别进行识别分类。

为了增加图像来源的多样性以及尽量减少光照环境对训练结果的影响,本研究采用2种拍摄方式进行图像数据采集:第一种是由工业相机大恒MER-051-120GC搭建的立体暗箱,如图1所示,采用分体式发光二极管(LED)环形灯作为光源,将镜头、光源以及镜头与物料之间的距离固定,保证所采集样本拍照环境的一致性,所采集图像的分辨率为808(水平方向)×608(垂直方向);第二种则是通过手机Redmi K40在随机光源环境下拍照得到样本数据,同一批拍摄的数据焦距一致。随机光源环境包括随机自然光和随机环形光源补光,所有数据采集底色均为黑色。由于物料正反两面差异较大,部分数据进行正反两面拍摄以模拟传送带上物料的空间状态。不同类别的壳仁物料图像如图2所示。数据集共获得原始图像980张,其中工业相机拍摄420张,手机拍摄560张。

A、B、C、D、E、F分别为工业相机拍摄的核桃破壳物料壳仁样本;a、b、c、d、e、f分别为手机拍摄的核桃破壳物料壳仁样本。图2 不同类别的破壳物料图像Fig.2 Images of different kinds of shell-breaking materials

为提高所训练模型的泛化能力和鲁棒性,通过对原始数据进行数据增强来丰富数据集和模拟由于天气、光照环境、拍照角度甚至镜头不清晰等因素影响下的成像状态。本研究采用的数据增强方法包括有监督的旋转(65°和25°)、亮度变换(亮度增强和亮度减弱)、增加对比度、添加高斯噪声和高斯模糊处理等。数据增强后的图像如图3所示。经过数据增强得到最终的云南深纹核桃破壳物料数据集共7 840张,每类图像均在1 300张左右。本研究按照7∶2∶1的比例随机将数据集划分为训练集、验证集和测试集,其中训练集用于模型训练,验证集用来调整参数优化模型,测试集用于模型评估。

图3 部分数据增强示例Fig.3 Data enhancement examples

1.2 ShuffleNet V2模型

1.2.1 深度可分离卷积 深度可分离卷积由深度卷积(DWconv)和逐点卷积(PWconv)组成,其中深度卷积通过将卷积核个数设置为输入通道数,使得每个卷积核只负责1个特征通道的卷积计算,逐点卷积通过卷积运算将深度卷积后不同通道上的特征进行加权组合生成新的特征图,深度可分离卷积的实现过程如图4所示。深度可分离卷积的使用可以大大减少计算量[14],如果使用得当可以在获得相同识别精度的同时使模型更加轻量化,因此深度可分离卷积被广泛应用于轻量化网络的设计。

1.2.2 通道混洗 通道混洗方法(Channel Shuffle)是ShuffleNet系列网络最重要的成果之一[15-16]。由图5可知分组卷积的直接堆叠会导致单个通道的输出只能来自输入通道的一部分,使得卷积过程对信息的表示能力被降低,添加通道混洗操作可以使不同组之间的特征得到交流。通道混洗的实现过程如图6,经过纬度重置(Latitudere shape)和特征转置(Transpose)等一系列操作使输出的通道特征被重新排序,使得不同组之间的信息能够得到交流。

图5 堆叠分组卷积有无通道混洗的区别Fig.5 The difference between stacked grouping convolution with and without channel shuffle

图6 通道混洗实现过程Fig.6 The realization process of channel shuffle

1.2.3 ShuffleNet V2基础模块与框架 ShuffleNet V2网络在设计过程中提出了4条轻量化的准则,并根据这4条准则设计出的整体结构(表1)及2个基本单元模块(图7)[16]。ShuffleNet V2的深度堆叠模块(图7a)直接通过通道划分(Channel split)功能将输入的特征通道平均分成2份,左边不参与卷积,恒定不变,起到残差边的功能。在特征融合之后进行通道混洗,左边和右边的特征可以得到有效交流。降采样模块(图7b)由于改变了特征图的尺寸所以在左边原本的残差边也加入了1个深度可分离卷积,改变特征通道数,使得卷积后的两边可以进行通道融合。2个模块最后都通过通道混洗使分组后的特征得到融合和交流。

图7 ShuffleNet V2的基本单元Fig.7 The basic units of ShuffleNet V2

ShuffleNet V2模型在图像识别的速度和精度上有着很好的权衡,牺牲一定的预测精度得到更快的推理速度和更小的模型参数量,非常适合背景简单、分类数较少的核桃破壳物料壳仁数据集。作为专门用于移动端的高效轻量化模型,十分适合在嵌入式平台上部署。

1.3 网络结构优化改进

随着深度卷积神经网络研究的深入,一些新的网络优化策略不断推出。如利用Transformer模型的架构和设计思路可以使卷积神经网络模型在推理速度和识别准确率上都有较大提升[17]。使用深度可分离卷积可以提高模型的训练效果;使用单独的降采样模块可以使网络的训练更快;在深度卷积中适当增大卷积核可以提高网络的识别能力;堆叠基础模块的使用比例对模型的训练也有一定的影响。另外,在网络的浅层不使用深度卷积可以加速模型的训练,且几乎不影响模型的性能,但在网络的深层必须使用深度卷积;SE通道注意力机制的正确使用也可以提升模型的性能[18]。H-Swish激活函数能够更好地训练卷积神经网络,在网络的深层应用效果更佳[19]。DropPath操作可以有效防止模型过度拟合,提高被训练网络的泛化能力[20]。

根据云南深纹核桃壳仁物料数据集特点,结合上述研究成果,兼顾模型的识别精度和速度, 本研究对 ShuffleNet V2-0.5 模型进行了改进,其基本思路如图8所示。首先,将网络整体分为浅层和深层两部分,在网络的浅层不使用深度卷积,添加SE注意力机制与DropPath 层来提高网络性能,参考EfficientNet V2浅层模块[18]提出图9a和图9b 2个本网络的浅层模块ShuffleNet-1和ShuffleNet-2,考虑到DropPath层会丢失所在支路的所有通道特征,所以将DropPath层放在通道融合之后并添加一个完整特征通道作为残差边实现网络深度随机的功能。其次,在网络的深层使用H-Swish激活函数替代ReLu激活函数,为了增加卷积神经网络的感受野,使用7×7卷积核替代深度卷积的3×3卷积核(图9c);最后,通过调整网络架构,改变基础模块堆叠比例和模块的输入输出通道数,并设计单独的降采样模块(图9d)代替ShuffleNet V2-0.5的降采样模块Stage2。

图8 C-ShuffleNet模型基础模块设计思路Fig.8 Design ideas for the base module of C-ShuffleNet model

图9 C-ShuffleNet的基本单元Fig.9 The basic units of C-ShuffleNet

综合上述改进,提出轻量化卷积神经网络模型C-ShuffleNet,其4个基础单元模块见图9,模型的整体结构见表2。

表2 C-ShuffleNet网络整体结构

1.4 试验准备

1.4.1 试验环境 本试验所有模型采用PyTorch 1.11.0深度学习框架进行搭建,以Python 3.9作为编程语言,在PyCharm 平台搭建模型。模型训练采用SGD优化算法进行优化训练,每批次样本数设置为16,初始学习率设置为0.01,使用Lambda自定义衰减更新学习率,lrf设置为0.01,使用交叉熵损失函数计算损失值,训练50个批次结束训练,输入图像大小均设置为224×224。训练的硬件环境如下:处理器型号为Intel i7-12700F,拥有14核20线程,显卡为NVIDIA GeForce RTX 3080 12G版本,内存32 G,Windows 10 操作系统,嵌入式设备树莓派4B,处理器型号为Broadcom BCM2711,使用ARM Cortex-A72 架构,内存8 G。

1.4.2 模型评价指标 采用精确率(Precision)、召回率(Recall)、F1分数(F1)和准确率(Accuracy)评估网络性能。其中F1 分数为精确率和召回率的调和平均数,只有2个数据都很优秀才能得到高分;准确率反映的是模型识别出的所有预测正确的样本数占总样本数的比例,直接体现模型性能。其计算公式如下:

(1)

(2)

(3)

(4)

式中,TP为模型识别为正的正样本数量,TN为模型识别为正的负样本数量,FP为模型识别为负的正样本数量,FN为模型识别为负的负样本数量。

1.5 消融试验

消融试验可以通过逐步增加或减少深度学习网络的组成模块,来分析和评估这些组成模块对神经网络性能的影响。为了探究本研究提出的4个基础模块对模型性能提升的作用,这里将上述改进方式整理为3个调整组合进行消融试验。调整组合1为在网络的浅层使用ShuffleNet-1和ShuffleNet-2替代浅层的Stage1,网络层数及特征通道数保持不变;调整组合2为在网络的深层使用ShuffleNet-3替代深层的Stage1,网络层数及特征通道数保持不变;调整组合3为使用图9d中单独的降采样模块替代原网络的Stage2,并且调整网络层数及特征通道数。

1.6 模型改进前后验证集准确率、损失值比较及混淆矩阵的生成

利用C-ShuffleNet网络与ShuffleNet V2-0.5网络和验证数据集,对不同迭代次数下识别准确率、损失值的进行比较;利用C-ShuffleNet网络与ShuffleNet V2-0.5网络对测试数据集进行试验,建立测试集的混淆矩阵,进而进行模型评估。

1.7 不同卷积神经网络模型对云南深纹核桃破壳物料的识别分类性能比较

为充分评估本研究提出的C-ShuffleNet模型对云南深纹核桃破后物料的识别分类能力,选取了多种卷积神经网络模型进行性能比较,其中包括AlexNet[21]、ResNet[22]、MobileNet V2[14]、EfficientNet V2[18]、ShuffleNet V2[16]等。为了保证试验条件的一致性,所有模型训练时均采用 PyTorch 框架进行网络搭建和训练,同时使用相同的在线预处理策略进行预处理,且所有网络均不使用迁移学习。

1.8 模型预测热力图比较

为了说明C-ShuffleNet模型的有效性,本研究使用Grad-CAM[23]可视化技术对C-ShuffleNet模型和ShuffleNet V2-0.5模型的预测热力图进行比较,分析模型改进前后关注重点的变化情况。

2 结果与分析

2.1 C-Shufflenet模型的消融实验

由表3可以看出,在网络的浅层使用ShuffleNet-1和ShuffleNet-2替代浅层的Stage1,模型在核桃破壳物料壳仁测试数据集的识别准确率提高了0.12个百分点,而模型在参数规模和浮点运算量上均有一定的提升;在网络的深层使用ShuffleNet-3替代深层的Stage1,模型在参数规模和浮点运算量上只有少量提升的情况下,模型的识别准确率提高了0.76个百分点;使用单独的降采样模块替代原网络的Stage2并调整网络层数及特征通道数,模型在参数规模和浮点运算量上均有明显下降,但模型识别准确率却下降了0.77个百分点;使用ShuffleNet-1、ShuffleNet-2和ShuffleNet-3相应替代原网络的Stage1,模型在参数规模和浮点运算量有一定的提升,但模型准确率提升1.04个百分点;最后,本研究提出的C-ShuffleNet轻量化模型虽然在浮点运算量上略高于原模型,但模型在参数规模和模型准确率上均有一定的提升,其中模型准确率高于未改进的ShuffleNet V2-0.5网络模型1.28个百分点。通过上述消融实验得出以下结论,模型参数规模得到压缩主要通过使用单独的降采样模块替代原网络的Stage2并调整网络层数及特征通道数实现的,但是仅做此处改进会降低模型识别的准确率;模型最终准确率的提升,且参数规模有所下降是所有改进方式共同作用的结果。

表3 C-ShuffleNet网络的消融试验

调整组合1:在网络的浅层使用ShuffleNet-1和ShuffleNet-2替代浅层的Stage1,网络层数及特征通道数保持不变;调整组合2:在网络的深层使用ShuffleNet-3替代深层的Stage1,网络层数及特征通道数保持不变;调整组合3:使用单独的降采样模块替代原网络的Stage2,并且调整网络层数及特征通道数。√、×分别表示使用和不使用替代措施。

2.2 改进模型分类结果

不同迭代次数下,C-ShuffleNet网络和ShuffleNet V2-0.5对验证准确率和损失值变化如图10所示。从图中可以看出,本研究设计的C-ShuffleNet网络在训练时的准确率和损失值波动小,迭代结束时C-ShuffleNet网络准确率高、损失值小。

a:验证集准确率对比;b:验证集损失值对比。图10 C-ShuffleNet网络和ShuffleNet V2-0.5验证集准确率和损失值随迭代次数的变化Fig.10 The change of validation set accuracy and loss value with the number of iterations under C-ShuffleNet and ShuffleNet V2-0.5

由图11的混淆矩阵可知2个模型对核桃壳及隔膜等杂物项都可以进行准确的识别;本研究设计的C-ShuffleNet网络在半仁和霉变仁的验证集识别中也可以做到完全预测正确,而ShuffleNet V2-0.5网络则有识别错误5个半仁和2个霉变仁;大三角仁虽然2个模型都有识别错误的部分,但本研究设计的C-ShuffleNet网络模型只有2个被识别为最相似的半仁,而ShuffleNet V2-0.5模型除了有3个被识别为半仁外,还有1个被识别为霉变仁;2个模型都在四分仁和碎仁的识别上出现了较多的错误,说明在现有的6种破壳物料分类中四分仁和碎仁是最易混淆的。

图11 基于C-ShuffleNet与ShuffleNet V2-0.5模型的测试集评估结果(混淆矩阵)Fig.11 Evaluation results (confusion matrix) of test-dataset based on C-ShuffleNet model and ShuffleNet V2-0.5 model

改进前后模型对测试集的评估结果见表4,可以看出C-ShuffleNet模型在模型参数更少的情况下,模型的精确率、召回率和准确率都比ShuffleNet V2-0.5模型高,说明本研究构建的C-ShuffleNet模型在核桃破壳物料壳仁的分类识别中有更好的性能。

表4 C-ShuffleNet与ShuffleNet V2-0.5测试集评估结果

2.3 不同模型分类结果对比

不同模型对核桃破壳物料壳仁的识别性能如表5所示。从表5可以看出,C-ShuffleNet模型的测试集准确率在所有模型中只略低于MobileNet V2、EfficientNet V2以及ResNet101这3个模型,但C-ShuffleNet模型的浮点运算量、参数规模以及模型大小均远小于上述3个模型。C-ShuffleNet模型相较于AlexNet、ResNet50、ShuffleNet V2-0.5以及ShuffleNet V2-1.0等,用更少的参数量实现更高的验证集准确率,分别高出上述模型1.70个百分点、1.20个百分点、1.10个百分点、0.40个百分点;C-ShuffleNet模型的CPU推理速度仅低于AlexNet和ShuffleNet V2-0.5,排在第3位,而其在嵌入式设备树莓派4B上的推理速度更是超过ShuffleNet V2-0.5模型,排在第2位。

由于浮点运算量和参数规模是制约嵌入式在线检测平台性能的主要因素,本研究提出的C-ShuffleNet模型在参数数量、识别准确率和识别速度上进行了更好的权衡,在CPU设备和嵌入式设备上,模型的推理速度均有较好的表现,因此,C-ShuffleNet模型更加适合移植到嵌入式核桃破壳物料壳仁的在线检测设备。

2.4 模型预测重点热力图分析

C-ShuffleNet模型和ShuffleNet V2-0.5模型对核桃破壳物料壳仁预测重点热力图如图12所示。从图12可以看出模型改进前后背景、亮度等信息没有对模型进行太多干扰,所以模型改进前后都有高于97%的识别准确率。但是ShuffleNet V2-0.5模型的识别中只关注了图像的少量特征信息,而改进后的C-ShuffleNet模型则关注到更多的特征信息。因而,C-ShuffleNet模型拥有更好的泛化能力,可以适应更复杂的环境。

3 结 论

(1)本研究提出一种基于改进ShuffleNet V2网络的云南深纹核桃破壳物料壳仁的分类识别算法。在ShuffleNet V2模型的基础上,提出4种构成网络模型的基础模块,结合EfficientNet V2、MobileNet V2等模型的优化策略,对模块堆叠的比例、激活函数类型和深度卷积使用的位置进行优化改进,构造出更为适用的C-ShuffleNet网络模型。

(2)通过和其他7种深度卷积神经网路对比,本研究提出的C-ShuffleNet网络模型能以更少的模型参数、更快的推理速度获得98.34%的识别准确率,在识别准确率和识别速度上取得很好的平衡。本研究提出的C-ShuffleNet模型具有参数数量少、准确率高、识别速度快等特点,更加适合核桃破壳物料壳仁快速无损检测嵌入式平台的开发应用。

(3)本研究数据集的采集和处理虽然已经考虑到现实环境的多样性,但仍与复杂多变的真实环境存在差距,后续的研究中可考虑从实际生产环节采集数据集,进一步提高模型的适用性,促进和加快轻量化深度学习算法在深纹核桃破壳物料壳仁分级检测嵌入式平台中实现。

猜你喜欢
破壳核桃卷积
为什么杜鹃雏鸟刚破壳就会推蛋?
小核桃变身“致富果”
基于3D-Winograd的快速卷积算法设计及FPGA实现
鸡宝宝破壳记
从滤波器理解卷积
可赏可食可入药的核桃
基于傅里叶域卷积表示的目标跟踪算法
国机铸锻破壳而出
黄龙核桃
小燕子破壳了