基于多尺度特征融合的柑橘病虫害图像识别方法
2022-03-30闭吕庆莫燕斌覃斌毅万海斌
黄 平,闭吕庆,莫燕斌,覃斌毅,林 林,万海斌
(1.广西大学 计算机与电子信息学院,广西 南宁530004;2.玉林师范学院 物理与电信工程学院 智能信息与通信技术研究中心,广西 玉林537006;3.厦门大学 电子科学与技术学院,福建 厦门361005;4.玉林市农业科学研究所,广西 玉林537006)
0 引言
柑橘是世界主要的大宗水果之一,在我国种植面甚广,种植历史已达4 000多年,柑橘良好的种植适宜度和经济价值,在广西得到广泛的种植[1]。柑橘的品质不仅受气候条件、环境条件、种植技术的影响,也深受病虫害的影响[2]。柑橘的病虫害尤以黄龙病、潜叶蛾和线虫病等影响较大,严重时可导致整个柑橘片区绝收[3]。因此,对柑橘病虫害快速、准确地识别诊断,成为了当前柑橘种植产业需要迫切解决的课题。目前,柑橘病虫害的识别诊断方法主要有目测诊断法和病理特性检测法2种。目测诊断法需要农业技术人员的现场目测并做出诊断,由于存在检测人员主观性的差异,导致准确率波动较大,稳定性不高。病理特性检测法主要使用生物、物理、化学等检测手段对病虫害样本进行检测分析,并以此给出结论[4-6]。此类方法准确率较高,但依靠相关检测设备和专业技术人员才能完成,检测时间长,难以大范围推广。
近年来,基于人工智能的图像识别技术得到了快速发展,相关产业研究人员利用图像处理和机器学习相结合的方式实现了对玉米[7]、水稻[8]、小麦[9]、烟草[10]、水蜜桃[11]和柑橘[12]等农作物病虫害图像的识别。此类方法通常先使用图像分割算法对农作物病虫害叶片图像的病斑进行分割,然后提取病斑的区域形状特征及纹理特征[13],再采用反向传播(BP)网络[14]、支持向量机(SVM)分类[15]和K均值聚类(K-mean)[16]等算法对病斑特征进行识别和分类。由于对图像特征提取的模式易受人为主观因素的影响,使得识别模型通用性较差,识别精度较低。与此相比,以深度学习为标志的卷积神经网络(Convolutional Neural Network ,CNN)分类模型是以原始数据为输入,以分类任务为输出,自动抽取任务所需的特征,无需人为设定,避免了人为因素对模型分类性能的影响[17]。因此,许多研究人员把AlexNet[18],GoogleNet[19],VGGNet[20],ResNet[21]等经典模型应用于农作物病虫害图像识别[22-23],比传统机器学习的方法取得了更好的识别效果。但此类模型需在大型数据集和高计算资源支持下,才能取得较好的图像分类效果。
农作物病虫害图像数据集由于受到多种因素的影响,往往存在样本数量不足、不平衡的问题。为此,可通过数据合成[24]、数据增强[25]等方法在数据层面上对数据集进行改善,也可通过迁移学习的方法[26],以解决由于样本数据不足而导致模型识别精度低的问题。例如,刘洋等[27]使用轻量化MobileNet模型通过迁移学习的方式,对6种葡萄病害数据集进行识别,其平均准确率为87.5%。文献[28]在VGG-16模型基础上,通过迁移学习,对玉米大斑病叶、锈病叶病害图像平均识别精度达到了95.33%。针对单一农作物种类病虫害识别模型存在一定局限性,王东方等[29]基于迁移学习针对深度残差网络SE-ResNeXt-101模型进行改进,使其适应多种农作物病虫害类型的检测,对不同种类农作物的不同病虫害分类平均准确率达到了98%。
目前,在柑橘病虫害图像数据不均衡、小样本、特征演变(黄龙病不同病害阶段的特征差异较大)、特征不明显、多类别的情况下仅使用单一模型进行识别不能取得较好的识别效果[30]。因此,本文针对柑橘(广西容县沙田柚)病害特征相似度较高的黄龙病、潜叶蛾和线虫病等,设计了一种新的VGG19-INC组合模型,该模型使用VGG19骨干网络作为基本特征提取器,获得柑橘病虫害图像的基本纹理、轮廓、病害局部区域特征,在此基础上添加Inception高维特征融合模块,实现了对柑橘病害细粒度特征的进一步提取,2种卷积模块组合的方式对病害高度相似、特征较为细微的柑橘病虫害图像的特征提取更为有效,分类效果更好,使新模型具有较高的识别精度,具备较强的泛化能力。
1 改进的CNN柑橘病虫害检测模型
1.1 VGG19-INC网络模型
VGG19是由牛津大学和谷歌公司的研究人员开发的一种经典CNN[20]。它采用级联网络结构,由16个卷积层和3个全连接层组成;每个卷积层使用3×3卷积核,在卷积层之间有共5个最大池化层;网络的最后一层是Softmax分类器。其结构如图1所示。
图1 VGG19模型结构Fig.1 Structure of VGG19 model
由于VGG19模型使用固定的3×3卷积核,感受野固定,容易忽略某些细微特征,对细粒度特征的提取不足。因此,在利用该模型对相似度较高的柑橘黄龙病早期、线虫病害图像、健康叶片进行识别分类时识别率较低。此外,VGG19模型使用了3个全连接层,参数量达到了143 MB,使得其对计算资源的需求较大,模型训练慢,不利于部署在移动端。
针对上述问题,本文提出的VGG19-INC模型保留了VGG19模型的前4个卷积层和池化层,并使用1个的批标准化(Batch Normalization,BN)卷积层和2个Inception模块替换VGG19的第5卷积层;使用1个全局池化(Global Average Pooling,GAP)层替换VGG19模型的全连接层,最后使用一个1×4的Softmax层,实现对4种柑橘病虫害图像的分类。VGG19-INC的网络结构如图2所示。网络模型中共有10个卷积层、4个池化层、1个BN卷积层、2个Inception层、1个GAP层和1个Softmax层。
图2 VGG19-INC模型结构Fig.2 Structure of VGG19-INC model
该模型由3部分组成:第1部分是预训练模块,使用VGG19的预训练权重实现图像轮廓、纹理等特征的提取;第2部分是高维特征提取模块,通过Inception模块的多特征融合特性,实现对病虫害的高维特征融合;第3部分是特征矩阵降维和分类模块,实现减少计算参数和分类的作用,其算法流程如图3所示。
图3 VGG19-INC模型算法流程Fig.3 Algorithm flow chart of VGG19-INC model
1.1.1 批归一化处理
如图2所示,VGG19-INC模型在VGG19骨干网络和Inception模块之间加入了一个BN卷积层,并在BN卷积层中使用Swish激活函数[32]代替Relu激活函数,以加快模型的收敛速度,提高模型的识别精度,减小过拟合。
1.1.2 Inception高维特征提取模块
在VGG19-INC模型中,图像高维特征的提取由Inception模块来实现,它采用了1×1,3×3两种不同的卷积核进行堆叠,通过并行执行多个卷积运算,最后将各个卷积运算输出结果连接为一个高维的特征图,因此获得了更好的图像表征,如图4所示。与VGG19采用的3×3相卷积层比,Inception模块增加了网络的深度与宽度,提高了网络对尺度的适应性,因此获得了不同大小的感受野。
图4 Inception模块结构Fig.4 Structure of Inception module
1.1.3 全局池化层
(1)
图5 特征矩阵降维流程Fig.5 Flow chart of feature matrix dimension reduction
1.2 迁移学习
在传统的CNN图像分类任务中,模型为了获得较高的识别精度,必须有足够多的训练样本,同时训练样本与测试样本需满足独立同分布的条件[26]。但现实应用中,很多场合难以满足该条件,因此,将模型在源域数据集中学习到的知识应用于目标域的迁移学习方法,是解决由于样本数据量少而导致网络模型分类效果不佳问题的一种有效手段。鉴于此,本文也采用了迁移学习与CNN相结合的方法实现柑橘病虫害的识别。在此过程中,首先使用ImageNet图像数据集对VGG19模型进行预训练,获得预训练权重等参数,然后冻结VGG19模型的前4个卷积层,并微调第5个卷积层和全连接层,最后使用柑橘病虫害数据集进行训练,以获得泛化能力更强和识别精度高的柑橘病虫害图像识别模型。
1.3 柑橘病虫害图像识别流程
柑橘病虫害图像的鉴别流程如图6所示,可分为4个过程:数据集的获取与增强、VGG19模型预训练、VGG19-INC模型的组建、迁移训练与微调。试验过程首先开展病虫害图像样本的采集和标记,并使用图像增强方法丰富数据集;接着使用ImageNet数据集对VGG19模型预训练,获得预训练权重;再通过对VGG19模型结构的微调获得新模型;最后通过使用柑橘病虫害数据进行训练,把训练好的模型应用于未知图像的分类预测,最终得到柑橘病虫害图像识别的结果。
图6 柑橘病虫害图像识别流程Fig.6 Image recognition flow chart of citrus pests and diseases
2 试验数据
2.1 PlantVillage公共数据集
PlantVillage公共数据集提供了16种植物,共27类病害叶片和11类健康叶片的图像。由于该数据集分布不平衡,本文通过使用数据增强的方法,使每种类型图片数量均为1 000张,总共34 200张图片,并按8∶2的比例划分训练集和测试集。实验验证时,选取其中的桃子斑点病、柑橘黄龙病、番茄黄曲叶病、南瓜白粉病和苹果健康叶片图像等5种类型各1 000张图像作为训练与测试数据。病虫害图像示例样本如图7所示。
(a) 桃子斑点病
(b) 柑橘黄龙病
(c) 番茄黄曲叶病
(d) 南瓜白粉病
(e) 苹果健康
2.2 柑橘病虫害图像数据
柑橘(沙田柚)病虫害数据集来源于广西壮族自治区玉林市农业科学研究所,病虫害图像采集自玉林市容县千秋村沙田柚种植基地,包含了黄龙病、潜叶蛾、线虫和健康等3种柑橘常见病虫害和健康叶片样本。在光线充足条件下,使用尼康3100数码相机拍摄,像素大小为2 992 pixel×2 000 pixel。图像样本示例如图8所示。
(a) 潜叶蛾
(b) 黄龙病早期
(c) 线虫
(d) 健康
2.3 图像数据增强与预处理
由于样本数量不足且不均衡,本文采取了水平、垂直翻转、随机水平和垂直平移等数据增强技术对每种样本进行了扩充,并随机选取其中的500张作为实验数据集;按8∶2的比例划分为训练集与测试集,然后分别用1,2,3,4对应健康、黄龙病、潜叶蛾、线虫4种类别进行了标注。
图像预处理可采取滤波、均衡化等方法对图像进行处理,以消除图像噪声,恢复真实信息,增强可检测性。但由于本文所采集的图像样本均是在环境条件良好的情况下拍摄所得,图像已具备了较高质量,因此为了最大限度地保持原始病症特征,未对图像进行过多处理,仅是将其大小裁剪为VGG19-INC网络模型所需的224 pixel×224 pixel。
3 模型训练
3.1 试验平台和试验参数设置
试验使用TensorFlow框架完成训练和测试。硬件环境Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10 GHz CPU,64 GB内存和NVIDIA GeForce GXT 1080 Ti GPU,12 GB显存。软件环境CUDA Toolkit 10.2,CUDDN V7.6;Python3.7.6和TensorFlow-GPU2.2;Windows10 64 bit 操作系统。
试验使用Inception v3,VGG19,Resnet50,Densenet201模型与VGG19-INC模型对柑橘病虫害图像数据集和PlantVillage部分数据集进行迁移学习训练。训练的参数均使用随机梯度下降(Stochastic Gradient Descent,SGD)优化方法;SGD算法中动量因子设置为0.8;学习率为0.000 1;学习速率的衰减系数为10-6;batch size设置为24;进行100轮次的训练。
3.2 模型评价指标
试验使用准确率(Accuracy)、精确率(Prencision)、召回率(Recall)、F1得分(F1 score)来评价模型指标:
Accuracy=(TP+TN)/(TP+TN+FP+FN),
(2)
Prencision=TP/(TP+FP),
(3)
Recall=TP/(TP+FN),
(4)
F1=2×Precision×Recall/(Precision+Recall),
(5)
式中,TP是真实值为正且预测也为正的样本数量;FP是真实值为负但预测为正的样本数量;FN是真实值为正但预测为负的样本数量;TN是真实值为负且预测也为负的样本数量。
4 结果与分析
4.1 PlantVillage公共数据集测试结果与分析
对PlantVillage公共数据集进行迁移学习训练,经过100轮次训练后,各模型的准确率、损失函数曲线如图9所示。
(a) 准确率曲线
(b) 损失函数曲线图9 各模型的准确率曲线、损失函数曲线Fig.9 Accuracy curve and loss function curve of each model
由图9可以看出,在PlantVillage数据集数据充足条件下,经过70轮次训练后,各模型的训练和验证准确率曲线震荡变小并趋于平缓,说明迁移学习的方法可以加速各模型训练的过程。在经过100轮次的训练后,VGG19-INC模型在训练集和验证集上准确率分别为97.97%和94.03%,损失值分别为0.017 9和0.188,表现优于其他模型。
使用VGG19-INC模型对桃子斑点病、柑橘黄龙病、番茄黄曲叶病、南瓜白粉病和苹果健康叶片图像5种类型图片各100张测试的评价结果如表1所示。
表1 VGG19-INC模型检测结果评价指标
由表1可以看出,VGG19-INC模型对5种类型植物病虫害的图像识别的准确率的平均值为98.00%,精确率的平均值为95.10%,召回率的平均值为95.00%,F1得分平均值为95.00%。5种类型图像的评价指标都比较均匀,模型表现良好。
4.2 柑橘病虫害数据集测试结果与分析
对柑橘病虫害数据集进行迁移学习训练,经过100批次训练后,各个模型的训练准确率、损失函数曲线如图10所示,模型的性能检测结果如表2所示。
(a) 准确率曲线
(b) 损失函数曲线
表2 100轮次后各个模型性能及检测结果
由图10和表2可以看出,在柑橘病虫害数据集规模较小、病害图像较为相似的条件下,经过100轮次训练,VGG19-INC模型取得了较高的准确率和较低的损失值;在训练集和验证集上,准确率分别为99.05%和98.47%。在训练集上比VGG19,Resnet50,Inceptionv3,Densenet201模型分别高22.26%,14.47%,5.18%和0.24%,在验集上分别高22.36%,7.92%,10.84%,0.55%。同时,VGG19-INC模型损失函数值为0.041 5,比其他模型分别低1.108 5,0.217 2,0.398 7,0.065 4,分类效果优于其他模型。
在模型的损失和准确率收敛方面,VGG19-INC模型收敛最快,在第20轮次迭代左右趋于收敛,相对于其他模型,VGG19-INC模型可在最短时间内训练出最优的模型;而收敛速度最慢、准确率最低、损失值最高的是VGG19模型,其训练准确率和验证准确率曲线在80轮次内还存在上下波动的情况,这是由于VGG19模型使用固定3×3卷积核,使得感受野固定,对部分细微差异的柑橘病虫害图像特征的提取效果不明显,导致了模型识别准确率较低,收敛速度慢。Resnet50,Inceptionv3,Densenet201模型在训练过程中比较平稳,经过80轮次训练后各模型的训练准确率和验证准确率曲线趋于平缓,差值固定也较小,模型逐渐趋于收敛。
此外,通过表2可以看出,在这5种模型中,VGG19模型的参数数量和权重占用空间最大,平均测试时间最长,平均准确率为77.91%。Densenet201模型参数和权重占用空间最小,平均准确率为81.38%,平均测试时间为0.32 s,可以取得空间和平均准确率的平衡。VGG19-INC模型平均准确率最高,为95.25%,分类性能最好。这是由于VGG19-INC使用全局平均池化层代替了VGG19的全连接层,比VGG19模型中的1.42×108个权重参数减少到了4.18×107个,参数减少率达到了70.56%,有效地提高了模型的训练速度与平均测试速度,同时把模型的权重减小为163 MB,有利于模型在移动端的部署。
图11为各模型的分类试验的混淆矩阵,为了测试模型的泛化能力,本文把VGG19-INC模型与在训练集和验证集表现较好的Densenet201模型做了对比,这2种模型的准确率、精确率、召回率和F1得分如表3所示。
(a) VGG19分类混淆矩阵
(b) Resnet50分类混淆矩阵
(c) Inceptionv3分类混淆矩阵
(d) Densenet201分类混淆矩阵
(e) VGG19-INC分类混淆矩阵
由图11和表3可以看出,Densenet201模型精确率为45.10%~100%,平均值为75.18%;F1得分为56.64%~67.54%,平均值为63.21%;准确率为69.75%~86.75%,平均值为81.38%;召回率为49.00%~97.00%,平均值为62.75%。各项评价指标分布不均匀,差值较大,平均值偏低。VGG19-INC模型的精确率为83.62%~95.34%,平均值为90.98%;F1得分为88.17%~93.65%,平均值为90.45%;准确率为94.50%~96.75%,平均值为95.25%;召回率为82.00%~97.00%,平均值为90.5%。各项评价指标分布均匀,平均值均在90%以上,说明经过结构改进的模型优于Densenet201模型,并具备良好的分类性能。
表3 VGG19-INC、Densenet201模型检测结果评价指标
4.2 Swish与Relu激活函数比较
本文使用带有Swish激活函数的BN层来提高模型的训练精度,经过100轮训练后,使用Swish激活函数的模型比使用Relu激活函数的训练精度提高0.85%,验证精度提高0.55%,训练损失降低0.019 6,如表4所示。
表4 以Swish和Relu为激活函数的模型精度和损失率
5 结束语
针对柑橘病虫害的传统识别方法在特征提取方面存在效率不高的问题,本文利用改进型的VGG19-INC模型和多种深度CNN模型对柑橘病虫害图像进行了分类识别试验,通过对比分析,得到如下结论:
① 深度CNN可以较好地自动提取柑橘病虫害特征,无需人工对柑橘病虫害图像特征进行分割,分类性能总体上良好。
② 迁移学习可以充分利用在大型数据集上学习的知识,加快模型的训练速度,节省训练时间,提高训练精度,解决由于数据集规模过小导致模型分类效果差的问题。
③ 对于柑橘病害图像细粒度分类任务,通过对传统模型的调整和组合,设计的VGG19-INC模型平均准确率达95.25%,优于Inception V3,VGG19,Resnet50,Densenet201等模型。同时新模型减少了权重参数数量,使权重空间占用变小,提高了模型训练速度,减少了单幅图像平均检测时间,说明通过组合不同CNN模型可以进一步优化特征提取方法,提高特征提取能力和模型泛化能力,以应对不同场景的图像识别要求。
④ 虽然VGG19-INC模型对柑橘病虫害图像识别的平均准确率较高,但通过图10可以看出模型在识别黄龙病、线虫病这2种病害图像时仍有13张和18张图像被错误识别为其他类型图像。导致模型识别错误的重要原因之一是柑橘病虫害训练数据的不足,因此,增加病虫害图像数据的收集量,仍是未来需要持续加强的工作。
⑤ 本文模型的运行和部署在计算机硬件配置和实验环境较好的条件下进行,但由于柑橘各类病虫害发生时间、地域不同,需要对病虫害及时发现并处置,因此需要把模型部署在移动端,可通过知识蒸馏的方法,进一步缩小模型的训练权重使得模型更容易部署在移动端。