刘拥民,胡 魁,聂佳伟,谢铁强
(1 中南林业科技大学 计算机与信息工程学院/智慧林业云研究中心,湖南长沙 410004;2 华南农业大学 动物科学学院,广东 广州 510642)
预计到2030年世界总人口将超过85亿,而随着气候不断变化和城市急剧扩张,全球可用耕地面积一直在萎缩,同时气候变化带来的农作物病虫害问题不断攀升,粮食安全问题无疑成为当今世界面临的紧急性问题,以中国为例,根据农作物病虫害监测网站的报告,长江流域的广大产粮区,2017年农作物病虫害发生面积同比增长26.6%,仅2020年,中国农作物重大病虫害累计发生面积就高达3亿hm2,病虫害不单影响粮食产量,还可能带来重大经济损失[1-3]。
随着深度学习的不断发展,特别是在农作物病虫害识别领域的应用研究不断深入,通过对病害图像的特征提取、分类识别,能够做到对农作物病虫害的正确识别和及时预防,大大节省人力、物力,有望将经济损失降到最低[4-5]。基于深度学习的农作物病虫害识别流程包括数据的采集、训练模型的构建以及推理验证[6-7]。陆健强等[8]提出了一种基于Mixup 算法和卷积神经网络的柑橘黄龙病识别模型,通过数据增强和迁移学习,最终模型的识别准确率达到94.29%。黄林生等[9]以ResNet为基础模型,结合Inception模块,对不同尺度病害特征进行提取,并引入注意力机制,提出了在复杂环境下的农作物叶片病害识别模型,平均识别准确率达到了95.62%。骆润玫等[10]以YOLOv5s为基础模型,通过引入多尺度特征融合模块,提出了一种基于YOLOv5-C的广佛手病虫害识别方法,在复杂背景下,识别准确率达到93.61%。于合龙等[11]提出一种面向水稻病虫害的知识图谱构建方法和基于图像的水稻病虫害检索算法,诊断算法正确率达到86.25%。Chen等[12]以水稻病害为研究对象,利用VGGNet在大型标记数据集ImageNet上进行预训练来初始化权值,然后进行迁移学习,将预训练得到的初始化权值转移到目标数据集上进行训练,试验表明,复杂的背景条件下,对水稻病害图像识别平均精度达到92.00%。袁培森等[13]利用 Inception模块的特征提取能力,提出了一种基于迁移学习结合ResNet-v2 网络的菌菇识别方法,以此来提高对菌菇图像细粒度特征提取的能力,对细粒度菌类表型识别的准确率达到93.94%。上述基于深度学习的农作物病虫害识别方法,为目前农作物病虫害识别研究提供了重要参考。
但基于深度学习的农作物病虫害识别方法依然存在着不足,当前农作物病虫害数据集大多为室内采集图像,然而在实际应用中,自然环境下的样本图像具有复杂背景,在训练过程中模型容易受到复杂背景的影响,深度学习训练模型容易学习到复杂背景中的无关特征,忽视对微小病害特征的提取,导致识别准确率下降。并且在自然环境条件下,田间作物叶片往往处于强烈光照、运动摇曳的状态,这会影响到模型对病害特征的提取。同时,在实际场景中拍摄的数据集样本数太少,在训练中容易产生过拟合现象,在模型验证过程中会导致识别准确率急剧下降。针对以上问题,本研究提出一种基于改进ResNet的多尺度双分支(Multi-scale dual-branch,MSDB)结构水稻病虫害识别模型(MSDB-ResNet),首先利用随机亮度、运动模糊等数据预处理方法来模拟复杂环境下作物叶片状态,让深度学习模型提前训练这类复杂样本图像,加强模型的泛化能力和鲁棒性,同时对获取到的5 932张水稻病虫害图像进行数据增强处理,将数据集扩充到20 000张,以缓解训练中的过拟合现象。在模型构建中,为了更好地提取微小病害特征,同时避免过拟合的发生、提高识别准确率,在ResNet模型的基础上,引入ConvNeXt中的残差模块,以优化ResNet模型中的残差块计算比例,同时构建多尺度的双分支结构,利用不同尺度的卷积核分别提取不同尺度的病害特征,然后进行特征融合,最后经过Softmax层输出分类结果,以解决复杂背景导致的微小病害难以提取的问题,最终提高模型识别准确率。
1.1.1 试验数据获取 本数据集包含4类水稻叶片病害图片,共5 932张,其中,水稻白叶枯病1 584张,水稻稻瘟病1 440张,水稻褐斑病1 600张,水稻桐木病1 308张,均拍摄于自然环境下,保存为JPG格式[14],图像大小调整为224像素×224像素。按照8∶2的数量比例将该数据集划分为训练集和验证集,在随机打乱的情况下,进行训练和验证。部分样本图像如图1所示。
图1 水稻病害样本图片Fig.1 Sample images of rice diseases
1.1.2 数据预处理 现实场景中,强烈的光照直射会影响模型对病害特征的提取,水稻叶片往往相互交错,互相遮挡使病害特征更加难以提取,晃动的叶片不容易聚焦,考虑到以上实际因素,本文通过高斯噪声、随机遮挡、随机亮度、运动模糊等图像预处理方法[15],对原始数据集进行预处理。在对原始数据集图像进行批量化预处理后,构建新的增强数据集。让模型在训练过程中,能够学到更多复杂环境下的病害特征,以达到模拟实际场景的目的,提高模型验证准确率。图2为部分图像预处理样本。
图2 数据预处理样本图片Fig.2 Sample images of pre-processing
1.1.3 数据增强 在农作物病虫害识别领域,数据增强的方法主要应用在小样本数据集或病虫害类别图像样本不平衡数据集上,以此来增加样本数或让数据集尽量平衡。随着深度学习模型的深入,参数越来越庞大,为了让小型数据集能够正常训练,提高准确率,数据增强的方法尤为重要,由于本研究的数据集样本数量不足,各病害类别数量存在不平衡的情况,因此通过镜像、裁剪、缩放、平移和旋转等数据增强方法[16],在不改变图像内容的前提下,通过空间几何变换,改变图像中的像素空间位置,增加样本数量,避免过拟合的发生。本研究使用的水稻病害数据集包含4类水稻病害,共5 932张,使用数据增强方法,将每类病害样本扩充到5 000张图片(增强数据集),其中,训练集和验证集数量比为1∶4,共计20 000张图片。
1.2.1 卷积神经网络理论 卷积神经网络的组成部分主要包括卷积层、池化层和全连接层。卷积层通过卷积核对输入的图像样本进行卷积计算,提取图像中的关键特征,卷积层的输出是输入在空间维度上某一级的表征,也叫特征图(Feature map)[17],卷积层输入和输出之间的关系可用式(1)表示。
式中,Hi表示第i层的特征图;Hi-1表示第i-1层的特征,即上一层的特征输入当前卷积层;Wi表示第i层的权重,为可学习参数;bi为第i层的偏置量;φ()为激活函数。池化层可缓解卷积层对位置的过度敏感性,分为最大值池化和平均池化,分别取池化窗口中输入元素的最大值和平均值作为输出,其输出通道和输入通道保持一致。池化层计算公式如式(2)所示。
式中,Xlj代表当前池化层的输出特征,down( )为下采样函数,为上一层的特征向量,s为池化窗口大小。经过卷积层的卷积运算和池化层的池化运算之后,将输出的特征向量输入全连接层中,对提取的特征进行分类。本研究中,采用Softmax分类器进行分类计算,具体的计算公式如式(3)所示。
Softmax函数是0~1之间的映射,由于各类别输出的概率值之和不等于1,利用ezj对每个类别的输出概率进行e指数运算,然后进行求和最后得出的结果Softmax(Z)j为0~1。由于Sigmoid极容易导致梯度消失问题,为解决该问题,本研究中采用非饱和激活函数ReLU作为本试验的激活函数[18]。
考虑到本研究为多分类试验,采用随机梯度下降(Stochastic gradient descent,SGD)作为优化器[19]。具体的计算如式(4)所示。式中,α代表步长,hθ(x(i))代表假设函数(Hypotheses function),θj的初始值可为任意值,按照梯度下降的方向不断迭代、更新参数。
1.2.2 ResNet残差理论 为解决梯度消失问题,2016年He等[20]提出了ResNet,其核心思想是上一层输出的X,在经过本层的卷积计算得到F(X)后,将X与F(X)相加得到H(X),这样做的目的是在进行反向传播求导时,即使F(X)梯度趋近0,梯度消失时,X这一项还会留下1,巧妙的避免了在反向传播时梯度消失的问题。ResNet中核心的残差结构如图3所示。
图3 ResNet 残差块结构Fig.3 ResNet residual block structure
尽管ResNet网络良好地避免了过拟合的问题,但还存在可改进的地方,ResNet模型在设计之初,模型主要由含有不同数量瓶颈模块的4个阶段组成,每个阶段中的瓶颈模块数量比例很大程度上是根据经验提出来的,其中ResNet50的比例为3∶4∶6∶3,ResNet101的比例为3∶4∶23∶3,ResNet152的比例为3∶8∶36∶3。可见,每个阶段中的瓶颈模块数量比例还存在更加优异的比例,优化模型性能。
1.2.3 ConvNeXt残差模块 2022年Facebook人工智能研究院提出ConvNeXt卷积神经网络[21-22],在ImageNet top-1数据集上实现了87.8%的精度,超过了此前Swin transformer取得的最高准确率(81.3%)[23-24],其中ConvNeXt网络中的残差块计算比例借鉴Transformer的设计比例(1∶1∶3∶1),ConvNext网络中的残差块比例为3∶3∶9∶3,将模型的精度从78.8%提高到79.4%。ConvNeXt模型中残差块的提出,优化了每个阶段中的瓶颈模块的数量比例。本研究以ResNet50为基础模型,将ConvNext中的残差块引入ResNet50,通过优化残差块的数量比例,在原有基础上提高原始ResNet50的模型精度。具体模型参数如表1所示,模型整体架构由2个分支构成,每个分支主要由1个根茎层和4个阶段组成,根茎层由一个7×7的卷积层和一个3×3的最大值池化层组成,以保持输出特征分辨率不变。4个阶段包含不同数量的瓶颈模块,其比例为3∶3∶9∶3。
表1 模型计算参数Table 1 Model computation parameter
1.2.4 多尺度双分支结构 模型中常见的卷积核大小为1×1、3×3、5×5和7×7,由于卷积核的大小各异,模型在训练中容易出现丢失小特征,或是容易学习到复杂背景中的特征的现象,导致识别准确率不高[25]。针对该问题,本文提出基于改进ResNet的多尺度双分支结构,以ResNet-50为基础架构,构建双分支的ResNet模型,将大卷积核和小卷积核分别放在不同的2条支路中,分别用来提取不同大小的病害特征,同时降低复杂背景的影响。模型框架如图4所示,输入图像经过数据预处理和数据增强后,分别输入2条不同的分支中,在每条分支前经过含有1个由7×7的卷积层、ReLu激活层以及1个3×3的最大值池化层组成的基茎层。之后进入4个不同的阶段中,其中第1个、第2个和第4个阶段中含有3个瓶颈模块结构,第4个阶段中含有9个瓶颈模块结构。瓶颈模块结构如图4所示,先经过1个带有1×1卷积层的残差连接1个2个恒等映射X的残差连接,以避免模型训练中过拟合的发生。分支1中的瓶颈模块结构,其卷积层构成主要为1×1、3×3卷积核,分支2中的瓶颈模块结构,其卷积层主要由5×5卷积核构成,通过不同大小的卷积核算子,提取不同尺度的特征,避免细微病害特征被复杂背景影响,导致关键病害没有提取到。经过2条不同尺度的网络分支提取特征后,进行ReLu激活连接和全局均值池化,输入Concat层进行特征融合,最后输入全连接层和Softmax层,输出分类结果。
图4 MSDB-ResNet 框架Fig.4 MSDB-ResNet architecture
试验软件环境为 Windows 10 64位系统,采用Pytorch深度学习开源框架,选用 Python作为编程语言。计算机内存为 16 GB,搭载AMD Ryzen 7 5800H with Radeon Graphics处理器,并采用NVIDIA GeForce RTX 3 070 Laptop 显卡。
本研究采用SGD优化算法、CrossEntropyLoss损失函数,每批次训练样本数(Batch size)设置为32,训练轮数为20,初始学习率设置为0.01,并设置动量为0.9,权重衰减(Weight decay)设置为1×10-4。
本文采用平均识别准确率(Accuracy)作为模型的评价指标:
式中,c表示类别数,nj表示第j类数量,njj表示第j类预测正确数量。
为验证本研究所提出的模型性能,对数据预处理、数据增强方法以及模型改进方法分别进行了多次试验。其中,对数据预处理和数据增强方法分别在基础模型ResNet-50和MSDB-ResNet模型上进行对比试验。对模型改进方法分别在原始数据集、数据预处理和数据增强后的数据集上进行试验。试验结果如图5所示。
图5 准确率曲线Fig.5 Accuracy curves
ResNet-50模型对原始数据集识别准确率为96.68%,对增强数据集的识别准确率为98.26%,提升了1.58个百分点。可见,利用高斯噪声、运动模糊、随机亮度、随机遮挡等数据预处理和数据增强方法,能够提升模型识别准确率。ResNet-50模型对原始数据集的识别准确率为96.68%;引入ConvNet残差模块,同时构建双分支的MSDBResNet模型对原始数据集的识别准确率为99.06%,较ResNet-50提升了2.38个百分点。可见,MSDB-ResNet具有良好的性能,能够显著提升模型识别准确率。MSDB-ResNet对增强数据集的识别准确率为99.10%,相比于原始的ResNet50未进行数据增强所取得的准确率,显著提升了2.42个百分点。可见,MSDB-ResNet能够提升水稻病虫害识别准确率。
为验证模型的鲁棒性和泛化能力,在使用相同的增强数据集的情况下,将MSDB-ResNet与AlexNet、VGG、DenseNet和ResNet进行对比试验,结果见图6,在使用相同增强数据集的情况下,AlexNet和VGG-16对验证集识别的准确率分别为95.07%和95.79%,远低于MSDB-ResNet的99.10%,说明在复杂环境背景下,不断增加网络层数不一定会提高模型识别准确率,甚至可能会受复杂背景所影响,从而导致模型识别准确率降低,而MSDB-ResNet模型对农作物的病虫害识别具有良好的性能。DenseNet-121与ResNet-50对验证集识别的准确率分别为96.53%和96.25%,同样低于MSDB-ResNet所取得的99.10%,可见,含有相同残差连接的DenseNet-121与ResNet-50在相同数据集上取得的识别准确率远低于MSDB-ResNet,模型改进方法具有一定的可行性。
图6 模型对增强数据集的准确率与损失值曲线Fig.6 Accuracies and loss curves of models to augument dataset
如图6所示,在准确率高于其他模型的情况下,MSDB-ResNet模型训练收敛速度同样远高于模型AlexNet、VGG、DenseNet和ResNet。以上结果表明,本研究所提出的MSDB-ResNet水稻病虫害识别模型,在复杂背景环境下,具有良好的鲁棒性和泛化能力。图7为模型的卷积核与特征图可视化图。
图7 卷积核与特征图可视化Fig.7 Visualization of the convolutional kernel and feature map
农作物病虫害一直是影响世界粮食产量的重要因素,由于优异的分类识别性能,深度学习中的卷积神经网络广泛应用于农作物病虫害识别领域。本研究以水稻白叶枯病、水稻稻瘟病、水稻褐斑病、水稻桐木病作为研究对象,提出了1种新的卷积神经网络模型MSDB-ResNet,用于水稻病害的识别。利用高斯噪声、随机亮度、随机遮挡、运动模糊等数据预处理方法对水稻病害数据集进行数据预处理、数据增强和数据平衡,将5 932张原始数据集扩充到20 000张。以ResNet-50为基础框架,在此基础上引入ConvNeXt中残差模块,将ResNet-50中4个阶段中的瓶颈模块比例由3:4:6:3调整为3:3:9:3,以此为基础,构建双分支结构,将输入的病害图片分别输入2条分支之中,以提取不同大小的病害特征,经Concat层进行特征融合,最后使用Softmax输出结果。试验结果表明,该模型在水稻病虫害数据集上具有良好的识别性能,在经过数据预处理和数据增强的水稻病害数据集上,实现了99.10%的病害识别验证精度,相比于ResNet-50 96.68%的识别准确率提高了2.42个百分点 ,并明显高于AlexNet、VGG-16、DenseNet-121等经典深度学习模型,具有良好的鲁棒性和泛化能力。后续计划进行模型轻量化研究,减少训练所需的数据集样本,并打算将其部署在移动设备上,应用在实际环境中,进行农作物病虫害识别。