一种轻量级苜蓿虫害分类模型

2023-01-02 12:07于帅卿郭小燕
软件导刊 2022年11期
关键词:池化苜蓿虫害

于帅卿,郭小燕

(甘肃农业大学信息科学技术学院,甘肃兰州 730070)

0 引言

中国是人口大国,保障粮食储备是关系民生的大事。然而,每年由于病虫害造成的农作物损失十分惨重,农药的广泛使用虽然可以杀灭害虫,但也造成了严重的环境污染,且对人体健康有潜在危害,因此需要对病虫害进行精准防治[1-3]。传统的农病虫害识别方法效果并不理想,且耗费大量人力物力。近年来,农作物病虫害的识别问题逐渐成为深度学习领域的热门话题,越来越多的学者采用卷积神经网络(Convolutional Neural Network,CNN)与农作物病虫害数据相结合的方式解决病虫害防治人工成本高、空间受限、时间消耗大的问题,以实现精准农业以及优化农业资源的目的[4-6]。

1 相关研究

近年来,将CNN 变得轻量化,以增加其可植入性[7-9],以便部署在移动端与嵌入式设备中成为学者们的研究方向。例如,刘洋等[10]对MobileNet 和Inception V3 2 种轻量级CNN 进行迁移学习,实现了手机端的病害叶片检测。两者在PlantVillage 数据集(26 种病害)上的平均识别率分为95.02%和95.62%,在自建葡萄病害叶片图像集中的平均识别率分为87.50%和88.06%;贾鹤鸣等[11]针对植物病害识别精度较低、实时性较差的问题,提出一种基于轻量级CNN 的植物叶片病害识别方法,在PlantVillage 数据集上的识别精度高达99.427%,内存空间占用仅为6.47MB;袁建野等[12]提出使用最大平均组合池化(Max-AVE Pooling)代替ResNet-50 网络模型中Bottleneck 结构的最大池化(Max Pooling)与平均池化(AVE Pooling),使用深度可分离卷积代替标准卷积,与经典分类网络相比能使参数量减少10倍,计算量减少14 倍;蔡汉明等[13]提出一种以深度可分离卷积为主的农作物病害识别神经网络模型,利用深度可分离卷积和卷积相结合的方法取代标准卷积,计算量可降低至标准卷积的12%左右,识别准确率可达98.26%,且参数量仅为904 K;王春山等[14]针对病害识别模型存在的参数量巨大、训练时间长、存储成本与计算成本过高等问题,提出改进型多尺度残差(Multi-scale ResNet)的轻量级病害识别模型,通过增加多尺度特征提取模块、改变残差层连接方式分解大卷积核,进行群卷积操作,减少了模型参数量,降低了存储空间和运算开销。该模型在PlantVillage 数据集中取得了95.95%的识别准确率,在自采集的病害图像数据集中取得了93.05% 的识别准确率,准确率较ResNet18 下降约3.72%,但模型训练参数减少93%,模型总体尺寸缩减约35%。

以上网络模型均基于图像的2 维平面特征进行提取优化,忽略了图像的通道特征提取,因此对于检测目标的识别精度有所限制。为此,本文向CNN 模型中引入通道注意力机制(Squeeze-and-Excitation,SE)[15]和改进激活函数,以提升识别精度;同时加入深度可分离卷积,以降低模型参数量。

2 实验数据

采用IP102 农作物虫害识别图像库作为实验数据来源,选取苜蓿常见虫害,分别为苜蓿象甲成虫、叶蝉、蛴螬、蝼蛄、叩甲、蚜虫成虫、白星花金龟、苜蓿芫菁、东方菜粉蝶、金针虫、苜蓿盲蝽成虫、蚜虫若虫,见图1。经过数据筛选和分布均衡调整后共得到5 784 张图片,共计12 种类别,具体信息见表1。通过随机抽取的方式将80%的图片作为训练集,10%作为测试集,10%作为验证集。

Table 1 Test data set表1 实验数据集

Fig.1 Display of common alfalfa pests图1 苜蓿常见虫害示例

3 基于CNN的分类算法

3.1 算法原理

传统CNN 通常由6 个部分组成,分别为模型输入、卷积层、激活函数层、池化层、全连接层和模型输出,结构如图2(彩图扫OSID 码可见,下同)所示,其中黄色块为特征图,棕色块为卷积核。卷积过程可以看作是对特征图的局部感知。卷积核为特征图的局部特征提取器,大小一般为1×1、3×3、5×5的奇数尺寸。

Fig.2 Basic structure of CNN图2 CNN基本结构

图3 为卷积的具体过程,绿色块为卷积过程中的滑动窗口,随着卷积核窗口不断在特征图上进行滑动,可以计算出一个新的特征图,下一层特征图再进行同样的卷积过程。由图2 可以看出,在前两个卷积层中还有一层池化层[16],通过上一层卷积核操作后,原始图像被变换为一个新的特征图。池化层的主要目的为通过降采样的方式,在不影响图像质量的情况下压缩图片,减少参数产生。池化的方式通常有最大池化(Max Pooling)和平均池化(Average Pooling)两种,其中Max Pooling 取滑动窗口内的最大值,Average Pooling 取滑动窗口内的平均值,池化过程如图4 所示。图2 中的红色块为激活函数层[17],其作用为在神经网络中加入一些非线性因素,使其可以解决非线性复杂问题,常见激活函数为Sigmoid、ReLU、tanh。

3.2 PP-LCNet

Fig.3 Convolution process图3 卷积过程

Fig.4 Pooling process图4 池化过程

PP-LCNet[18]是一种基于MKL-DNN(Math Kernel Library for Deep Neural Networks)加速的轻量级CPU CNN,结构如图5 所示。其在多个任务上改善了轻量级模型的性能,提升了检测精度,同时延续了MobileNet 网络速度快的特点,更适合部署在移动端。PP-LCNet 网络基础模块使用了MobileNet 的深度可分离卷积块(DepthSepConv),该模块分为两个卷积过程,输入图像首先经过逐通道卷积(Depthwise Convolution,DW),图像为三通道的彩色图片,DW 的卷积核个数与输入图片的通道数一致,每个卷积过程均在平面内完成,生成的特征图数量与卷积核一一对应。然而,DW 卷积没有起到扩展特征图的作用,还需要经过逐点卷积(Pointwise Convolution,PW)过程,在特征图的深度上进行扩展,将DW 生成的特征图组合生成新的特征图。PW 卷积使用1 个1×1×M(M 为DW 卷积的通道数),以常规卷积的方式生成新的特征图。使用深度可分离卷积后,模型计算量和参数量均相较于常规卷积变得更小,有效缩减了模型体积。

Fig.5 PP-LCNet network structure图5 PP-LCNet网络结构

当输入1 张M×M×N的图片数据时,模型卷积核的尺寸为K×K×P且Stride=1,此时标准卷积操作参数量与计算量分别表示为:

深度可分离卷积的参数量与计算量分别表示为:

以上式中,K×K为卷积核的长宽,P为卷积核通道数,M×M为输入卷积的特征图长宽,N为特征图通道数,Wsc为标准卷积产生的参数量,Osc为标准卷积产生的计算量,WDsc为深度可分离卷积产生的参数量,ODsc为深度可分离卷积产生的计算量。

深度可分离卷积与标准卷积的参数量与计算量比值分别表示为:

式中,RW和RO分别为深度可分离卷积与标准卷积产生的参数量和计算量比值,为深度卷积与标准卷积的参数量比值为逐点卷积与标准卷积的参数量比值。深度可分离卷积由深度卷积与逐点卷积两部分组成,因此最终结果要将两部分卷积相加,即为

本文模型选择hard-swish 激活函数[19]。与普通线性拟合不同,hard-swish 是结合PP-LCNet 网络自身特点设计的一种区分界限更加明显、拟合更加迅速的激活函数,可使模型训练效果进一步提升。一般的网络特征提取都是建立在平面感受野上,忽略了通道上的特征提取。为能更好地将空间信息与特征维度信息聚合起来,PP-LCNet 模型在网络尾部加入SE 机制,以提取输入图像的通道特征,并通过学习自动获取通道权重。PP-LCNet 中的SE 结构分为4个部分,分别为:

(1)标准卷积。上层输出的特征图X经过标准卷积得到U,表示为:

式中,W、'H、'C'分别为输入特征图的宽、高、通道数,W、H、C分别为卷积后图像的宽、高、通道数。卷积具体操作表示为:

式中,vc表示第c 个卷积核,xs为具有s 个通道的一个2维图像。

(2)Squeeze 操作。Squeeze 为全局平均池化(Global Average Pooling,GAP)操作。维度为W*H*C 的张量经过GAP 转变为维度为1*1*C 的张量Zc,Zc是对于特征通道上全局分布的响应,表示为:

(3)Excitation 操作。Excitation 操作可提取通道中的特征信息,表示为:

式中,S为一个1*1*C 的张量,表示每个通道的权重;W1z表示实现全连接操作和降维功能(减少计算参数),其中W1为降维系数;δ表示ReLU激活函数,经过δ的张量再通过全连接实现升维功能,将张量恢复到原张量大小,其中W2为升维参数;σ表示Sigmoid 函数。

(4)通道权值映射。为将通道权重映射到原始图像上,采用Fscale 操作将通道权重与原始图像进行点乘,以实现通道重要性在原始特征图通道上的重标定功能,表示为:

4 PP-LCNet 模型训练与评价

4.1 实验环境

操作系统为Ubuntu18.0.4,PyTorch 深度学习框架以及Python3.7 版本;硬件环境为配置NVIDIA Tesla V100 显卡的GPU 图像工作站。模型训练使用随机梯度下降方法,运行100个Epoch,Batch_size 为256,动量因子设为0.90,权重衰减设为0.000 1,学习率设为0.01。

4.2 数据增强

在训练前,采用动态随机的方式对数据集进行增强操作,以提升网络模型的鲁棒性和泛化性。采用以下几种数据增强方式:①几何类。随机翻转(30°~180°)、随机缩放(90%,80%);②颜色变换类。高斯噪声、图像颜色变换(对比度50%、明暗度50%、饱和度50%)[20]。数据增强后的图像示例如图6所示。

Fig.6 Image display after data enhancement图6 数据增强后的图像示例

4.3 模型训练

图7 为PP-LCNet 模型的训练Loss 与准确率曲线,左侧纵坐标为TOP1 指标,含义为本实验共有12 个类别,在训练过程中输入一张图片后得到12 个类别每一个类别的概率,取输出层12 个类别概率中最大的一个作为结果,TOP1指标概率接近或等于1 为最优值。右侧纵坐标为模型训练过程中产生的Loss,为目标值与预测值之间的损失,当预测值接近目标值时,Loss 趋近于0,为最优结果。横坐标每个Step 表示更新一次权重参数,向模型输入Batch_size为256 张的图片,根据运行结果,参数更新一次。由图7 可以看出,PP-LCNet 模型在训练过程中准确率总体呈不断上升趋势,虽然在部分阶段有小幅度回落,但随着训练Step 的增加,该模型最终克服了局部优化陷阱,准确率进一步提升,Loss 呈现下降趋势,模型逐渐拟合。从第1 200个Step 开始,Loss 与TOP1 两指数开始趋于稳定,最终Loss接近于0,TOP1指数接近于1。

Fig.7 PP-LCNet model training loss and accuracy curve图7 PP-LCNet模型训练Loss与准确率曲线

4.4 模型评价

随机均量抽取数据集总量的10%,共572 张图片作为测试集导入训练好的模型中进行评价,混淆矩阵结果如图8 所示。混淆矩阵也称为误差矩阵,是评价精度的一种标准格式。图中横坐标为每类害虫的预测分类百分比,纵坐标为每类害虫的真实分类百分比,横行百分比表示所有的正确预测百分比与错误百分比相加结果应为1。图中横坐标预测值与纵坐标真实值重合时的对角线为分类正确的结果,例如蚜虫成虫(Adult Aphid)与蚜虫若虫(Aphid Nymph)两种害虫特征较为接近,分类正确率分别为0.65和0.87,将蚜虫成虫识别为蚜虫若虫的比例为0.3。图中的对角线渐变条从0~1的范围代表0%~100%的概率值,正确分类百分比越大,颜色就越深。

Fig.8 Confusion matrix图8 混淆矩阵

为验证模型训练的有效性,除混淆矩阵外又引入了精度(Precision)、召回率(Recall)、平衡F 分数(F1-score)3 个评价指标。

Precision 为模型精确性的度量,表示为:

式中,TP为True positives,FP为False positives。

Recall为模型检测出样本覆盖面的度量,表示为:

式中,FN为False negatives。

当发生需要检测多个目标时只检测出一个目标,同时检测出的一个目标却为实际值的情况时,会出现召回率很低但精确率很高的极端情况。因此需要采用F1-score 指标,其为调和精确率与召回率之间关系的指数,表示为:

表2 为模型对12 类虫害的识别Precision、Recall、F1-score 比较。可以看出,数值波动较大的两类害虫为蚜虫成虫和叩甲。其中,蚜虫成虫的Recall 值较低,Precision 值接近12 类虫害平均得分;叩甲的Precision 值较低,Recall 值较高。12 类害虫中,苜蓿芫菁、蛴螬、叶蝉、苜蓿盲蝽成虫、蝼蛄、白星花金龟的3 个评价指标得分接近100%,蚜虫若虫、金针虫、东方菜粉蝶、苜蓿象甲成虫的3 个指标得分稳定在平均值附近。12 种害虫的F1-Score 预测结果平均数为0.907,总体标准偏差波动较小,说明模型训练、验证、测试阶段性能表现良好,但在后续分类任务中应对蚜虫和叩甲的识别进行重点研究,尤其是关注聚集密度大的害虫特征提取。

Table 2 Evaluation of identification effect of model on 12 kinds of pests表2 模型对12类害虫的识别效果评价

5 模型性能比较

为验证PP-LCNet 模型对于苜蓿虫害识别的有效性以及相较于其他识别模型的优越性,选取EfficientNet_B0[21]和MobileNetV2模型进行性能比较。

5.1 准确率比较

图9、图10 分别为MobileNetV2、EfficientNet_B0 模型训练时的Loss 与准确率曲线。通过与图7 进行比较可以发现,PP-LCNet模型在Step为1 426时准确率最高,为0.980 4,高于MobileNetV2模型的最高准确率0.976 5(Step为1 730)和EfficientNetB0模型的最高准确率0.953 1(Step为1 730)。通过比较3 个模型的Loss 曲线可以看出,PP-LCNet 模型的Loss 震荡更为稳定,收敛更早,对虫害数据集的拟合度也更高。

Fig.9 MobileNetV2 model training loss and accuracy curve图9 MobileNetV2模型训练Loss与准确率曲线

Fig.10 EfficientNetB0 model training loss and accuracy curve图10 EfficientNetB0模型训练Loss与准确率曲线

采取交叉验证的方式,共设置100 个Epoch,每5 个Epoch 开启1 次验证。由图11 可以看出,PP-LCNet 模型在验证集上进行第12 轮交叉验证时的准确率达到0.956 2,高于EfficientNetB0 模型第17 轮交叉验证得出的0.938 8 和MobileNetV2 模型第19 轮交叉验证得出的0.926 5。第1 轮交叉验证中,PP-LCNet 模型准确率达到0.912 5,高于EfficientNetB0 的0.101 3 和MobileNetV2 的0.776 2。采用总数据集的10%验证模型性能,结果如表3 所示。可以看出,PP-LCNet 模型对每类害虫的平均准确率、平均召回率、平均F1-score 分别高出EfficientNetB0 模型0.027%、0.018%、0.020%,高出MobileNetV2模型0.031%、0.026%、0.031%。

Fig.11 Verification accuracy comparison of each model图11 各模型验证准确率比较

Table 3 Verification accuracy,recall rate,F1-score comparison of each model表3 各模型验证准确率、召回率、F1-score比较

5.2 检测速度比较

由表4 可以看出,PP-LCNet 模型在网络参数量生成(Params)、每秒运算峰值速度(FLOPS)、网络延时(Latency)方面均优于MobileNetV2 和EfficientNetB0 模型。这是由于PP-LCNet 模型更加小巧,检测速度快且精确,更适宜于部署在移动端和应用到嵌入式系统中,适用于多种环境下苜蓿虫害的检测分类任务。

Table 4 Detection speed comparison of each model表4 各模型检测速度比较

6 结语

本文以MobileNetV1 网络作为基础建立PP-LCNet 模型,对12 类苜蓿虫害识别分类问题进行了研究,采用区分界线能力更强的hard-swish 激活函数解决虫害特征图相似度较高、分类不精确的问题。考虑到昆虫体积较小,且其数据集采集往往在自然条件下进行,因此噪声干扰较多,提取特征量有限[22],需要加强网络提取特征的能力,故加入通道注意力机制,将通常被忽略的空间层面特征提取出来,以增强特征之间的联系,使虫害识别准确率进一步提升。在模型轻量化方面,本文加入深度可分离卷积,有效减少了参数量,相较于MobileNetV2 和EfficientNetB0 模型参数量分别下降了0.16%和0.43%。

在自然环境中,虫害大多以群落、多目标的方式出现,未来可加入多目标的虫害数据进行检测识别,进一步提升模型的鲁棒性。目前研究仍处于模型优化层面,未来将尝试将其部署在移动端或嵌入式设备中,进入工程应用阶段。

猜你喜欢
池化苜蓿虫害
面向神经网络池化层的灵活高效硬件设计
基于Sobel算子的池化算法设计
苜蓿的种植及田间管理技术
苜蓿的种植技术
桃树主要虫害及防治方法
不用农药也能治虫害
基于卷积神经网络和池化算法的表情识别研究
浅析白三叶的虫害防治
行道树香橼主要虫害及其防治
苜蓿:天马的食粮