基于深度学习的番茄叶部病害识别方法研究

2023-11-07 03:21王明英裴志远李宇豪李荣荣
农业灾害研究 2023年8期
关键词:残差番茄卷积

王明英,王 嘉,裴志远,李宇豪,李荣荣

1.山西省大宁县气象局,山西大宁 042300;2.山西省吉县气象局,山西吉县 042200;3.山西省曲沃县气象局,山西曲沃 043400

番茄是重要的蔬菜作物,全球年总产量达1.7亿 t,在蔬菜作物中位居首位。然而,我国番茄的病害不少于30种,其中严重发生、流行地区日趋扩大,且造成明显减产的病害超过10种,这些病害成为番茄高产稳产的一大阻碍[1]。因此,识别防治番茄叶部病害类型,能有效阻止病害传播并降低其造成的经济损失[2]。

柴洋等[3]通过选取5种番茄叶片病害部位较明显的特征,并根据该特征值采用贝叶斯分类器对番茄3种病害进行识别,准确率达到92%以上。郭小清等[4]根据番茄叶部病害的特点,对AlexNet采取多种尺度卷积、去除局部的归一化层等操作,减少了网络参数量,该模型的识别准确率可达到92.7%。胡志伟等[5]提出一种网络ARNet,在残差网络上引入注意力机制,提高了番茄病害识别的细粒度水平和鲁棒性,识别准确率可达到88.2%。

随着深度学习模型的不断发展,为适应更复杂的环境,网络层的设计都朝着深度化方向发展。然而,由于计算量大、存储成本高、模型复杂、硬件要求高等特性,使得深度学习无法有效地应用于轻量级移动便携设备[6-7]。因此,在保证模型识别准确率的前提下,应该尽量压缩模型复杂度。本研究分析了ResNet18网络的不足之处,并在其主体结构的基础上,采用了一种改进型网络—Multi-scale ResNet[8]。对该模型分别采用不同epoch进行训练,以判断模型的收敛情况和稳定性。

1 番茄叶部病害识别方法研究

1.1 试验流程设计

采用深度学习的通用流程进行试验,设置好训练参数后划分数据集,并对数据进行预处理、数据增强操作,然后将数据读入内存;构建网络模型,定义损失函数和优化器,然后使用该模型对读入数据集进行训练,将训练好的模型用于测试集,预测识别效果,对该模型的性能进行评估。

1.2 试验参数设置

本试验采用的软件环境为:Windows 64位系统,TensorFlow 2.4.0配合Cuda11.0进行训练,Python编程语言(Python 3.8.5),使用Jupyter Notebook实现。

硬件环境:计算机内存16 GB;处理器为AMD Ryzen 7 4800H with Radeon Graphics,2.90 GHz;GPU为NVIDIA GeForce RTX 2060,6 GB显存。

部分参数设置:网络批处理大小(batch-size)设置为32,样本输入尺寸采用224×224,所有网络模型迭代次数(epoch)均为20轮。

1.3 数据准备

1.3.1 数据集 本试验选取的数据集是来自PlantVillage的5种番茄叶片图像,包含4种病害标签和1种健康样本标签,图像总数为7 551张。表1为数据集详细信息,图1为番茄数据集病害样本示例。

图1 番茄数据集病害样本

表1 试验数据库 张

1.3.2 数据预处理与增强 原始数据集文件夹下有5个番茄类别文件,每个类别下有若干张同种病害图片,定义一个python文件用来划分数据集,通过随机打乱操作将原始数据集按照6∶2∶2的比例划分为训练集、验证集、测试集。

本研究中数据增强采用了7种方式:①随机左右翻转;②随机裁剪;③剪切或填充图像;④随机调节亮度,最大变化范围为原来的0.6;⑤随机调节色度,最大变化范围为原来的0.5;⑥随机调节对比度,最低设置为0.2,最高设置为1.8;⑦随机调节饱和度,最低设置为0.2,最高设置为1.8。

1.4 病害图像识别模型

1.4.1 ResNet18介绍 ResNet18一共有18层,网络输入为224×224×3,经过size=7×7、stride=2的大卷积核后图像降维到112×112,输出通道为64;经过一个size=3×3,stride=2的最大池化层后图像降维至56×56,输出通道不改变;然后进入残差部分,每一个残差块由2个basic-block组成,而basic-block将输入数据分为2条通道,一条通道将输入直接传到后边短接,另一条通道经过2个3×3卷积,2条通道进行相加并由经过Relu激活函数输出,第一次残差操作不使用下采样,图像尺寸为56×56,通道数仍为64,接下来每经历一次残差操作后图像降维至原先一半,通道数增加为原来2倍,经历3次残差操作后图像尺寸为7×7,通道数增加至512;最后连接池化层和全连接层。ResNet18通过残差连接解决了梯度消失的问题,然而在资源受限的场景下,该模型仍存在参数多、特征提取尺寸单一等问题。

1.4.2 改进型Multi-scale ResNet 本研究针对ResNet18的不足之处,采用了一种改进版本的Multi-scale ResNet,网络参数见表2。

表2 Multi-scale ResNet网络参数

该网络模型基于ResNet18的主体架构,在以下4个方面做了改进:

(1)残差层连接方式。在ResNet18中,网络只学习相邻2个卷积层的残差来更新参数,而改进后的模型使用了2层残差连接,在学习3个相邻卷积层误差的同时可以学习到相邻2个网络层的误差。

(2)特征图降维方式。ResNet18的降维卷积层放在残差模块里,然后将残差模块两两相连;改进后的模型将残差模块之间的特征图降维卷积层放置于2个残差模块之间,在学习层间误差的同时可以学到输出特征,有效地降低网络复杂度。

(3)特征提取尺度。ResNet18通过单尺度卷积层的堆叠实现图像特征提取,但现实中番茄叶片病害症状复杂,病斑部位、大小、颜色等均不相同,有些病害早晚期症状也不相同,因此改进后的Multi-scale ResNet进行多尺度特征提取来扩大感受野的范围。本网络将残差通道设置为双通道,第一个通道为size=7×7的卷积层叠加size=3×3的卷积层,第二个通道为size=5×5的卷积层叠加size=3×3的卷积层,最后输出时将2个通道相加,重复2次,构成多尺度特征提取残差模块。

(4)卷积核。由于改进后的Multiscale ResNet获取多尺度特征的同时会导致网络的参数增加,因此需要对大卷积核分解来压缩模型的参数量。大卷积核拆分有2种方法:对称拆分和非对称拆分,2种方法都可以保证分解后的卷积核感受野不改变且参数下降,理论分析非对称拆分参数量更少,效果更明显。

1.5 损失函数和优化器

损失函数也叫目标函数,通过计算预测出的结果与真实结果之间的距离衡量当前任务是否已经完成。本试验中,读取标签的方法是建立一个字典类型的数据结构,将标签转换为对应的整型索引,由于标签是数字编码,且属于单标签多分类问题,因此采用的损失函数是SparseCategoricalCrossentropy()。

优化器是将损失函数作为其第一个参数,决定采用什么样的方式对网络进行更新,以降低损失值。在本试验中,优化器使用的是SGD的一种变体形式——RMSprop。

1.6 模型训练

对模型进行编译后,将数据加载进模型开始迭代训练,本试验中batch size=32,epoch=20。

1.7 模型评估与预测

完成训练循环后,保存模型的权重信息,将训练好的模型应用于测试集数据,计算其准确率,完成模型评估。本研究用到的模型量化指标如下。

(1)准确率。在测试集上得到正确的分类结果的样本数所占参与测试的总样本的比率。计算公式如下:

(2)模型参数和模型尺寸。随着网络模型的精度提高,模型尺寸随之发生变化,过于复杂庞大的网络模型需要大量的空间和运算开销,使得在硬件资源环境受限的情况下具有一定的局限性,因此模型尺寸的大小也是评估模型的一个重要指标。

2 结论

表3为Multi-scale ResNet在番茄叶部病害数据集上的正确分类识别率,图2为该模型单张图片预测结果图。

综上可以得出,多尺度的残差模块与小卷积核的结合会产生意想不到的效果。本研究采用的改进型的网络模型可以使得识别准确率与网络复杂度之间达到较好的平衡,为番茄叶片病害识别系统提出了一种更好的模型,为硬件资源受限、对模型大小有限制要求的边缘部署提供了新方法。

猜你喜欢
残差番茄卷积
基于双向GRU与残差拟合的车辆跟驰建模
番茄炒蛋
秋茬番茄“疑难杂症”如何挽救
基于3D-Winograd的快速卷积算法设计及FPGA实现
番茄果实“起棱”怎么办
基于残差学习的自适应无人机目标跟踪算法
基于递归残差网络的图像超分辨率重建
从滤波器理解卷积
基于傅里叶域卷积表示的目标跟踪算法
平稳自相关过程的残差累积和控制图