基于轻量级CNN的作物病虫害识别及安卓端应用

2023-01-19 03:54牛学德高丙朋任荣荣徐明明
关键词:农作物准确率卷积

牛学德,高丙朋*,任荣荣,徐明明

(1. 新疆大学 电气工程学院,新疆 乌鲁木齐 830047;2.四川信息职业技术学院 智能控制学院,四川 广元 628040)

农作物病虫害的发生对全球范围的农业产量都会产生消极影响,假如不能够及时发现和识别作物病虫害,并采取有效治疗措施,就可能发生粮食供应不足的风险。因此,在农作物的生产过程中,能够迅速准确地识别出病虫害的种类,并采取及时有效的防治措施,对于提升农作物产量、提高作物经济效益具有重要意义[1]。农作物病虫害的识别方法多种多样,以前大多数依靠人工鉴别,请当地相关农业专家或者植保工作人员在农场观察,这种识别方法效率低、难以在大面积范围里开展,还容易受到工作疲劳、经验不足等因素的影响,降低识别准确率[2],并且很多病虫害早期特征不明显,易被误识别,导致错过最佳防治时期。

2018年,中共中央、国务院印发了《乡村振兴战略规划(2018—2022年)》,提出要大力发展数字农业,实施智慧农业工程。近年来,随着深度学习在各种视觉任务中的优越表现[3],基于深度学习的农作物病虫害分类研究成为农业信息感知领域中的热点[4]。Zhang等[5]提出改进的GoogLeNet网络模型,对来自公开数据集和网络的9种类别的玉米叶部图片进行训练和识别,准确率达到98.9%;陈善雄等[6]采用MSER和CNN结合的区域检测方法并引入两级Inception结构,通过对8种荞麦病害图像的识别,证明其方法在速度和精度上具有良好性能;鲍文霞等[7]设计一种多路卷积神经网络来提取小麦麦穗图片的3个通道特征,通过特征融合将麦穗图片语义特征获得更高的辨识性,对单株麦穗赤霉病的识别准确率达到100%;任守纲等[8]通过将上采样和卷积操作相结合,进而提出一种反卷积引导的VGG网络模型,对于番茄病害图像的识别精度可以达到99.19%;刘文波等[9]提出一种改进的SOLOv2实例分割算法,在语义与掩膜分支上对番茄叶部病害图像进行分割与检测,在高精度的同时缩短了识别用时;Karthik等[10]提出一种注意力机制与深度残差网络结合的方法,在3种番茄叶部病害图像数据上进行5倍交叉验证,能够达到98%的识别准确率;Krishnaswamy等[11]提出将VGG16作为模型的第8卷积层来提取图像特征,通过构建多级支持向量机对茄子叶部病害进行识别,取得了较好的分类效果;Verma等[12]通过构建多种结构的胶囊网络对马铃薯叶部病害进行识别,取得了91.83%的识别准确率。

以上研究均利用卷积神经网络模型在农作物病虫害识别任务上取得了较好的分类效果,然而,它们都是以单一农作物叶片的病虫害作为研究对象进行识别,具有一定的局限性,通常情况下真实的农业生产环境中会同时种植多种农作物。此外,以上研究虽然从不同角度着手设计并训练出有效的农作物病虫害分类网络模型,却没有考虑以解决模型的应用落地问题,未将训练好的网络模型应用到移动终端。

本文针对不同农作物的多种叶部病虫害图像数据集较小的问题,提出一种将MobileNetV3网络和迁移学习思想结合起来的轻量级卷积神经网络模型,通过采用RAdam优化器保证其对农作物病虫害分类任务具有较高准确率的同时占用内存更小,再调用脚本语言接口和推理引擎框架将训练好的模型部署到Android手机应用端,实现移动端对农作物叶片病虫害的便捷智能化诊断,促进农业生产朝着智能化方向发展[13-15]。

1 材料与方法

1.1 数据集

本文所使用的农作物病虫害数据集来自Plant Village工程数据库,该数据库是在实验室环境下采集的具有相同背景叶部病害图集,包含苹果疮痂病、玉米灰斑病、南瓜白粉病等14种作物共38类叶部图片数据,各类叶部图像数量在275至5 357张之间不等[16]。本文选取番茄、玉米、马铃薯3种农作物的17类叶部病虫害图像为研究对象,病虫害图像样例如图1所示。对部分质量较差的样本图像进行筛选淘汰,保留的17类病虫害图像为21 386张;又考虑到缓解部分样本不均衡问题,通过python脚本语言对部分图片进行数据增强操作,最终将获得的23 790张图片作为研究数据。为了提高模型的处理性能,图片尺寸统一修改为224×224,在多次实验的基础上,将数据集中90%的图片作为训练集,另外10%作为测试集。

标号001—010依次为番茄细菌性斑点病样本、早疫病样本、健康样本、晚疫病样本、叶霉病样本、斑枯病样本、二斑叶螨病样本、轮斑病样本、花叶病样本、黄曲叶病样本;011—014依次为玉米灰斑病样本、锈病样本、健康样本、大斑病样本;015—017依次为马铃薯早疫病样本、健康样本、晚疫病样本。图1 病虫害图像示例Fig. 1 Examples of pests and diseases images

1.2 MobileNet网络模型

针对传统深度卷积神经网络模型内存需求过大、计算量也大,导致在嵌入式设备或者移动式设备上运行困难的问题,谷歌公司提出了轻量级卷积神经网络MobileNet,MobileNetV3网络模型[17]在MobileNetV1的深度可分离卷积和MobileNetV2的倒残差结构基础上进行改进,在网络结构上添加了轻量级的SE(squeeze-and-excitation)注意力机制,模块结构如图2所示。该机制源自SE-Net模型[18],核心思想是通过显式地建模网络卷积特征通道之间的相互依赖关系来提高网络所产生表示的质量,网络模型能够自动学习到每个特征通道的重要程度,然后更多关注有用的特征,并抑制对当前任务用处不大的特征,从而提高网络模型的检测效率[19]。

图2 改进后的模块结构Fig. 2 Improved module structure diagram

MobileNetV3网络使用NAS(neual archtecture serach)搜索参数技术,重新设计耗时层参数。对网络每一层的推理时间进行分析,针对耗时的层结构做了优化,减少了第一个卷积层的卷积核个数,由32减为16。同时对网络搜索的最后一步进行精简,改进了MobileNetV2网络的后端部分[20],通过将平均池化(Avg Pooling)提前,减少网络计算量,省略Squeeze操作步骤,直接使用1×1卷积,构建更高效的网络尾部结构,在保证检测精度的同时,缩小了模型参数和检测耗时。改进前后网络结构对比如图3所示。

图3 网络尾端结构对比Fig. 3 Comparison chart of tail structure

此外,MobileNetV3还重新设计了激活函数。Swish激活函数能够提高模型的识别准确率,但是计算量大且求导过程比较复杂,对模型量化过程也不友好,不利于在移动端设备部署。MobileNetV3模型中引入了Hard-swish非线性激活函数,在推理速度和量化速度上均得到提升。

1.3 迁移学习

迁移学习[21]是把已有领域的知识应用到另一个相关领域来解决问题的一种策略,主要目的是迁移已有的先验知识来解决目标领域样本数据不足时训练准确率低、容易过拟合等问题[22]。由于农业信息图像的研究较难收集大规模的数据集,而卷积神经网络模型需要在大量数据集上充分训练后才能获得对病虫害图像分类的能力,因此本研究采用迁移学习的策略,对MobileNet卷积神经网络进行预训练,训练检测流程如图4所示。预训练采用类别为1 000的ImageNet大型数据集,改进优化网络模型,在训练过程调用RAdam优化器,再使用本文的数据集对迁移学习后的模型参数微调,搭建出泛化性强、收敛速度快、占用内存小的多种农作物叶片病虫害识别模型[23]。

图4 基于MobileNetV3网络的迁移学习流程Fig. 4 Flow chart of migration learning based on MobileNetV3 network

1.4 参数设置

参数的设置对网络模型的训练和性能非常重要,为兼顾内存效率与内存容量二者间的最佳平衡[24],本文实验采取多个批次(batch)训练方案,训练周期(epoch)为50,每批次样本数据大小(batch size)分别设置为8、16、32、64,进行对比实验后,确定batch size为32。合适的学习率能够使模型的损失函数更快更好地收敛,实验按照指数标尺对比了0.000 1、0.001、0.01共3组学习率结果后,最终将学习率确定为0.000 1。损失函数采用多分类效果较好的交叉熵损失函数,数学表达式为

(1)

1.5 RAdam优化器

深度学习网络模型参数量较大,在训练过程选择合适的优化算法进行参数学习非常必要,目前Adam是使用较为广泛的优化器,其算法原理通过指数滑动平均来对梯度分量的一、二阶矩进行估计,获得每步的更新值后提供自适应学习率[25]。但在模型训练的初期二阶矩方差比较大,Adam更新算法较难满足,尤其是在小样本数据集上。Liu等[26]改进Adam后提出了Rectified Adam (RAdam),在自适应学习率的基础上添加了一个修正项,用来修正Adam中的方差,训练过程的初期把更新算法修正为随机梯度下降的动量算法,避免了在训练过程中对训练热身(Warmup)手动调优,也防止陷入局部最优状态,使得学习率变化获得更强的鲁棒性能,同时在小样本数据集和不同深度学习网络模型中具有更高的训练效果与泛化性能。

2 实验结果与分析

2.1 实验平台

本文实验硬件平台为NVIDIA RTX 2070s(8 GiB),AMD Ryzen5 3600,16 GiB RAM;软件环境为CUDA10.2,Anaconda4.8.4,采用Pytorch深度学习框架,在Windows10(64位)操作系统下完成。

2.2 模型评价指标

为了评价所提模型对农作物病虫害识别结果的好坏,对样本测试后分别计算平均识别准确率、查准率(P)、查全率(R)、F1值。各模型的平均准确率等于正确分类的图像数量与测试图像总数量的百分比值。查准率、查全率、F1值越大表示模型的预测能力越好,定义分别如下:

(2)

(3)

(4)

式中:NTP代表预测结果正确的正样本;NFP表示预测结果正确的负样本;NFN为预测结果错误的正样本。

2.3 不同优化器效果对比

本文采用RAdam优化器,训练损失和验证准确率如图5所示。同时还选择了其他种类的优化器作为对比实验,其中,Adagrad优化器和SGD优化器在损失上收敛曲线能达到较平稳的效果,但是二者训练速度慢,过分依赖人工设置的学习率,准确率分别为82.1%和89%,相对其他3种优化器略低;Adam优化器和RMSProp优化器二者收敛速度很快,验证准确率也比前两者高,分别能达到93.3%和92.4%,但是二者在小样本数据集下初始准确率较低,鲁棒性差,容易陷入局部最优解;本文使用的RAdam优化器准确率达到95.35%,不仅收敛速度快,收敛曲线还平稳,同时收敛结果对学习率的初始值并不敏感,在小样本数据集下也能达到较高的准确率。

图5 不同优化器效果对比Fig. 5 Comparison of the effects of different optimizers

2.4 不同模型对比结果分析

本文在相同数据集条件下,与其他5种深度卷积神经网络模型进行对照实验,这5类网络模型分别是GooleNet、VGG16、AlexNet、MobileNetV2+迁移学习策略、ShuffleNetV1+迁移学习策略。通过对训练后的模型权重构建混淆矩阵,计算出各卷积模型对每一种农作物病虫害的识别准确率,同时还对比了不同模型的训练用时和模型大小,具体数据如表1所示。

表1 不同模型结果对比Tab. 1 Comparison of results of different models

从表1中可以看出,深度卷积神经网络对农作物病虫害分类均有着较高的识别精度,其中模型GooleNet、VGG16、AlexNet是从零开始训练的大型网络模型,模型MobileNetV2迁移和ShuffleNetV1迁移是基于迁移学习的轻量级网络模型,通过对比不同模型对不同病虫害分类的准确率可知,模型GooleNet、VGG16、AlexNet、MobileNetV2迁移、ShuffleNetV1迁移和本文模型分别有4、4、4、5、7、3种病虫害的识别准确率未达到90%,其中容易误分类的病虫害标签为007(番茄二斑叶螨病)、008(番茄轮斑病)、011(玉米灰斑病)、014(玉米大斑病)、016(马铃薯健康)。这主要是因为多数农作物在感染病虫害之后叶部表面色泽以及病斑颜色会随着患病程度发生变化,例如:番茄患有二斑叶螨病之后,叶片会随着病害程度加重由灰白色变成暗褐色;患有轮斑病后,叶片病斑中央部分会由灰褐色变至灰白色;患有晚疫病后,叶片会由墨绿色变化为褐色[27]。再比如玉米灰斑病病斑形状上可表现为椭圆形和长方形,颜色上可分为灰褐色、黄褐色和深褐色;枯叶病病斑也可表现为淡褐色和暗褐色。不同病害患病程度不同时,会在轮廓、纹理和颜色等局部细粒度特征上表现出极大的相似性,人工也难以分辨。对于标签016,样本量偏少,仅有152张图片,模型GooleNet、VGG16、AlexNet这3类大型深度卷积网络结构复杂,具有更深的特征提取层,能提取到图像深层较抽象的有效特征[28],识别准别率比后3者更高。但是整体而言,本文模型的识别准确率达到95.3%,比其他5种模型分别高出1.0、1.4、2.6、4.1、6.8个百分点,在查准率、查全率以及F1值上对比其他模型均有明显优势。此外,经过对比模型的单张图像识别耗时和模型大小2项指标,本文模型方法较GooleNet、VGG16、AlexNet识别速度更快、效率更高、占用内存更小;较MobileNetV2迁移和ShuffleNetV1迁移这2种轻量级卷积神经网络模型而言,虽然在训练用时和模型大小上有些许不足,但识别精度有很大提升,以少量内存的代价换取到更有应用意义的高准确率。

由于本文所使用的数据集为小样本,模型GooleNet、VGG16、AlexNet为深层卷积神经网络,又是从零开始训练,需要大量的样本数据输入给网络模型后,经过网络参数的不断迭代更新才能够获得提取病虫害病斑细微特征的能力,因此这3种模型在小样本数据研究下识别准确度略低、训练过程较慢、模型体积较大;MobileNetV2迁移和ShuffleNetV1迁移模型通过迁移策略和轻量级CNN相结合的方法,将CNN从大型ImageNet数据集上学习到的先验知识应用到病虫害识别任务中,大幅度提升了识别速度,减小了模型体积,但是这2种轻量级模型网络结构较浅,参数量较少,特征提取能力较差,因此识别准确率有待提升;而本文模型在结合迁移学习和轻量级CNN方法的基础上,引入更适合小样本数据的RAdam优化器,同时MobileNetV3网络中的SE模块使模型的注意力能够更多的关注到有益于本分类任务的特征,从而保证了本研究模型的识别精度,与其他5种方法相比具有更优越的综合性能。总体而言,本文模型在保证较高准确率的同时还兼顾了轻量化的优势,相比其他网络模型也更适合在农业机械嵌入式设备或者移动通信设备上部署。

3 手机端应用

为了保证训练好的卷积神经网络模型能够便捷智能地用于农作物病虫害识别,需将训练好的模型部署到Android移动端。考虑到深度学习框架的兼容性,本文所使用的推理引擎框架是Pytorch官方针对移动设备推出的轻量化解决方案Pytorch Mobile。在充分综合对比卷积神经网络模型的准确率、识别效率、模型大小等多项评价指标的情况下,本文优先选择了最佳的轻量级CNN网络模型,以进一步开发Android手机系统下的多种农作物病虫害识别APP。

3.1 安卓端操作系统与推理框架简介

Android是由谷歌公司推出的一款针对移动设备的操作系统,主要由应用程序层、框架层、程序库、系统运行层和内核层等组成。应用程序层可为开发用户提供API接口来构建自己的应用程序,采用JAVA语言编写;框架层使得对核心应用程序的API接口调用更加友好,程序库为系统中的C/C++文件;系统运行层通过调用库文件来为系统提供支持;内核层中系统内核依赖Linux3.0内核。

Pytorch Mobile是由Facebook推出的用于在边缘设备上运行机器学习模型的加速推理框架,提供了一种端到端的模型部署方式。该框架所具备的API涵盖了机器学习中频繁用到的预处理操作以及集成任务,优化了深度学习模型从研究到部署在移动设备上的流程,通过高效的编译器和优化器来简化模型和减少延迟,加快了计算机视觉任务在手机应用端的推理识别速度。

3.2 安卓端应用开发

应用系统的开发环境主要由Android Studio软件、JDK(Java development kit)和SDK(software development kit)等3部分组成,模型的训练过程在Pytorch框架中完成,之后的优化和部署过程主要在推理框架和Android Studio软件中完成,流程如图6所示。首先搭建安卓开发环境,在Gradle中添加推理框架接口的依赖库,用来减少重复编译Module的数量,便于编译和运行时进行调用访问;然后将训练好的CNN网络模型通过脚本语言转换模型文件的格式,经过量化、剪枝等操作处理后,在MainActivity.java文件中加载模型,并在CameraActivity.java文件中创建模型的重写调用链接以及编写使用相机的相关设置,同时,在安卓开发软件中按照网络模型训练过程中使用的类别文档格式,依次配置好各类农作物病虫害的标签;最后在Android Studio软件上完成安卓应用的UI界面设计等其他相关开发与调试工作,用户在允许应用软件调用摄像头或者内存权限的前提下,软件能够调用摄像头或者获取本地图片进行图像识别。

图6 安卓端应用开发流程Fig. 6 Android application development process

软件调试使用的移动端设备是华为荣耀V20智能手机,内置操作系统为Android 10.0,搭配海思麒麟980处理器,运行内存为6 GiB。将手机调为开发者模式,接收并赋予权限安装病虫害检测软件后,打开成功部署的移动端应用进行识别的界面如图7所示,分别展示了对验证集和真实农业场景下病虫害图像的识别效果。软件不仅移植应用方便、识别准确率高,还具有较高的检测效率,识别耗时小于0.5 s,同时有简单友好的人机交互界面,在识别农作物病虫害的同时给予对应的防治建议措施,基本实现了移动端对农作物病虫害的智能化诊断。

图7 移动端识别应用Fig. 7 Mobile application recognition interface

4 结语

本文基于计算机视觉技术,将轻量级CNN模型应用在3类农作物的17种不同叶部病虫害图像检测任务上。在轻量级MobileNet模型的基础上,结合迁移学习策略,在训练过程中选择更适合小样本的RAdam优化器进行算法更新,改进后的模型避免了以往检测方法中人工设计特征的繁琐过程,对农作物病虫害图像具有较好的识别效果,模型识别准确率达到95.3%,同时保证了计算过程快速化和网络规模小型化,并且还借助推理引擎框架,成功将模型部署到移动端。通过将人工智能与农业信息领域相结合的手段对农作物病虫害进行自动识别,开发成本低,减轻了务农人员劳动强度,也拓展了深度卷积神经网络的应用场景,对于智慧农业的发展具有深远的意义。未来工作将继续研究和设计高识别精度的轻量级网络模型,进一步提高卷积神经网络的综合性能。

猜你喜欢
农作物准确率卷积
高温干旱持续 农作物亟须“防护伞”
俄发现保护农作物新方法
夏季农作物如何防热害
厉害了!农作物“喝”上环保酵素
基于3D-Winograd的快速卷积算法设计及FPGA实现
乳腺超声检查诊断乳腺肿瘤的特异度及准确率分析
不同序列磁共振成像诊断脊柱损伤的临床准确率比较探讨
2015—2017 年宁夏各天气预报参考产品质量检验分析
卷积神经网络的分析与设计
从滤波器理解卷积