一种轻量级CNN农作物病害图像识别模型
2021-11-14孟亮郭小燕杜佳举沈航驰胡彬
孟亮 郭小燕 杜佳举 沈航驰 胡彬
摘要: 针对传统CNN (Convolutional neural network)模型存在训练参数量大而无法应用于硬件条件受限的场合这一问题,本研究提出一种轻量级CNN农作物病害识别模型,能够在保证模型识别准确率情况下简化模型结构,扩大模型的适用场景。设计1个深度卷积模块作为基本卷积单元,2个深度卷积模块和1个批归一化层组成1个残差块作为残差单元,以残差单元作为基本元素设计一个轻量级CNN农作物病害识别模型。对辣椒、番茄和马铃薯的病害图像进行分类识别,最终模型在训练集上的总识别准确率为99.33%,测试集上的总识别准确率为98.32%。相对VGG16等传统模型,在进行农作物病害识别时本模型有更高的识别准确率、更快的识别速度和更小的内存占用。
关键词: CNN; 轻量级; 农作物; 病害; 识别准确率
中图分类号: TP391.41 文献标识码: A 文章编号: 1000-4440(2021)05-1143-08
A lightweight CNN model for image recognition of crop disease
MENG Liang, GUO Xiao-yan, DU Jia-ju, SHEN Hang-chi, HU Bin
(School of Information Science and Technology, Gansu Agricultural University, Lanzhou 730070, China)
Abstract: The traditional convolutional neural network (CNN) model cannot be applied to occasions with limited hardware conditions due to the large amount of training parameters. This research proposed a lightweight CNN model for crop disease recognition, which could simplify the model structure and expand the applicable scenarios under the condition of ensuring the accuracy of model recognition. A deep convolution module was designed as the basic convolution unit, and two deep convolution modules and a batch normalization layer were used as the residual units. A lightweight CNN model for crop disease recognition was designed with the residual unit as the basic element. The total recognition accuracy of the model on the training set was 99.33%, and the total recognition accuracy on the test set was 98.32%. Compared with the traditional models such as VGG16, the lightweight CNN model has higher recognition accuracy, faster recognition speed and less memory occupation.
Key words: convolutional neural network (CNN); lightweight; crops; diseases; recognition accuracy
中國是农业大国,农作物在很大程度上实现了自给自足,但是在农业自动化方面和许多发达国家还有很大差距。随着计算机技术及人工智能的不断发展,学者们开始探索专家系统或者图像分割算法在农作物病虫害识别上的应用。Singh等 [1] 使用SVM(Support vector machine)分类器使得对早期豌豆锈病的识别达到微观层面。张建华等 [2] 基于最优二叉树和SVM的方法对蜜柚病害图像进行识别,准确率达到90%。Park等 [3] 在病虫害识别领域提出模式识别和多光谱分析技术,有效提升了识别准确率。Umut等 [4] 使用机器学习对棉花常见病害进行识别,准确率达到90%以上。Maniyath等 [5] 提出一种基于特征提取的改进SVM算法,融合机器视觉和模糊识别,大大提升了识别效果。陈佳娟 [6] 使用特定算法计算出棉花病叶受损程度。王长斌 [7] 提出一种新的病害识别算法,但是计算速度较慢。Zhang等 [8] 提出从患病玉米中提取叶片特征,再将提取的特征输入K近邻分类器进行分类,对5种玉米病害识别率在90%以上。Singh等 [9] 提出使用遗传算法对植物早期病害进行检测。
以上方法在进行病虫害的识别时需要提取大量的图像特征且计算复杂,故识别准确率受到图像特征矩阵提取结果与计算机计算能力的限制。随着人工智能的发展,农业与深度学习的结合使得农作物病虫害图像识别的发展有了质的飞跃。Gassoumi [10] 采用基于神经网络和模糊逻辑的软计算模型技术对棉花病害进行了有效识别。温芝元等 [11] 开发了一种补偿模糊神经网络,用于脐橙的病虫害识别。张建华等 [12] 通过粗糙集和误差反向传播神经网络构建了棉花病害识别模型。黄双萍等 [13] 提出基于GoogleNet模型的水稻穗瘟病检测方法,模型识别性能有了较大提高。Mohanty等 [14] 提出多层卷积神经网络,该模型在训练后能够快速提取植物病害特征,可以对多达14种病害进行分类。杨秀坤等 [15] 提出基于退火算法的神经网络模型,该算法能够对苹果进行检测,判断其表皮是否有缺陷。王克如 [16] 将神经网络与专家系统结合起来,可对玉米常见病害进行识别。龚丁禧等 [17] 建立了可迁移的卷积神经网络,该模型在简单训练后可应用于其他植物病害识别中。
卷积神经网络强大的特征提取能力和学习能力,使得自然条件下的病害图像特征也能够被准确地提取并使得模型具有良好的迁移性,这对于中国农作物病害的快速精准识别,提高粮食产量有着重要的意义,但是以卷积神经网络为代表的传统的深度学习网络模型由于参数训练量大,所以收敛速度较慢,同时对运算的软硬件设备有极高的要求。因此将卷积神经网络应用于农作物病虫害的识别时,如果将应用场景扩展到嵌入式或者移动设备上面,有限的计算资源将面临模型参数量巨大、训练时间长,存储空间不足等问题。本研究针对传统卷积神经网络受硬件限制,收敛速度慢,占用内存大,识别准确率较低的问题,设计开发了一种基于残差思想的卷积神经网络模型Light-CNN(Lightweight convolutional neural network),旨在保证识别准确率的前提下精简模型结构,从而提升农作物病害类别的识别实时性,从而扩大其适用范围与应用场景 [18] 。
1 试验材料
本试验采用PlantVillage植物病害图像库作为试验数据来源。该数据集在实验室条件下采集,包含苹果黑星病、苹果黑腐病、马铃薯早疫病等13种植物的26种病害的图像,共计 54 306 张图片。在本研究中,选取辣椒、马铃薯和番茄3种农作物,15种病害叶片图像,共 22 787 张图片作为数据集。表1给出了该数据集的15种病害样本信息。图1为数据集病害叶片图像展示。为了提高模型的处理效率,将原始图像尺寸调整为 64× 64,在数据集中随机抽取80%图像用于建立训练集,剩余20%图像用于测试集。
2 模型轻量化设计策略
2.1 全局平均池化
池化层又称为下采样层,针对原始图像经过卷积层后参数量增大导致模型无法快速拟合的问题,利用池化操作对卷积操作后的图像特征进行降维处理。传统的最大值池化、平均池化在一定程度上可以减少训练参数从而提高训练的速度,节约硬件成本,但是当模型的训练受到硬件条件限制时,仍会出现训练、识别速度受限的问题。为了更近一步简化模型结构,本研究采用全局平均池化,与平均池化将特征图矩阵以窗口形式取均值不同,全局平均池化以整个特征图为单位进行均值化,每一张特征图最终可以获得1个均值,从而大幅度减少了网络的参数数量。
2.2 数据标准化
数据的标准化操作可以提升输入数据的质量,从而大幅度提高模型收敛的速度与准确率,本模型采用Z-score(公式1)标准化方法使得输入数据相对于原点对称,输入图像像素从原来的(0,255)映射为(0,1),数据标准化后符合正态分布,输入向量的正交性增强,有效加快了模型运行的速度和避免模型陷入梯度消失的问题。
μ B= 1 m ∑ m i=1 x i ; σ 2 B= 1 m ∑ m i=1 (x i-μ B) 2 ; i= x i-u B σ 2 B+l (1)
式中, x i 为输入的第 i 个数据, m 为输入数据个数, μ B 为均值, σ 2 B 为方差, l 是一个微小值,用来防止出现除以0的情况。
2.3 随机淘汰
在反向传播过程中,权值的更新可能会过于依赖部分隐藏神经元,导致图像中某些特征的提取出现盲区,因此在反向更新权值的过程中,每次迭代时随机丢弃50%的神经元,被剔除的神经元不再参与本次迭代中信号的传递,使得神经网络在学习时和权值在更新时对于所有的神经元都保持敏感,从而使得模型的鲁棒性更强,有效抑制过拟合现象。
3 农业病害图像识别模型
3.1 深度卷积块
卷积操作用于提取原始图像信息,为了提升模型提取图像信息的能力,本研究设计1个由卷积层、批归一化层和非线性激活函数组成的深度卷积块作为特征提取的基本单元,其中卷积层采用64个大小为 3× 3的卷积核, 大小为 64× 64的原始图像经过第1次标准卷积初步提取特征后大小为 62× 62。本模型设置填充机制,即始终用0填充处理过的图像使其保持大小为 64× 64。批归一化层将经过标准卷积后的图像数据从(0,255)映射到(0,1),避免出现梯度消失的情况。非线性激活采用ReLu函数,图2为深度卷积块结构图。图3为深度卷积块对植物叶片病害特征的初步提取样图。
a1为辣椒细菌性斑点病叶片;b1、c1分别为马铃薯早疫病叶片和马铃薯晚疫病叶片;d1~l1分别为番茄轮斑病叶片、番茄花叶病叶片、番茄黄曲叶病叶片、番茄细菌性斑点病叶片、番茄早疫病叶片、番茄健康叶片、番茄晚疫病叶片、番茄叶霉病叶片、番茄斑枯病叶片和番茄二斑叶螨病叶片。a2~l2分别为a1~ l1经过深度卷积块后的病害特征初步提取样图。
3.2 残差块
随着网络层数的增加,卷积神经网络提取的信息越来越多,模型的参数也剧烈增长,采用梯度下降法更新权值时,当网络到达一定深度后,会出现梯度为0或者梯度爆炸的现象,梯度为0将导致权值无法继续得到有效更新,识别准确率反而下降;梯度爆炸将使得模型出现剧烈动荡而无法收敛。He等 [19] 提出ResNet,采用一种恒等映射,即在网络中直接将单元的输入与单元的输出相加再输入到下一层,从而解决了传统网络训练中随着网络层数的增加网络性能反而退化的问题。本模型利用残差思想,设计了1个残差块,使得在增加网络深度时能够继续保持模型的精度。残差块由2层深度卷积块和1个批归一化层构成。深度卷积块均使用64个大小为3×3的卷积核,为解决由于卷积操作导致的原图像部分特征消失的问題,本研究所设计的残差块在通过2层深度卷积块后与原输入图像相加,从而保证在网络层数增加时保持模型原有的精度。为增强模型鲁棒性,在每个残差块后面均使用批归一化层,从而提高收敛的速度。残差块结构如图4 所示。
3.3 植物病害识别模型
针对传统CNN模型收敛速度慢,占用内存大,识别率较低的问题,本研究设计了1个轻量级植物病害识别模型(Light-CNN),该模型分为特征提取子模型和分类子模型。特征提取子模型由1个单层卷积层,5个残差块,1个全局平均池化层组成,在分类子模型中又分为植物类别分类与病害类别分类2个子模型。分类子模型由3个全连接层、1个Droput层和1个SoftMax层组成。在本模型中,首先将待识别图片大小统一为 64× 64,通过一层卷积核大小为 3× 3,数量为64的标准卷积层提取图像初级特征,再经过5个残差块提取图像高级特征以及减少特征损失,当进行卷积与池化操作使得图像尺寸变小时,均采用填充0的方式,以保证模型中所有的特征图大小始终为 64× 64,经过5个残差块后再经过全局平均池化、全连接层、Dropout层和全连接层,最后通过SoftMax进行分类输出,具体模型结构见图5。
4 模型训练与试验结果分析
本模型的数据集为PlantVillage部分数据集,在本研究预训练模型中采用Adam Optimizer作为网络参数优化器,损失函数采用稀疏交叉熵(Sparse_categorical_crossentropy)损失函数,使用衰减学习率方法进行学习训练,梯度下降过程中,训练集设置批处理样本数为8,测试集设置批处理样本数为1。
4.1 模型的训练
4.1.1 稀疏交叉熵损失函数 在进行模型损失值计算时,由于本数据集中均使用数据原始标签,分别用 0~ 14来表示待分类的15种类别。本研究选用稀疏交叉熵损失函数,以计算真实标签数值与预测标签数值的交叉熵误差为依据进行权值的修正[公式(2)]。
E=- 1 N n k t nk ln y nk (2)
其中, N 表示 N 个数据; y nk 表示神经网络第 n 个元素第 k 个元素的输出; t nk 表示神经网络第 n 个元素第 k 个元素的标签。
4.1.2 衰减法学习率 在模型运行中,恒定的学习率容易导致模型训练时陷入局部极值,因此本模型采用衰减法设置学习率,随着迭代次数的不断增加,学习率不断下降,最终趋于稳定。衰减法学习率公式如下:
r=r 0×p I θ (3)
其中 r 0 为基础学习率; p 为衰减系数; I 为迭代次数; θ 为衰减速度; I θ 是对取得的值向下取整。本模型中基础学习率设定为0.001,学习率下限为 0.000 000 01 ,衰减系数设置为0.9,衰减速度为 12 000 。即每经过 12 000 次迭代,如果损失函数的损失值没有明显的降低,则将学习率降低为原来的90%,直到达到最终的学习率下限。
4.1.3 历史值保留机制 本研究中为保证结果的严谨性,需要多次重复试验。在进行权值的更新过程中,为了避免在训练后期初始权值重复训练以及有可能出现随着迭代次数的增加,识别率反而下降的情况,在训练过程中保存权值历史值,以期在只关注全连接权值参数时,可以直接导入权值历史最优值,以峰值识别率所对应的参数作为下一次试验迭代次数设定的依据,从而加快模型识别的速度。
4.2 试验结果分析
本模型均在TensorFlow框架下进行试验。硬件环境:Inter(R) Xeon(R) W-2123 CPU @3.6 GHz,16 GB RAM,NVIDIA GeForce GTX 1 080 GPU,8 GB Video Memory。软件环境:CUDA toolkit 10.0,cuDNN 10.0,Windows 10 64bit,Python 3.7,TensorFlow 2.0.0。
本研究中使用分类准确率作为最终结果的评价指标之一,分类准确率越高,则意味着本模型的识别和分类性能越好。
单个类别识别准确率计算公式:
Acc= n c n t (4)
其中 n c是单个类别的准确预测数, n t是单个类别样本总数。
模型识别的平均准确率公式:
AA= Acc n (5)
其中 n 为样本的总类别数。
本模型考虑到低档终端中运行时的存储和计算能力的限制,将模型所占内存大小、单张图片所使用的识别时间、识别准确率作为模型评价的标准。在模型识别率高且所占内存较小的情况下,单位时间识别图片越多,则该模型能够在实际农作物病害检测中具有更广泛的应用。
4.2.1 试验结果 本模型的输出为15个类别,分别代表辣椒、马铃薯、番茄3种农作物的15种病害,识别结果见表2。其中植物的平均识别准确率为99.35%,病害的平均识别准确率为99.28%。
由图6可以看出,当迭代次数较低时,模型的学习次数不够,准确率不理想。但是随着迭代次数的不断提升,训练集中植物样本和病害样本的识别准确率在不断提升。第1次迭代之后植物分类识别准确率为82.59%,病害识别准确率为76.12%,之后识别率便快速提升,迭代到第45次時准确率趋于平稳。当迭代次数达到第50次时,植物识别准确率稍有下降,而病害识别准确率达到最高,训练集植物识别准确率达到99.35%,训练集病害识别准确率达到99.28%,总识别准确率达到99.33%。
从图7可以看出,测试集在第1次到第3次迭代过程中植物和病害的识别准确率由63.98%和29.87%升至84.54%和70.98%。但当迭代次数从第3次到第4次时,测试集中出现过拟合现象,导致识别准确率急速下降。当迭代次数从第4次到第5次时,模型准确率又开始大幅提升,而当迭代次数从第5次到第9次时准确率又大幅度下降。迭代次数从第9次至第12次时准确率大幅度提升,之后除迭代次数从第15次到第16次和第24次到第25次时发生过拟合导致准确率发生急速下降外,其余迭代期间准确率均稳步增长。在迭代次数达到28次时,准确率趋于稳定,最终当迭代次数达到第50次时,准确率达到最大。测试集植物分类准确率为99.44%,测试集病害分类准确率为98.28%,测试集总准确率为98.32%。
从迭代次数角度看,在训练的初期随着迭代次数的增多,模型的识别准确率也越来越高,但当迭代次数超过一定程度时,模型的识别准确率不仅不再提高,可能还会出现一定幅度的降低。因此,选择合适的迭代次数可以获得更优的网络参数,可以最大化地发挥模型的性能。在本模型中,50次的迭代次数可以获得最优识别效果。
4.2.2 不同模型对比试验 为进一步研究本模型的性能,分别选择AlexNet [20] 、VGG16 [21] 、GoogleNet [22] 、ResNet50 [23] 4种深层网络模型与本模型进行对比,这4种模型均采用标准网络结构。AlexNet、GoogleNet为5层卷积层,3层全连接层;VGG16为13层卷积层和3个全连接层;ResNet50为4个残差块,每个残差块均使用 3× 3卷积核,共50个标准卷积层,1个全连接层。表3描述了不同网络模型占用内存的大小和针对本数据集的平均识别准确率。由表3可知,AlexNet、VGG16 [24] 的識别准确率为86.12%和88.75%。相比这2个模型,GoogleNet的识别准确率较高,达到92.00%,本模型在识别准确率方面达到99.33%。虽然ResNet50在训练集识别准确率方面稍微高于本模型,达到99.76%,但是其测试集识别准确率为92.31%,发生了明显的过拟合。因此在农作物病害识别率方面,本模型和VGG16、AlexNet、GoogleNet相比有较大的优势,相比ResNet50也有一定优势。在模型占用内存大小方面,VGG16占用内存最大,为552.0 MB,GoogleNet占用内存大小为87.5 MB,AlexNet占用内存大小为227.6 MB,ResNet50 占用内存大小为90.3 MB。而本模型经过训练后所占内存大小仅为4.6 MB。因此在模型占用内存大小方面,本模型相对VGG16、AlexNet、GoogleNet和ResNet50有较大优势。
表3还给出了本模型与其他深度模型的单张图片训练所需时间的对比。每一张图片的训练所需时间都是经过多次试验取平均值所得。从结果来看,本模型的单张图片训练所需时间为0.220 s,远远小于VGG16等其他模型的用时。试验结果表明,本试验模型在占用内存大小、识别时间、识别准确率方面均有一定的优势。
5 结 论
本研究针对当前大部分植物病害识别模型的识别准确率低,模型占用内存大的问题,设计了一种轻量级植物病害识别模型(Light-CNN),使用PlantVillage部分图片,建立了辣椒、马铃薯和番茄的多种病害数据集,模型训练结果表明,在一定范围内,模型的迭代次数越多,模型的识别准确率越高,但是超过一定范围,模型的识别准确率可能不再增长,甚至可能降低。在识别植物病害时,本模型在内存占用大小,识别时间方面远优于VGG16、AlexNet、GoogleNet和ResNet50;在识别准确率方面远优于VGG16、AlexNet、GoogleNet。因此轻量级植物病害识别模型为手机等移动设备进行植物病害的检测提供技术支撑。本研究模型数据集均是在无干扰、无遮挡、图像清晰、背景固定的实验室条件下的图片,因此后期进一步的研究方向是在自然复杂背景下的植物病害图像识别。
参考文献:
[1] SINGH K, KUMAR S, KAUR P. Support vector machine classifier based detection of fungal rust disease in pea plant (pisam sativam) [J]. International Journal of Information Technology,2019,11(3):485-492.
[2] 张建华,孔繁涛,李哲敏,等. 基于最优二叉树支持向量机的蜜柚叶部病害识别[J].农业工程学报,2014,30(19):222-231.
[3] PARK H, EUN J S, KIM S H. Image-based disease diagnosing and predicting of the crops through the deep learning mechanism[C] //DOMAN T M. The 8th International Conference on Information and Communication Technology Convergence (ICTC). Jeju Island South Korea : IEEE Press,2017: 129-131.
[4] UMUT B K, OMER B G, OKTAY Y. Detection of plant diseases by machine learning[C] // HUSSEIN A. The 26th Signal Processing and Communications Applications Conference.Izmir Turkey:IEEE Press, 2018: 1-4.
[5] MANIYATH S R, VINOD P V, NIVEDITHA M, et al. Plant disease detection using machine learning[C] // HUSSEIN A. 26th Signal Processing and Communications Applications Conference.Izmir Turkey:IEEE Press,2018: 41-45.
[6] 陈佳娟. 基于图像处理和人工智能的植物病害自动诊断技术的研究[D].长春:吉林大学,2001.
[7] 王长斌.基于云计算的农作物病虫害多源遥感数据挖掘[J].电子技术,2016,45(3):15-17.
[8] ZHANG S W, SHANG Y J, WANG L . Plant disease recognition based on plant leaf image[J]. Journal of Animal and Plant Sciences, 2015, 25(3):42-45.
[9] SINGH V, VARSHA, MISRA A K . Detection of unhealthy region of plant leaves using image processing and genetic algorithm[C]//TORSTEN M. International Conference on Advances in Computer Engineering and Applications (ICACEA). Ghaziabad, India : IEEE Press, 2015 : 1028-1032
[10] GASSOUMI H. A soft computing approach for classification of insects in agricultural ecosystems[D].New Mexico: New Mexico State University, 2000.
[11] 溫芝元,曹乐平. 基于补偿模糊神经网络的脐橙不同病虫害图像识别[J].农业工程学报,2012,28(11):152-157.
[12] 张建华,祁力钧,冀荣华,等. 基于粗糙集和BP神经网络的棉花病害识别[J].农业工程学报,2012,28(7):161-167.
[13] 黄双萍,孙 超,齐 龙,等. 基于深度卷积神经网络的水稻穗瘟病检测方法[J].农业工程学报,2017,33(20):169-176.
[14] MOHANTY S P, HUGHES D P, SALATHE M . Using deep learning for image-based plant disease detection[J]. Frontiers in Plant Science, 2016, 7:1419.
[15] 杨秀坤,陈晓光. 用遗传神经网络方法进行苹果颜色自动检测的研究[J]. 农业工程学报, 1997, 13(2): 173-176.
[16] 王克如. 基于图像识别的作物病虫草害诊断研究[D].北京:中国农业科学院,2005.
[17] 龚丁禧,曹长荣. 基于卷积神经网络的植物叶片分类[J].计算机与现代化,2014(4):12-15,19.
[18] 王春山,周 冀,吴华瑞,等. 改进Multi-scale ResNet的蔬菜叶部病害识别[J].农业工程学报,2020,36(20):209-217.
[19] HE K, ZHANG X, REN S, et al. Deep residual learning for image recognition[C] // NIKOS K. The 15th Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition(CVPR). Boston American :IEEE Press,2016:770-778.
[20] KRIZHEVSKY A, SUTSKEVER I, HINTON G E. Imagenet classification with deep convolutional neural networks[C] // PEREIRA F, BURGES C J C. The 25th International Conference on Neural Information Processing Systems. Nevada American :MIT Press,2012: 1097-1105.
[21] GOMEZ-OJEDA R, LOPEZ-ANTEQUERA M, PETKOV N, et al. Training a convolutional neural network for appearance-invariant place recognition[J]. Computer Ence,2017, 92(1):89-95.
[22] SZEGEDY C, WEI L, JIA Y, et al. Going deeper with convolutions[C] //CONNELLY B, JUNHWA H. The 33th IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Boston American :IEEE Press, 2015 : 1-9.
[23] 方晨晨,石繁槐. 基于改进深度残差网络的番茄病害图像识别[J].计算机应用,2020,40(S1):203-208.
[24] 张建华,孔繁涛,吴建寨,等. 基于改进VGG卷积神经网络的棉花病害识别模型[J].中国农业大学学报,2018,23(11):161-171.
(责任编辑:陈海霞)