APP下载

基于计算机视觉的作物病害监测服务平台设计与研究

2023-08-01林开颜梅飞吴军辉郭文刚陈杰司慧萍

中国农业科技导报 2023年6期
关键词:作物卷积准确率

林开颜, 梅飞, 吴军辉, 郭文刚, 陈杰, 司慧萍

(同济大学现代农业科学与工程研究院,上海 200092)

病害是影响作物产量的重要因素之一。农户往往从自身经验出发,难以准确识别病害种类,导致使用的药剂不能起到防治作用,既浪费了农药,又耽误了病害防治的最佳时间。目前,农作物病害主要依靠从业人员经验进行辨识,不仅效率低下,还存在误判等问题,而利用计算机视觉可以提高病害识别的效率和准确度。

传统的病害识别技术需要先分割作物叶片图像,再提取病害特征并利用分类器进行分类。基于特征分类的识别方法首先使用最大类间方差法、分水岭算法等分割叶片,然后利用尺度不变特征转换(scale-invariant feature transform,SIFT)、方向梯度直方图(histogram of oriented gradient,HOG)等特征描述子提取特征,最后结合支持向量机等浅层机器学习分类算法进行分类。Mohamad等[1]采用基于二叉树的支持向量机算法,利用32类作物叶片数据集进行网络训练,与基于BP(back propagation)神经网络的试验结果相比,该方法的分类准确率更高。Jagadeesh等[2]通过预处理、分割、提取和减少作物受真菌影响部分的特征,采用离散小波变换(discrete wavelet transformation,DWT)进行特征提取,并利用主成分分析(principal component analysis,PCA)对特征进一步降维,然后将简化的特征输入到分类器进行识别。由于作物不同病害特征差异大,难以找到合适的算法来识别多种作物的病害。近年来,在图像处理领域,以卷积神经网络(convolutional neural network,CNN)为代表的深度学习模型突破了人类自身的识别能力。基于深度学习的神经网络病害特征识别法也受到越来越多的关注。国内外许多学者开始利用深度学习卷积神经网络来研究农作物病害问题。师韵等[3]针对4种冬枣果实病害,收集图像后通过旋转、尺寸缩放等方式进行扩展,并利用深度卷积神经网络提取病害图像的有效特征,与传统作物病害识别法相比,该方法的特征提取过程更快,识别率达到92%以上。郭小清等[4]针对番茄不同病害间的相似性以及同种病害在不同时期病斑的差异性问题,利用不同尺寸的卷积核提取特征,并在此基础上设计了图像识别系统,该系统的平均准确率达92.7%。鲍文霞等[5]对小麦穗部的赤霉病进行研究,先用U-Net网络将单株麦穗分割出来,再使用多路卷积神经网络在由2 000多张单株麦穗构成的图像数据集上进行病害识别。Sladojevic等[6]利用深度学习对作物病害进行分类识别,基于14类病害数据集对模型进行训练,然后进行微调,其识别精度最低为91%,最高可达98%。上述方法需要大量的数据集样本,针对小样本数据集,迁移学习法可以取得更好的效果。冯晓等[7]以小麦叶部病害图像为研究对象,基于MobileNetV2构建小麦叶部病害图像识别模型,模型初始参数使用迁移学习算法训练好的参数,将模型的所有层设置为可训练的迁移学习方式,并利用数据增强法增加样本量,该模型对3种小麦病害图像的平均识别准确率高达99.9%。Amanda等[8]以木薯红蜘蛛、褐斑病、绿螨病为研究对象,利用迁移学习训练深度卷积神经网络并进行试验分析,结果显示,该网络对木薯3种病害的平均分类准确率超过95%。Afifi等[9]使用卷积神经网络ResNet构建网络模型,并在PlantVillage数据集上训练,结果表明当目标图像与原数据集的拍摄条件差异较小时模型具有更好的移植性。

前人基于卷积神经网络的方法虽取得了较好的效果,但多需要大量的数据集样本,且只针对同一种作物的不同病害。目前,广泛使用的分类网络包含ResNet[10]、EfficientNet[11]、VggNet[12]、InceptionNet[13]等。不同的神经网络框架各有优缺点,EfficientNet强调神经网络参数在时间上的效率;VggNet在深层神经网络的性能更好;ResNet针对梯度消失、梯度爆炸问题具有很好的应对能力。迁移学习可以帮助网络更好、更快地提取特征,一方面,小样本量会导致卷积神经网络学习的特征比较粗糙,细粒度不够,难以表达病害的共同特征;另一方面,模型训练需要较长时间,采用迁移学习能够减少模型训练的时间。针对多种作物数据集样本量小且不均衡的问题,本研究欲采用卷积神经网络和迁移学习相结合的方法,帮助网络更好、更快地提取病害特征,并搭建病害识别平台,以便更快、更准确地识别病害种类。

1 材料与方法

1.1 数据来源

本研究采用AI CHANLENGER 2018农作物病害数据集的16 892张作物病害图片作为试验数据,该数据集可以按“物种-病害-程度”分类,数据集的部分示例图像如图1所示;该数据集涉及的病害种类也比较全面,涵盖了常见的作物病害,样本数据如表1所示。

表1 样本数据汇总Table 1 Sample data summary

图1 作物病害示例Fig.1 Examples of crop diseases

1.2 图像预处理

对数据集进行图片尺寸重定义、样本批次归一化处理、图片去均值化等预处理。将图片重定义为224×224×3,降低像素,去除冗余信息,从而减少计算量。图片去均值化是为标准化并移除图像的平均亮度值,具体操作为:对于尺寸重定义后的图像,每个样本的各像素值减去整个训练样本的平均像素值。

1.3 基于深度学习的作物病害识别模型构建

1.3.1 模型结构 ResNet网络基于VGG19网络进行修改,通过短路机制加入残差单元,末端使用Softmax分类器输出最终类别。Softmax 分类器会将输入映射成(0,1),即每个类别的概率,然后选取概率最大的类别作为最终输出。本试验采用基于ResNet50神经网络和迁移学习相结合的方法监测识别病害。由于ResNet网络对于各种粒度的特征给予相同程度的关注,而同种类不同程度病害对应的作物叶片差异往往不显著。因此,本研究对网络结构进行了修改,以便于区分病害检测网络的一些细粒度特征。SE(Squeeze-and-Exciation)模块可以自动学习到不同通道之间特征的重要程度[14],使得网络更加关注病害的细粒度特征,因此,采用SE模块改进网络。该模块输入图像H×W×C,通过压缩(Fsq)和激励(Fex)操作,拉伸成1×1×C后与原图像相乘,并将每个通道赋予权重。SE模块提升了模型对通道特征的敏感性,并且是轻量级的,只需要增加较少的计算量就可以带来性能的提升。病害检测模型整体结构如图2所示。

图2 病害检测模型整体结构Fig.2 Overall structure of crop disease detection model

1.3.2 参数设计 按照对学习率、每个batch中训练样本的数量(batch size)、其他参数的顺序调整参数。学习率表示模型权重更新的速度,设置过大代价函数波动大,训练结果不精确;太小则网络收敛速度慢,训练时间变长。本研究将学习率设置为0.001。每次试验运行50 epochs,1 epoch即1个完整的数据集通过神经网络1次且返回1次。每个epoch选取的样本数(batch size)习惯上设置为2的n次幂,这样可以加快计算速度,本研究将其分别设置为32、64、128和256,比较后最终将batch size设置为128。模型训练中使用Adam优化算法,该算法在非凸优化问题中有计算高效、所需内存少、适应于非稳态目标以及适合解决大规模数据和参数优化问题等诸多优势,具体算法如下。

式中,m为对梯度的一阶矩估计;v为对梯度的二阶矩估计;β1为一阶矩估计的指数衰减率;β2为二阶矩估计的指数衰减率;gt为时间步为t时的梯度;θ为更新的参数;α为学习率;ε为维持数值稳定性而添加的常数。

Adam优化算法超参数采用框架默认参数,其中,α为0.001;β1为0.900;β2为0.999;ε为10-8。经交叉验证,试验中设置隐含节点Dropout率为0.5,L2正则化参数为0.000 5。

本试验选用交叉熵损失函数(Loss),公式如下。

式中,yi为标签值;yi′为预值测。

1.4 病害监测Web平台构建

基于病害检测模型开发一款实时在线农作物病害识别Web服务平台,整体功能如图3所示。主要功能包括用户管理、检测、百科全书、社区共4个模块,其中,检测模块是该Web的核心。该平台首先通过TensorFlow Serving和Docker实现模型的部署,使用TensorFlow Serving在服务器上为训练模型提供高性能、支持并发、高吞吐量的API,使用Docker容器将多种服务以镜像的形式挂载其中,以Opencv、Emgu等计算机视觉算法库为工具,使用net进行开发。

图3 系统功能Fig.3 System function

该系统分为管理员和普通用户。管理员可通过对病害数据增、删、改、查等操作对系统进行维护,例如,通过输入作物相关信息以及对应图片,将作物相关信息存入后台,完善作物病害特征库;普通用户可通过上传图片识别病害,并显示该病害的基本信息和防治策略,也可查看病害图谱,了解病害的相关信息。

2 结果与分析

2.1 数据集样本分析

本研究检测的病害种类存在样本数量不均衡问题,以番茄数据集为例,检测的病害种类多达9种,数据集样本超过10万张,如图4所示。黄花曲叶病的样本数量为叶霉病、疮痂病等的数倍,该病害的样本数呈长尾分布。若单纯的以该数据集为输入,病害检测模型会偏重于样本数最多的病害类别,这将会导致预测结果产生较大误差。

图4 番茄样本分布图Fig.4 Distribution map of tomato samples

借鉴解决场景图生成中谓语估计有偏性问题的做法[15],利用2次有偏预测的差作为无偏预测,如图5所示。左边为事实因果图,右边为反事实因果图,其中,I是病害图像;X是提取的特征;Z是标签;Y是病害预测。在事实因果图中,有3个箭头指向Y,分别是X、I、Z,表示Y是由X、I、Z共同引起的组合效应;在反事实因果图中,X被干预,Z依然保持原始值,预测出Y;最后2个预测结果相减,得到最终的总直接效应(total direct effect,TDE),即最终的预测结果。

图5 病害识别的无偏预测Fig.5 Unbiased prediction for disease recognition

2.2 损失值和准确率分析

模型训练过程中,病害种类检测准确率、病害程度准确率及损失函数随训练周期的变化曲线分别如图6和图7所示。以番茄为例,随着训练的进行Loss函数平稳下降,最终稳定在0.1左右;病害种类(acc_kind)和病害程度(acc_degree)准确率随着训练的进行稳定上升,最终都达到90%以上。

图6 作物病害检测准确率变化曲线Fig.6 Change curve of crop disease detection accuracy

图7 作物病害Loss函数变化曲线Fig.7 Change curve of crop disease Loss function

由表2可知,病害程度识别准确率和病害种类识别准确率都达到了预期的要求,满足了检测病害的期望。添加SE模块后,识别准确率明显提高,由此可见,SE模块引入通道注意力机制加强了特征图,利用提取通道间的相关性增强有效特征并抑制无效特征,从而提升模型准确率。以番茄数据集为例,在病害种类多达9种的情况下,识别准确率仍能超过90%,病害程度识别准确率更是高达99%。综上所述,该模型算法能够有效地识别病害种类,且精度能够满足实际应用需求。

表2 检测结果汇总Table 2 Summary of test results

2.3 系统功能分析

本研究开发的作物病害智能图像识别系统的界面如图8所示。用户通过点击“上传图片”按钮提交需要识别的图片,待检测图片必需包含完整的叶片,且作物病害部位特征清晰;然后点击下方的“检测”按钮进行病害识别,系统后台会根据所训练的模型进行预测识别,再与数据库中的病害信息进行匹配;最后在界面右侧显示出识别后的病害名称、特征及相应防治策略等相关信息。

图8 病害检测结果Fig.8 Disease detection results

3 讨论

作物病害特征复杂,而现有作物病害程度分级模型存在精度不高、难以满足精准施药要求等问题,本研究利用卷积神经网络和迁移学习法对水稻、番茄、柑橘和苹果4种作物的病害叶片图像识别进行了研究。通过构建数据集,采用迁移学习技术与ResNet模型相结合的方法,进行了病害识别和病害程度分级的研究,结果表明,本研究构建的模型算法能够有效地识别病害,对病害程度识别的平均准确率为94.16%,对病害种类识别的平均准确率为92.45%。

针对数据集样本长尾分布的分布不均衡问题,常见的解决方案有3种:样本重采样,给频率较低的类别以较高的采样概率;Loss重采样,给稀有类别的病害以较高的损失权重;使用FocalLoss替代交叉熵损失函数。其中,FocalLoss能够自动惩罚学习较好的样本,使模型更关注于难例样本的学习。本研究借鉴了解决场景图生成中谓语估计的有偏性问题的做法,有效提高了模型的精度,进而提升了识别的准确率。

为方便用户快速准确地识别病害,本文基于c#.net core 构建了病害监测服务平台,利用Python语言和C#语言相结合开发了病害识别服务软件,能够准确识别病害的种类及程度,并给出相应的防治建议。

猜你喜欢

作物卷积准确率
基于3D-Winograd的快速卷积算法设计及FPGA实现
乳腺超声检查诊断乳腺肿瘤的特异度及准确率分析
不同序列磁共振成像诊断脊柱损伤的临床准确率比较探讨
2015—2017 年宁夏各天气预报参考产品质量检验分析
作物遭受霜冻该如何补救
四种作物 北方种植有前景
内生微生物和其在作物管理中的潜在应用
从滤波器理解卷积
高速公路车牌识别标识站准确率验证法
基于傅里叶域卷积表示的目标跟踪算法