APP下载

基于GC-Cascade R-CNN的梨叶病斑计数方法

2022-06-21程润华康亚龙黄新忠徐阳春董彩霞

农业机械学报 2022年5期
关键词:全局病斑像素

薛 卫 程润华 康亚龙 黄新忠 徐阳春 董彩霞

(1.南京农业大学人工智能学院, 南京 210095; 2.南京农业大学资源与环境科学学院, 南京 210095;3.福建农业科学院果树研究所, 福州 350013)

0 引言

中国的梨种植面积和产量均居世界首位[1]。梨树病害是影响产量的主要因素,及时准确地进行病害发生程度诊断,有利于提前做出预测预报和采取防控措施,对梨生产具有重要现实意义。梨树病害早期症状,多由近圆形斑点区域组成,病斑尺寸微小,颜色不均匀,纹理不显著;后期多个病斑常融合成明显且不规则形状的深色斑块。因此病害早期是防治的最佳时期。梨树叶片病害发生程度主要通过人工统计叶面病斑数来评价分析[2-3]。此过程费时费力,误差较大。

传统图像处理和机器学习广泛应用于农作物病害诊断领域[4]。研究者利用阈值分割[5]、边缘检测[6]、OTSU算法[7]、支持向量机[8](Support vector machine, SVM)、K-均值聚类算法[9]等方法进行病害检测研究,取得了一定的进展。然而,传统图像处理方法依赖于人工设定特征模式,特征提取不稳定,受环境影响较大;在图像检测上鲁棒性较低,难适用于复杂的农业生产环境。

近年来,随着深度学习在计算机视觉领域的发展,目标检测在作物检测[4]、自动导航[10]、人脸识别[11]、行人检测[12]等诸多领域广泛应用。当前主流目标检测算法,如经典的两阶段检测算法Faster R-CNN[13]、单阶段检测算法YOLO[14]系列和SSD[15]系列,大都针对分布稀疏、尺寸较大的目标。在检测小目标方面识别效果不佳。小目标在MS COCO数据集中被定义为尺寸小于32像素×32像素的物体。梨叶早期病害产生的病斑个体在采样图像中的面积远小于32像素×32像素,直接应用经典目标检测算法,经卷积神经网络(Convolutional neural network,CNN)下采样后的特征信息保留较少,检测难度较大。

现有的小目标检测算法一般是在经典目标检测方法的基础上提出一些改进或优化策略[16],如改进特征融合技巧、结合上下文信息和引入注意力模块等[17-20]。目前这些基于深度学习的小目标检测算法仍有一定的提升空间。

为有效解决自然环境下梨叶病斑计数成本高、误差大等问题,本文提出基于全局上下文级联R-CNN网络(Global context Cascade R-CNN,GC-Cascade R-CNN)的高效梨叶病斑自动计数方法。以Cascade R-CNN[21]为基本网络模型,引入全局上下文模块(Global context feature model,GC-Model),通过建立长距离依赖和通道依赖增强目标特征信息。将各层特征经特征金字塔网络[22](Feature pyramid network,FPN)融合,送入级联网络中检测,最终统计相关病斑数量。并通过实验验证提出模型的有效性和实时性。

1 病害数据集

1.1 数据采集

梨树叶片病害图像取自福建省西北内陆山区的建宁县试验站。试验站属山地果园,管理水平中等,地处亚热带季风气候,年平均气温约16.9℃,年平均日照时数1 720 h,无霜期230~280 d,年降水量1 850 mm。在试验园区进行梨叶采摘,采摘后在实验室通过相机进行图像采集。摄像头正对叶片表面,镜头距离叶片表面约10 cm。样本图像格式为JPG,分辨率为4 752像素×3 168像素。

梨叶其他几类病害图像收集于公开数据集,如Kaggle竞赛中的plant pathology 2020数据集、AI Challenger 2018农作物病害检测数据集等。部分梨叶图像如图1所示,因为采集样本图像分辨率较高,故挑选原图中病斑显著局部区域作为数据集。数据集共收集550幅梨叶片图像,包括锈病150幅、黑星病100幅、炭疽病200幅和褐斑病100幅。其中,黑星病病斑尺寸较大,特征较为明显。锈病与褐斑病颜色特征显著。而炭疽病病斑尺寸较小,各项特征不突出,检测难度最大。

图1 数据采集样本图Fig.1 Samples of data acquisition

1.2 数据增强

针对小目标分辨率低、数据集少及分布不均匀等问题。通常对数据集中样本进行数据增强以扩充数据集的数量,实现更复杂的数据描述,提高目标检测算法的拟合能力。

常见的数据扩充方式有旋转、剪裁、缩放、水平翻转等[23]。本文数据增强策略采用数据集图像顺时针旋转120°、150°、210°、240°、300°,水平镜像翻转和垂直镜像翻转的方式。增强后的扩展数据集包含锈病图像1 050幅、黑星病图像700幅、炭疽病图像1 400幅和褐斑病图像700幅。

在病斑数据标注方面,使用标注工具LabelImg进行标注。标注结果中梨炭疽病的样本数为6 234个,梨锈病的样本数为2 522个,梨黑星病的样本数为2 211个,梨褐斑病的样本数为2 132个。训练时将样本混合,按照比例4∶1划分训练集和测试集。

2 基于GC-Cascade R-CNN的病斑计数模型

本文提出的算法基于Cascade R-CNN目标检测模型,主要分训练阶段和测试阶段。基本检测流程如下:首先输入图像,进行图像分区,得到一系列分区图像。后逐一对分区图像进行特征提取,使用FPN特征融合,提取图像中更有效的特征信息。然后输入到级联网络检测,统计图像病斑计数值。具体流程如图2所示。

图2 病斑计数流程图Fig.2 Flow chart of disease spot counting

2.1 图像分区

梨树叶片病害样本图像原始分辨率较高,如炭疽病样本图像的分辨率为4 752像素×3 168像素。目前基于深度学习网络的目标检测算法一般使用分辨率在512像素×512像素以下的图像进行训练和测试。若直接将样本图像输入到网络中会被强制缩小到较低的分辨率,导致目标特征信息丢失,检测精度大大降低[24]。

参照文献[25]中的处理方法,通过滑动窗口算法将图像分成与目标网络输入尺寸一致的区块。滑动窗口分区尺寸设置为N像素×N像素,区块间重叠百分比设置为15%,可保存分区图像在原始图像中的全局位置。若图像边缘部分不足以进行分区,需向相反方向截取图像。

对于每一个图像分区,根据该分区的全局位置坐标返回在原图的边界框位置预测,最终将所有图像分区结果整合到原图中。对边界框预测的全局矩阵应用非极大值抑制算法(Non-maximum suppression,NMS),以避免分区边界区域的重叠检测。

2.2 级联R-CNN网络

Cascade R-CNN[21]是级联R-CNN网络,它联合多级网络结构为每个R-CNN设置不同的重叠度(Intersection over union,IoU)阈值,平衡每个网络中正负样本的分布,提取到的正负样本用于下一个网络的输入,由此对检测结果不断优化。网络结构默认具有3个R-CNN网络结构,具体结构如图3所示。

图3 Cascade R-CNN结构框图Fig.3 Framework diagram of Cascade R-CNN

IoU阈值通常被用来界定正负样本。低IoU阈值通常伴随无关噪声,检测结果中会包含较多的背景区域。随着IoU阈值的逐渐增加,检测性能也会逐渐提升。但当其提升到一定程度,继续增加会使得检测性能趋于下降。这是因为样本不平衡的影响,正样本在高IoU阈值下不断减少,训练容易过拟合。同时区域生成网络(Region proposal network,RPN)筛选的候选框与标注框出现偏差,边界框回归损失会显著增加。

级联网络采用逐级上升IoU阈值方式,重采样正负样本,可以克服训练过程中的过拟合问题。每个阶段都能得到质量更好的候选框,稳定提升训练效果。

此外,本文使用ROI Align[26]替换传统R-CNN网络中默认的ROI Pooling作为网络中区域特征聚集层。ROI Align使用双线性插值算法替换原来的最近邻插法,有效地解决了ROI Pooling操作中2次量化造成区域不匹配的问题,更准确地定位目标位置,可以提升检测模型的准确率。ROI Align的反向传播公式为

(1)

式中L——损失函数

xa——池化前特征图上的像素点a

ytb——池化后的第t个候选区域的第b个像素点

a*(t,b)——前向传播时计算出来的采样点位置

d(~)——两点的距离函数

Δh、Δw——a与a*(t,b)横纵坐标的差值,作为双线性插值算法的系数参与原始梯度的计算

2.3 全局上下文模块(GC-Model)

非局部神经网络(Non-local neural network,NLNet)[27]是一种基于自注意力机制的长距离依赖模型。它采用非局部操作建立查询位置(Query position)和所有位置的成对关系,计算相关性得到注意力图(Attention map)。后通过加权和的方式聚合所有位置的相关性特征,得到查询位置的全局上下文特征。将全局上下文特征与原始特征结合,完成长距离依赖的建立。但其对每一个位置获取的注意力图不受位置依赖,存在较大的计算冗余。

非局部神经网络基于非局部操作块(Non-local block),其对查询位置的非局部操作可表达为

(2)

式中xi——查询位置的输入矩阵

xj——其他位置的输入矩阵

zi——查询位置的输出矩阵

Wz、Wk——线性转换矩阵

Np——特征图中的位置数

C(x)——归一化函数

f——2个位置的相似性函数

具体网络结构如图4a所示,其中C、H、W分别为特征图的通道数、高度及宽度。C×H×W是特征提取得到的三维特征图,而C×HW是经过线性转换过后的二维特征矩阵,后续的结果均是经过处理的特征矩阵。

图4 长距离依赖和通道依赖模型图Fig.4 Long-range dependency and channel dependency model diagram

挤压和激励网络[28](Squeeze and excitation networks,SENet)是基于通道注意力机制的经典网络。它聚焦于通道维度,通过学习的方式对通道间的依赖关系进行建模,获取各特征通道的重要程度,自适应调整各通道的特征响应。具体结构如图4b所示,主要由3个操作构成:首先,通过全局池化层(Global average pooling)进行特征压缩,得到特征通道上响应全局特征的分布,获取全局感受野。然后,根据特征通道间的相关性生成每个通道的特征权重。最后将特征权重看作特征选择后每个特征通道的重要程度,通过对应元素相乘加权到原始特征上,完成通道维度上对原始特征的重新标定。

GC-Model[29]是结合NLNet全局上下文建模能力和SENet计算量小等优点的非局部操作网络,其计算量相对较小,只需计算一个所有位置共享的全局注意力图。同时结合长距离依赖和通道依赖,能够更好地融合全局信息,增强视觉场景的全局理解,在一定程度上提升了目标检测精度。

GC-Model中非局部操作可分为3个步骤:首先采用1×1卷积核和Softmax函数得到注意力权重,然后通过矩阵乘法执行全局注意力池化,获取全局上下文特征。然后采用1×1卷积核特征转换获取通道依赖性,计算每个通道的重要程度。将线性整流函数(Rectified linear unit, ReLU)和通道归一化(Layer normalization,LN)用于降低转换难度。最后采用对应元素逐个相加操作将全局上下文特征与原始特征融合,完成原始特征的重新标定。

具体结构如图5所示,其中r为瓶颈比率(Ratio of channels of transform bottleneck),用于降低模块参数量。GC-Model可表示为

图5 全局上下文模块结构框图Fig.5 Framework diagram of GC-Model

(3)

式中xm——注意力位置的输入矩阵

Wv1、Wv2——线性转换矩阵

Wv2ReLU(LN())——特征转换函数

GC-Model是轻量级的特征增强模块,能够获取全局上下文特征,且能灵活地嵌入到任何一个现有的网络结构当中,适用性较好。本文将GC-Model与级联目标检测网络结合,用于提升网络模型的检测性能。

2.4 GC-Cascade R-CNN

GC-Cascade R-CNN目标检测模型如图6所示。GC-Cascade R-CNN使用深度残差网络[30](Residual neural network,ResNet)作为特征提取网络,在Conv3、Conv4和Conv5阶段嵌入GC-Model;构建长距离依赖和通道依赖,增强原始特征信息。输出特征图经特征金字塔融合后输入到RPN当中。

图6 GC-Cascade R-CNN结构框图Fig.6 Framework diagram of GC-Cascade R-CNN

经过RPN筛选候选区域后,将映射到原图的感兴趣区域(Regions of interest,ROI)通过ROI Align[26]层进行区域特征聚集转换为固定尺寸,最终输入到全连接层进行分类和边框回归。推理时通过前一个检测器输出的边框回归对候选区域进行重采样,逐步提升IoU阈值,提升样本采样质量和网络训练结果。得到检测结果后,统计图像中相关病斑计数值。

主干特征提取网络结构具体如表1所示。其中,瓶颈结构(Bottleneck)是一种用来减少参数数量的残差网络结构,由2个1×1卷积、1个3×3卷积和1个残差连接组成。

表1 主干特征提取网络结构Tab.1 Backbone network structure

3 实验与结果分析

3.1 实验设置

实验操作平台为高性能服务器,运行环境Windows 10。处理器为Intel Xeon E5-2650 v4,主频 2.20 GHz。32 GB内存,显卡为NVIDIA GeForce GTX 1080Ti,运行显存为11 GB,使用GPU加速。在Python 3.7编程环境下使用Pytorch深度学习框架,版本为1.3.0。

图7 损失函数曲线Fig.7 Loss function curve

模型训练时,损失函数采用随机梯度下降法(Stochastic gradient descent,SGD)。初始学习率(Learning rate)设置为0.002 5,权重衰减系数(Weight decay)为0.000 1,动量因子(Momentum)为0.9,迭代次数为60 000。当迭代次数为40 000、50 000时,将学习率调整为0.000 25和0.000 025。训练在前500次迭代时采用预热(warmup)策略,在初始使用较小学习率而后期切换为较大学习率,提升模型训练的稳定性。梨叶病害病斑数据集上GC-Cascade R-CNN损失收敛情况如图7所示。模型训练时收敛速度较快,在迭代次数不到10 000已达到损失最低点,后续曲线进入振荡阶段,但幅度不大,最后趋于平稳收敛。

3.2 病斑计数实验

3.2.1梨叶病斑检测实验

为了验证GC-Cascade R-CNN模型对于梨叶片病害病斑检测的效果,分别使用RetinaNet[31]、Faster R-CNN[13]、Libra R-CNN[32]和Cascade R-CNN[21]等目标检测算法进行梨叶病斑检测实验对比,验证本文目标检测模型的有效性和实时性。基本网络IoU阈值设置为0.5,级联网络中IoU阈值则设置为0.5~0.7。使用Soft-NMS[33]算法,默认重叠阈值为0.5。模型使用平均精确率(Average precision,AP)作为本次实验目标检测结果的评价指标,梨叶病害数据集上的检测结果如表2所示。

表2 不同目标检测网络检测结果对比Tab.2 Comparison of detection results of different target detection networks

骨干网络R50-FPN表示主干特征提取网络使用ResNet-50网络,并使用FPN进行特征融合。对于不同种类的病斑,GC-Cascade R-CNN的平均精确率均高于其他算法,平均精确率均值达89.4%。与Faster R-CNN相比,锈病的平均精确率提升了3.7个百分点,黑星病平均精确率提升了4.5个百分点,褐斑病平均精确率提升了3.9个百分点,炭疽病平均精确率提升了4.5个百分点。与Cascade R-CNN相比,除炭疽病平均精确率提升了2.3个百分点,其他3类病斑平均精确率提升均不到1个百分点。由此可知,当网络复杂达到一定程度时,全局上下文特征模块对小目标检测的提升幅度大于一般目标检测。

随着模型复杂度的提升,平均检测时间相应会有所增加。GC-Cascade R-CNN模型对每幅图像的平均检测时间为0.347 s,虽然略慢于之前的网络模型,但基本保持了检测实时性。

图8 梨叶病害病斑检测结果Fig.8 Detection results of pear disease spot

梨树叶片病害病斑检测结果如图8所示。因为原图的尺寸较大,未标明各类病斑标签信息,仅用不同颜色区分。炭疽病斑尺寸较小,在原图里肉眼可能无法完全分辨,特征提取时深层的特征信息较少,经全局上下文模块增强特征后,检测性能提升最为明显。锈病、黑星病和褐斑病相对炭疽病的尺寸较大,特征信息较丰富,检测性能提升较小。

图9 梨叶斑点炭疽病斑检测对比Fig.9 Comparison of pear anthrax spot detection

为了便于观察炭疽病斑的检测效果,测试集中某幅图像的检测结果如图9所示。RetinaNet算法忽略了大部分的病斑,检测性能较差。Faster R-CNN算法虽检测出了叶片上的大部分病斑,但依旧存在漏检现象。Cascade R-CNN算法和GC-Cascade R-CNN算法的检测结果基本一致,完全检测出了所有病斑。仔细观察,Cascade R-CNN存在多个重叠病斑重复检测的情况,影响病斑计数结果。以上结果表明GC-Cascade R-CNN的检测结果更精确,更适合病斑计数任务。

3.2.2GC-Model消融实验

本文针对梨叶数据集中的斑点炭疽病这一类小目标数据,进行GC-Model消融实验,来验证该模块的影响。将它以相同的方式插入到RetinaNet、Faster R-CNN和Libra R-CNN中,探究其对检测结果的影响。

表3比较了嵌入GC-Model前后的检测性能。结果显示,嵌入模块后的平均精确率显著提升,达到2.5个百分点左右。说明全局上下文特征模块在特征增强方面存在明显优势。

表3 不同网络结构检测性能对比Tab.3 Comparison of detection performance of different network structures

为了验证GC-Model在主干特征提取网络不同阶段嵌入的影响,在ResNet-50的Conv3、Conv4、Conv5阶段分别单独嵌入和组合嵌入,以Cascade R-CNN为基准网络进行实验对比,骨干网络使用R50-FPN。

表4为不同嵌入阶段的检测性能。得益于全局上下文模块的使用,平均精确率都有一定的提升,在Conv4阶段和Conv5阶段嵌入实现了比Conv3阶段更好的性能,表明深层次的高度语义特征可以从全局上下文特征中增强更多。虽然平均检测时间略有增加,但本文算法将GC-Model组合嵌入Conv3、Conv4、Conv5阶段比只嵌入单个阶段具有更高的检测性能。

表4 不同嵌入阶段检测性能对比Tab.4 Comparison of detection performance at different embedding stages

3.2.3多尺度训练实验

为了模拟多尺度训练对炭疽病斑检测的影响,对单尺度输入图像和多尺度输入图像进行了实验[30]。对于单尺度尺寸,使用400像素×400像素、500像素×500像素和600像素×600像素。多尺度尺寸采用单尺度尺寸的相关组合,从指定的比例尺搭配中选择任何可重复项来进行训练。检测结果见表5。

表5 不同尺度尺寸训练后检测结果对比Tab.5 Comparison of test results after training with different scales

从表5可看出,在单尺度模式下,500像素×500像素图像尺寸下训练的模型平均精确率最高。本文模型是单尺度模式训练模型。为了达到最佳检测性能,将图像分区中滑动窗口分区尺寸的N设置为500,即网络输入尺寸设置为500像素×500像素。多尺度模式训练模型平均精确率达87.8%,高于所有单尺度模式训练模型的性能表现。这表明多尺度训练方法可以有效地增加检测目标的覆盖范围,从而提高检测性能。

3.2.4不同种类病斑计数结果

基于目标检测结果得到梨叶样本图像上相关病斑的个数。将数据集中各类梨叶病害的单幅病斑计数值与真实值进行对比,采用线性回归对结果进行分析。各类病害单幅图像计数值与真实值的拟合结果如图10所示。

图10 病斑计数预测值与真实值的比较Fig.10 Comparisons of pear disease spot counting results between measured and calculated values

从拟合结果看,决定系数R2均大于0.92,表明本文方法对各类梨叶病斑的计数值与真实值具有显著的线性相关性,计数准确度较高,适用于果园实拍梨叶病害图像的病斑计数任务,有利于实现自动化病害诊断,精准农药喷洒,保障梨树果实的质量和产量。

4 结论

(1)针对梨树病斑计数误差较大、效率较低的问题,提出一种快速准确的梨叶片病害病斑计数网络GC-Cascade R-CNN。实验结果表明,模型的平均精度均值达89.4%,高于流行目标检测模型。模型病斑计数值与真实值回归拟合的决定系数均大于0.92,说明该模型能够有效改善梨叶片病害病斑计数难题,实现梨叶病害发生程度的准确诊断。

(2)GC-Cascade R-CNN具有较快的推理速度,单幅图像平均检测时间仅为0.347 s,可满足实时诊断的需求,实现梨叶病害发生程度的高效评估,具有一定的应用价值。

猜你喜欢

全局病斑像素
基于改进空间通道信息的全局烟雾注意网络
领导者的全局观
像素前线之“幻影”2000
“像素”仙人掌
落子山东,意在全局
套袋对柠檬果实外观品质的影响
Ophiognomonia castaneae协同板栗褐缘叶枯病病原菌致病作用的研究
高像素不是全部
轻松治愈花斑癣
轻松治癒花斑癣