基于深度学习的玉米病虫害智能诊断系统开发

2023-12-13 15:25姚强付忠军李君保吕斌粟超郭彩霞
南方农业·上旬 2023年9期
关键词:深度学习

姚强 付忠军 李君保 吕斌 粟超 郭彩霞

摘 要 使用自定义CNN和DenseNet201两种基于深度学习的网络,对大斑病、南方锈病、玉米黏虫、玉米蚜虫、玉米叶螨等10种常见玉米病虫害图像样本开展模型训练,并对部分训练结果进行了对比分析。发现所得val_accuracy大于0.8的模型中,基于CNN网络的模型相对稳定,val_loss值相对较小,说明在特定情况下基于CNN网络的模型收敛性相对较好,但DenseNet201网络更容易取得较高准确率的模型。面向Android系统开发基于深度学习的玉米病虫害智能诊断系统,并对系统开展诊断结果验证。验证结果:系统对于小斑病、纹枯病、茎腐病3种病害的诊断错误率较高,泛化能力不足。结论:开发基于深度学习的玉米病虫害智能诊断系统是可行的,但还需进一步调整完善。

关键词 玉米病虫害;深度学习;CNN;DenseNet201;智能诊断系统

中图分类号:S126 文献标志码:B DOI:10.19415/j.cnki.1673-890x.2023.17.019

玉米具有丰富的营养价值,作为重要的粮食作物在我国被广泛种植,其产量约占我国粮食总产量的1/4。病虫害的发生会直接影响玉米产量,如果不能及早识别并进行防治,会造成大幅减产。在种植过程中,病虫害的发现、诊断与防治是玉米生产中的重要环节。如何及时准确地诊断出病虫害信息,并给出合理有效的防治措施,已成为一个重要研究方向。随着信息技术、AI、物联网、大数据、移动互联网等的高速发展,越来越多的技术和产品被应用于玉米生长过程监测、病虫害识别诊断。随着智能手机已在国内广泛普及使用,且性能越来越好,其自身携带的摄像头为随时拍摄图像和视频提供了极大的便捷。本研究基于深度学习的方法开展玉米病虫害识别诊断模型设计与训练,开发了基于Android系统的玉米病虫害智能诊断系统手机APP。

1  研究背景

近十年,国内外农业领域越来越多地应用了图像识别、机器视觉、深度学习等技术。深度学习以其自动提取特征、学习能力强、覆盖范围广、适应性好、可移植性好等特点,越来越受到重视。在玉米病虫害识别应用上,国内外开展了大量基于深度学习的探索和研究。例如,樊湘鹏等为解决田间环境复杂背景下病害识别困难、识别模型应用率低的问题,提出了一种基于改进卷积神经网络的玉米病害识别方法,对田间复杂背景下的9种玉米病害进行识别[1]。许景辉等在Image Net数据集上对玉米病害(大斑病、锈病)使用VGG16预训练模型进行病害识别,提升了模型识别精度和训练效率[2]。刘翱宇等针对玉米叶病害识别的问题,引入焦点损失函数(Focal Loss)专注于难分类的病害样本,提出了一种深度残差网络TFL-Res Net,在Res Net50网络的基础上利用迁移学习,对玉米4种病害进行识别,新网络收敛更快,效果更好[3]。王国伟等采用LeNet模型,对玉米花叶病、灰斑病、锈病、叶斑病进行识别试验[4]。朱家辉等对Al Challenger比赛的农作物叶片病害数据集图像预处理后,使用VGG16和Res Net50对玉米等农作物病害图像进行分类识别[5]。Xu等人为了提高玉米病害识别的准确性,避免参数过多导致的过拟合问题,用全局汇集层替换全连通层,提出了一种多尺度卷积全局池化的神经网络[6]。Chen等基于DenseNet,保留过渡层结构,使用深度可分离卷积替换传统卷积层,并嵌入注意力模块,提出一种基于注意力嵌入的轻量级新型玉米病害识别网络[7]。陈桂芬等使用CNN模型基于迁移学习方法对玉米5种常见病害(3种斑点病害及黑穗病、瘤黑粉病)进行识别[8]。李恩霖等使用PlantVillage公开数据集作为病害样本,分别基于VGG16、Inception V3、ResNet50、ResNet101、DenseNet121等5种深度卷积神经网络建立病害识别模型,对锈病、叶枯病、灰斑病3种典型玉米病害开展分类识别研究[9]。

2  模型设计和训练

2.1  模型设计

模型设计主要包括:病虫害种类的选取、深度学习网络的选择等。

2.1.1  病虫害种类选取

模型选取10种发生在玉米植株地上部位的常见病虫害,包括大斑病、小斑病、纹枯病、茎腐病、南方锈病、玉米螟、玉米黏虫、玉米棉铃虫、玉米蚜虫、玉米叶螨。

2.1.2  深度学习网络选择

深度学习网络有很多种类,卷积神经网络(CNN)主要用在計算机视觉(CV)中,在图像处理方面表现十分出色,当前开展的基于深度学习的农作物病虫害诊断识别大多采用CNN网络。

模型采用自定义CNN网络和DenseNet201网络分别开展训练。自定义CNN的网络结构如图1所示。DenseNet201的网络结构如图2所示。

CNN的基本结构由输入层(Input layer)、卷积层(Convolutional layer)、池化层(Pooling layer)、全连接层(Fully connected layer)及输出层(Output layer)构成。卷积层提取图像特征,池化层对特征抽样,全连接层将提取的特征连接起来,分类器输出结果。本研究使用的CNN网络有10个输入层神经元(对应10个玉米病虫害分类),神经元的激活函数用Relu,输入图像大小为228×228像素,图像格式RGB,1个卷积层和1个池化层构成1组,共设置了3组,分类输出层使用 Softmax分类器,输出结构是1个长度为10的一维数组。

DenseNet201是DenseNet网络(Dense Convolutional Network,密集卷积网络)系列中的一种,也是一种深度卷积神经网络,在图像分类时性能更好。DenseNet网络的核心结构主要由两个模块组成,一个是Dense Block,一个是Transition。Dense Block主要完成密集连接,Transition是不同Dense Block之间的过渡。DenseNet201网络构建过程如下:首先构造1个卷积核为7×7、步长为2的卷积层,然后构造1个大小为3×3、步长为2的max pool层,再构造第1个DenseBlock,DenseBlock的基本单元是BN-ReLU-Conv(1x1)-BN-ReLU-Conv(3×3),其中的Conv(1×1)用来降维、减少计算和参数,第一个DenseBlock包含6个基本单元,在DenseBlock后构造1个Transition,Transition的基本单元是Conv(1×1)-Avgpooling,这里的Conv(1×1)也是用来降维,Avgpooling的大小是2×2、步长是2,用来降低特征图大小;然后构造第二个DenseBlock,包含12个DenseBlock基本单元,再是第二个Transition;第三个DenseBlock包含48个基本单元,接着是第三个Transition;第四个DenseBlock包含32个基本单元,最后是构造1个大小为7×7的global average pool,1个全连接层和1个softmax分类器,构造过程中DenseBlock和Transition交替设置。

2.2  模型训练过程

主要包括:图像数据的采集、图像数据的预处理、模型训练环境的配置、图像数据的划分、模型训练。

2.2.1  图像数据采集

用于训练玉米病虫害智能诊断模型的图像数据主要来源于两个部分:一部分采集于重庆市内的玉米种植区,采集时间在2023年5—8月,光照条件为自然光,采集设备包括智能手机自带摄像头、数码相机等。为提高图像数据的清晰度和病虫发生部位的聚焦度,减少图像曝光率,部分图像采集时使用了高清镜头、滤镜等工具。另一部分为互联网上采集的图像数据,少量来源于公共数据集。图像数据总量为3 733幅。

2.2.2  图像数据的预处理

对图像数据进行了以下预处理:

1)裁剪。很多采集的图像数据包含了除玉米植株和病虫害之外的无用甚至影响识别诊断准确性的部分,如植株间的杂草、田块边界的田埂、田边的树木等。对图像数据进行裁剪,使图像只保留发生病虫害的玉米植株或部位。

2)切片。将图像数据切成固定大小,将图像数据切成228×228像素大小。

3)灰度变换。将RGB格式的彩色图像转化为灰度图像,使图像更清晰、特征更明显。

2.2.3  模型训练环境配置

基于Python语言构建模型训练环境,具体配置如下:Python版本使用3.7.0,集成开发环境使用PyCharm,2种网络结构均基于TensorFlow实现,使用的TensorFlow版本为2.3.0,用到了numpy、OpenCV等程序包,numpy的版本是1.19.2,OpenCV的版本是4.5.1.48,在配置过程中需要安装很多有依赖关系的程序包,为了减少因程序包之间的依赖关系造成的大量冲突和错误,使用了 Anaconda管理安装这些程序包,Anaconda的版本为5.3.1。

2.2.4  图像数据的划分

将图像数据划分为训练集、验证集和测试集。训练集是使用指定网络开展深度学习和训练的数据样本集合,直接参与模型调参,是原始数据的一部分。网络通过训练集,学习数据特征,拟合生成用于预测的模型。验证集是用于评估模型性能的数据集,也是原始数据的一部分,在训练过程中帮助调整参数,避免过拟合或欠拟合。测试集是用于判断模型的准确性和鲁棒性,用在模型生成之后,使用模型没有遇过的数据测试模型性能。由于采集的图像数据总量偏少,属于小规模样本集,按照6∶2∶2的比例划分为训练集、验证集和测试集。

2.2.5  模型训练

要得到一个性能较好的模型,需要进行多次的训练,通过调整batch_size、epoch、learning_rate、image_size等参数,甚至重新清理数据样本,重新划分训练集、验证集合测试集。本次分别在两台x86服务器上开展模型训练,1台基于CNN网络开展训练,另1台基于DenseNet201网络开展训练,为了提升模型训练速度,2台服务器均配置32 GB内存。

2.3  模型训练结果

训练过程中记录了不同参数设置下的模型训练情况,只保留了val_accuracy在0.8以上的模型以供后续开发诊断系统使用。

基于自定义CNN网络模型、基于DenseNet201网络模型的训练结果如表1所示。可以看出,所得val_accuracy大于0.8的模型中,基于CNN网络的相对稳定,val_loss值也相对较小,说明在特定情况下基于CNN网络的模型收敛性相对较好,但DenseNet201网络更容易取得较高准确率的模型。

3  系统设计與实现

3.1  系统设计

3.1.1  功能目标设计

系统主要功能目标是让用户能够方便、快捷地使用智能手机等便携式移动设备对玉米病虫害进行智能识别诊断,并提供相应的防治建议。系统功能设计如下:

1)调取智能手机等移动设备上的摄像头,拍摄玉米病虫害发生图像。

2)从文件系统上读取图像数据。

3)基于深度学习模型对玉米病虫害种类识别诊断的功能。

4)根据病虫害种类给出防治建议的功能。

3.1.2  数据库设计

使用SQLite轻量级数据库,用于管理病虫害编码信息、病虫害名称信息和病虫害防治建议。

3.1.3  流程设计

系统工作流程如图3所示。

3.2  系统实现

3.2.1  开发环境配置

集成开发环境为Android Studio,第三方程序库有OpenCV和Tensorflow-Lite。具体版本如下:Android Studio3.4,OpenCV4.5.1,TensorFlow-Lite2.3.0。引入第三方程序库需在build.gradle文件dependencies段添加如下内容。

implementation ‘org.tensorflow:tensorflow-lite:2.3.0’

implementation ‘com.quickbirdstudios:opencv:4.5.1’

3.2.2  系统UI实现

系统UI共包含两个部分:1)与用户交互(选择图像、拍摄图像、启动识别诊断)的各种按钮;2)展示信息(待诊断图像、诊断结果、防治建议)的各种View。调用摄像头拍摄待诊断图像使用ImageButton发起,调用模型开展诊断使用Button发起,选择本地图像并展示使用ImageView实现,诊断结果和防治建议使用TextView实现。使用ConstraintLayout布局各个组件。实现的用户界面如图4所示。

3.2.3  功能实现

3.2.3.1   调取摄像头功能实现

使用Activity的startActivityForResult()方法将调用摄像头的意图(Intent)传递给Android系统,Intent的Action属性需设置为ACTION_IMAGE_CAPTURE。对拍摄图像进行处理通过Activity的onActivityResult()方法根据requestCode实现完成。

3.2.3.2   选取本地图像功能实现

同样通过startActivityForResult()方法向系统传递意图,Intent的Action属性设为ACTION_OPEN_ DOCUMENT,Type属性设为“image/*”。因浏览和选择本地图像需要读取存储设备的权限,在AndroidManifest.xml中要做如下配置:<uses-permission android:name=“android. permission.READ_ EXTERNAL_STORAGE”></uses-permission>。

3.2.3.3   识别诊断功能实现

首先将图像数据转化为矩阵数据,然后将RGBA格式数据转换为BGR格式,再根据模型输入尺寸对图像大小进行缩放,使用OpenCV完成数据归一化处理,接着将矩阵数据转换为张量(tensor)数据,最后传递给模型解释器Interpreter开展识别诊断。

3.2.3.4   防治建议功能实现

诊断结果是一组数字,包含了病虫害的类别编码和可能性,若可能性大于80%,则根据编码到数据库中读取对应编码的防治建议,最终在TextView中展示给用户。数据库的操作使用SQLiteOpenHelper类和SQLiteDatabase的相关方法实现。

4  结论

本研究在自定义CNN网络和DenseNet201网络上开展了基于深度学习的玉米病虫害模型训练,得到了多个val_accuracy参数大于0.8的模型,开发的玉米病虫害智能诊断系统能够在Android系统中运行,并能使用模型开展识别诊断。经验证,发现系统对于小斑病、纹枯病、茎腐病3种病害的诊断错误率较高,主要原因与采集的图像样本数量较少有关;另外,模型的泛化能力较弱,主要原因与数据集划分和训练参数欠合理有关。后续将通过采集更多的图像样本、图像预处理、调整数据集和训练参数提升模型的准确率和泛化能力。

参考文献:

[1]  樊湘鹏,周建平,许燕,等.基于改进卷积神经网络的复杂背景下玉米病害识别[J].农业机械学报,2021,52(3):210-217.

[2]  许景辉,邵明烨,王一琛,等.基于迁移学习的卷积神经网络玉米病害图像识别[J].农业机械学报,2020,51(2):230-236,253.

[3]  刘翱宇,吴云志,朱小宁,等.基于深度残差网络的玉米病害识别[J].江苏农业学报,2021,37(1):67-74.

[4]  王国伟,刘嘉欣.基于卷积神经网络的玉米病害识别方法研究[J].中国农机化学报,2021,42(2):139-145.

[5]  朱家辉,苏维均,于重重.基于卷积神经网络的农作物叶片病害诊断[J].植物检疫,2021,35(2):28-32.

[6]  XU Y, ZHAO B, ZHAI Y, et al. Maize diseases identification method based on multi-scale convolutional global pooling neural network[J]. IEEE Access, 2021, 9: 27959-27970.

[7]  CHEN J D, WANG W H, ZHANG D F, et al. Attention embedded lightweight network for maize disease recognition[J]. Plant Pathology, 2021,70(3): 630-642.

[8]  陳桂芬,赵姗,曹丽英,等.基于迁移学习与卷积神经网络的玉米植株病害识别[J]. 智慧农业,2019,1(2): 34-44.

[9]  李恩霖,谢秋菊,苏中滨,等. 基于深度学习的玉米叶片病斑识别方法研究[J]. 智慧农业导刊,2021,1(10): 1-10.

(责任编辑:易  婧)

收稿日期:2023-05-11

基金项目:重庆市农业发展基金重大核心技术攻关项目“青贮玉米骨干种质B313持绿性改良提升及育种应用”(cqaas2023sjczhx009)。

作者简介:姚强(1981—),男,河南南阳人,硕士,高级工程师,研究方向为农业信息技术。E-mail: 94388062@qq.com。

猜你喜欢
深度学习
有体验的学习才是有意义的学习
电子商务中基于深度学习的虚假交易识别研究
MOOC与翻转课堂融合的深度学习场域建构
大数据技术在反恐怖主义中的应用展望
深度学习算法应用于岩石图像处理的可行性研究
基于深度卷积网络的人脸年龄分析算法与实现