文 斌,曹仁轩,杨启良,张 健,朱 晗,李知聪
(1. 三峡大学电气与新能源学院,宜昌 443000;2. 昆明理工大学现代农业工程学院,昆明 650500)
三七是中国的名贵中草药,具有止血,散淤,止痛等功效。近年来,市场对三七的需求量已经超过了9 000 t,为了满足市场的需求,三七的人工培育面积不断扩大,但其作为一种典型的阴生植物,人工培育需要在遮荫环境下进行,而这种独特的培养环境容易诱发多种病害问题,如何准确识别其各种病害已成为一个亟待解决的问题。
传统三七叶片病害的检测方法主要包括人工识别和生物试剂检测等。王志敏等提出使用人工检疫法来识别三七的若干种病害。杨涛等提出使用人工抗病性鉴定识别三七的病害。李欣采用基因生物学方法对三七的多种病害进行检测。传统病害检测方法实时性不高,由于病害种类的多样性,识别的准确性也难以保证。随着病害检测技术的发展,传统图像处理方法被用于农作物的病害检测,这些方法基于阈值分割,颜色空间转换等技术,识别精度高于人工识别方法,但算法的构建比较复杂,检测速度较慢。
近年来,深度学习技术快速发展,基于深度学习的目标检测算法不需要人为设计复杂的特征,它能自动提取图像中的各种抽象特征,并根据提取结果进行目标的分类和定位,大幅提高了目标检测效率。研究者们引入了多种基于深度学习的目标检测算法用于农作物病害检测。Patarapuwadol等使用YOLOv3算法进行水稻病害的检测,并将算法部署到了服务器端。黄丽明等将改进后的YOLOv4算法用于松材线虫病的检测,检测的平均精度达到了80.85%。Tassis等将多种卷积神经网络进行集成用于咖啡作物的病虫害检测,该网络不仅能够达到很好的检测效果,而且适合于客户端部署。李就好等将改进后的Faster-RCNN算法用于苦瓜叶片的病害检测,平均检测精度达到了86.39%。Sun等改进了SSD算法,提出了MEAN-SSD算法并将其用于苹果叶片病害的检测,平均检测精度达到了83.12%。基于深度学习的目标检测算法,具有检测速度快、检测精度高的特点,这为农作物的病害检测问题提供了新的方法。
在三七叶片的病害检测中,使用计算机视觉技术进行识别的案例极少。罗匡男等使用传统图像算法结合机器学习算法对三七叶片典型病害进行检测,平均准确率均达到80%以上。但该方法需要人工选取阈值以提取叶片病害的边缘信息,阈值选取的好坏会对检测结果产生很大影响,且该方法仅针对三七叶片的两种病害,其余种类的病害检测并未涉及,算法缺少普适性。曹春号使用Faster-RCNN算法配合手机App实现了三七叶片病害的在线检测。该方法克服了人为设计特征量的缺点,并且能检测多种病害,提高了三七叶片病害检测的实时性和准确性。但Faster-RCNN的模型结构十分庞大,算法的检测速度较慢,不适合在移动设备中部署。熊凯使用不同版本的YOLOv5算法进行三七叶片病害的检测,检测的平均精度最高达到了89.22%。YOLOv5是YOLO系列算法截至目前的最新版,检测速度和精度都能达到较高标准,但算法实现比较复杂。
为了获得兼具速度和精度且易于实现的病害检测方法,研究者通常会选择YOLOv3算法。但在三七叶片的病害检测中存在病害区域密集和病害区域小的问题,YOLOv3算法对于密集目标和小目标的检测能力有限,当病害区域过小或过于密集时,容易出现漏检现象,为了解决这些问题,本文改进了YOLOv3算法,引入注意力特征金字塔解决YOLOv3特征金字塔特征融合时的噪声干扰问题。引入双瓶颈层对注意力特征金字塔的输出特征再次筛选,获取核心特征,舍弃无效特征,提高模型的鲁棒性,综合两种改进方法提出了AD-YOLOv3算法用于三七叶片病害的检测。
YOLO系列算法通过卷积神经网络对图像进行特征提取,对提取结果进行一系列后处理,最后根据处理结果进行目标检测。相比于其他目标检测算法,YOLO算法的特点是兼具精度和速度,这使得工程部署成为可能。YOLOv3作为YOLO系列的第三个版本,其使用了新型特征提取网络Darknet53,增强了主干网络的特征提取能力。此外还引入了多尺度检测,提高目标检测的精度和效率。YOLOv3进行目标检测时会将图像分成个网格,每个网格配备三种大小不同的边框作为初始检测框,每个检测框有5个参数,代表该检测任务中目标的类别总数,5个参数分别表征检测框中心的横纵坐标,框的宽度和高度,以及框中含有目标的置信度,通过反复调整检测框与实际目标的位置来匹配目标,最后通过非极大值抑制(Non-Maximum Suppression,NMS)算法进行检测框的最后确定。
本研究使用注意力特征金字塔(Attention Feature Pyramid,AFP)替代了原始特征金字塔结构,并且引入了双瓶颈层(Dual-Bottleneck,DB)对提取的特征进行后处理,改进后的算法称为AD-YOLOv3,其结构如图1所示。
AD-YOLOv3使用Darknet53作为特征提取网络对输入图像进行特征提取,与YOLOv3算法不同的是,AD-YOLOv3在特征提取完毕后使用注意力特征金字塔对提取到的特征进行聚合与筛选,然后使用双瓶颈层对特征进行增强,最后通过后续卷积层进行处理得到3种不同尺寸(20×20×33、40×40×33、80×80×33)的特征图进行检测,特征图尺寸的前两个维度代表其宽度和高度,最后一个维度代表检测数据,由于需检测的病害一共有6种,特征图的每个网格有3种检测框,由前一节公式可得各尺寸特征图上均预测33个数据。
图1 AD-YOLOv3与改进模块结构Fig.1 AD-YOLOv3 and improved module structure
1.2.1 注意力特征金字塔(AFP)
特征金字塔作为一种融合信息的结构,其工作流程为:从原始图像开始进行特征提取,直至最深层特征图。使用最深层特征图作为第一个预测特征层,同时对其进行上采样,使其尺寸扩大为原来的两倍,然后与浅层特征图进行融合得到新特征图进行预测。
特征金字塔的优势是将浅层特征与深层特征进行融合,从而丰富预测特征层上的语义信息,增强算法对小目标和密集目标的检测能力。特征金字塔结构的问题在于深浅层特征图进行特征融合时,特征图本身的噪声特征也会被融合,进而干扰预测特征层上的预测效果。为了解决噪声对于融合特征的干扰问题,本文采用注意力特征金字塔替代原始特征金字塔,将原始特征金字塔的输出分别送入3个通道注意力模块,其结构如图1a所示。
注意力特征金字塔由特征金字塔与通道注意力模块(Channel Attention Module,CAM)组合而成。其核心的通道注意力模块能够对特征金字塔融合得到的不同特征图按通道权重进行重新划分,强化有效特征的同时抑制噪声,从而对特征金字塔的输出进行优化,其结构如图 1b所示。
通道注意力模块包含两个分支,分别为掩码分支和映射分支,掩码分支对输入特征图的每个通道进行压缩和激活操作。本研究使用全局平均池化进行压缩,即对每个通道求平均值,用平均值表示通道的特征。相比于传统的全局最大池化方式压缩,全局平均池化能够较好地保存特征信息,减少信息的丢失,拥有更好的压缩效果。
特征图经过压缩后需要进行激活,即对各通道平均值进行非线性处理,增强特征的表达能力,同时将输出值限制在0~1内以表示各通道的权重。权重值与映射分支的初始特征图各通道相乘,即可得到按权重重新排列的特征图。通道注意力模块捕获通道之间的相关性,聚焦重要特征的同时抑制干扰特征,提高检测效果。
注意力特征金字塔通过特征金字塔与通道注意力模块的组合,既能融合特征又能优化特征表达,能够提升模型的整体检测效果。
1.2.2 双瓶颈层(DB)
YOLOv3算法中,对于特征金字塔提取到的特征只是通过简单的无残差瓶颈块进行处理。这种处理过于简单,特征金字塔提取到的特征中的冗余部分会对最终检测结果产生不良影响,所以特征金字塔的后处理模块需要对特征进行进一步筛选,丢弃无关信息,只保留最有效信息,以达到最优的检测效果。因此提出双瓶颈层对注意力特征金字塔提取到的特征进行后处理,其结构如图1c所示。
双瓶颈层中前一个瓶颈块带有特征融合的残差结构,先用1×1尺寸卷积核对特征图进行卷积以降低维度减少计算量,然后使用3×3尺寸的卷积核提取特征并进行升维,最后使用残差结构的跳连接与原特征图进行特征融合,残差结构在深层神经网络中可以有效应对梯度消失问题,并且可以加快训练过程的收敛。第二个瓶颈块不带残差结构,同样先对输入的高维特征进行降维以减少模块参数量,然后再进行特征提取并升维,此时特征信息已足够丰富,后一个瓶颈块不再进行残差连接,减少计算资源的消耗。双瓶颈层中的两次降维卷积会造成特征的丢失,但其后的升维卷积可以通过有损特征进行整体特征重构,增强特征表达的鲁棒性。重构特征与原始特征相比,削弱了原始特征中的无关信息,并对有效特征进行了增强,因此双瓶颈层结构能够学习到数据中更重要的特征。
通过两种瓶颈块的组合,扩展了后处理卷积层的深度,使得网络的学习能力进一步增强。注意力特征金字塔提取到的特征经过双瓶颈层的反复升降维处理,得到最简洁有效的特征表达形式,增强了特征的特异性,从而达到更好的检测效果。
本次试验数据集三七叶片病害图像采集地点为云南省红河州沪西县午街铺镇昆明理工大学三七控水减排提质增效关键技术研究与示范基地(24°25′~24°36′N,103°42′~105°35′E,海拔1 796 m),采集方式为基地摄像头拍摄,采集到明暗程度、叶片大小、病害种类各不相同的三七叶片图片共1 886张,全部裁剪到640×640像素大小,使用LabelImg工具对图片进行标注,最后按约8∶1∶1的比例将所有图片划分为训练集,验证集和测试集,其中训练集1 500张,验证集186张,测试集200张。数据集中包含的各类病害图片数量如表1所示。
表1 各类病害图像数量表Table 1 Number of images of various diseases
数据集中叶片病害一共有6类,分别为疫病、黄锈病、炭疽病、白粉病、圆斑病、病毒病。在试验中为了方便,将6种病害标记为类别1~6,病害典型样本如图 3所示。
本文全部试验由单计算机完成,计算机硬件配置为Intel Core i5-3470 CPU@3.2GHz,GeForce RTX 2060Super GPU,16G运行内存,操作系统为64位Windows 10,Pytorch深度学习框架,Python3.7编程语言,CUDA11.0 GPU加速库。
训练过程中的批量尺寸(Batchsize)设置为8,初始学习率设置为0.01,动量设置为0.937,总训练轮数(Epoch)设置为500,使用SGD优化器进行优化,保存精度最高的一次和最后一次的模型参数。训练过程使用Warm up方法加快模型收敛速度。
图3 三七叶片病害图Fig.3 Leaf disease of Panax notoginseng
本研究使用精确率,召回率,整体精度1以及类别平均精度mAP指标对试验结果进行评估。精确率表征算法检测到的所有目标的准确率,召回率表征算法检测目标的全面性,1精度表征算法在准确率和召回率上的综合性能,mAP表征算法在不同类别上的平均检测精度。计算公式如下:
式中TP为算法检测正确的目标数量;FP为算法检测错误的目标数量;FN为算法漏检的目标数量;为检测的类别总数;()为以召回率为自变量,精确率为因变量的函数。
使用AD-YOLOv3算法在数据集上进行训练和测试。训练过程的总损失下降过程如图4所示。
图4 训练过程参数指标Fig.4 Parameters of training process
如图4a所示,训练过程前50轮损失值下降速度最快,50轮之后损失下降速度逐渐变慢,在训练轮数达到500次时,损失曲线趋近于平缓,表明模型精度已经达到了稳定值,模型训练过程完毕。如图4b、4c所示,随着训练轮数的增加,总损失下降的同时,准确率和召回率均不断上升,训练至500轮时,准确率和召回率分别达到89.1%和93.6%,同时mAP曲线也随训练轮数的增加而逐渐升高,最终各类型病害检测的平均准确率能达到80.6%,训练过程中各曲线走势能够反映出训练的有效性。
对AD-YOLOv3进行消融试验,各性能指标如表2所示。由消融试验结果可得,使用注意力特征金字塔改进后的模型在精确率上提升1.35个百分点,1精度提升0.87个百分点,mAP提升0.31个百分点。注意力特征金字塔对融合特征图按权重进行通道的重新排列,使算法聚焦重要特征通道,提升了检测精度。使用双瓶颈层改进后的模型在精确率和1精度上提升不大,但mAP提升了0.81个百分点。双瓶颈层主要用于对特征进行再次筛选,筛选前需保证特征足够精简。没有注意力特征金字塔的情况下,进入双瓶颈层的特征包含了较多噪声,筛选后的特征中也包含较多无用信息,所以单独使用双瓶颈层对精度的提升并不明显。综合使用双瓶颈层与注意力特征金字塔后的模型在精确率提升了2.83个百分点,1精度提升了1.68个百分点,mAP提升了1.47个百分点。所有性能指标提升比较明显,得益于注意力特征金字塔和双瓶颈层的联合使用。因此,注意力特征金字塔可以提升算法的性能指标,双瓶颈层能够起到特征修正作用,两者配合使用能够实现较好的性能提升,综合使用两种方法得到的AD-YOLOv3可以达到较好检测效果。
AD-YOLOv3与其他算法模型的检测性能对比如表3所示,试验对比了一阶目标检测算法中的YOLOv3模型和使用了跨阶段局部网络(Cross Stage Partial Network,CSPNet)作为主干提取网络的CSPYOLOv3模型,此外还对比了二阶目标检测模型中检测效果较好的Mask R-CNN。
表2 消融试验性能指标对比Table 2 Conparision of performance of ablation experiment %
表3 不同模型检测性能对比Table 3 Comparison of the model performance
由表3可知,AD-YOLOv3在所有类型病害的检测中准确率均优于YOLOv3与CSPYOLOv3,在平均精度均值mAP上AD-YOLOv3低于二阶检测模型Mask-RCNN,但在炭疽病和圆斑病检测中精度高于Mask-RCNN。AD-YOLOv3在6类病害的检测中对白粉病的检测效果较差,原因是白粉病的多数病害区域过小,在图片中所占像素点极少,而YOLO系列算法恰好对于小目标的检测能力较弱,因此算法对白粉病的检测效果不佳,而二阶检测算法Mask-RCNN对小目标的检测能力较强,在白粉病的检测中精度大幅领先YOLO系列算法。AD-YOLOv3对6类病害中圆斑病的检测效果最好,原因是圆斑病的特征十分明显,病害区域和叶片正常区域有明显差异且病害区域较大,因此模型对圆斑病的检测能够达到较好效果。
实际病害检测中,需要考虑到算法的检测速度和模型的复杂度,二阶检测模型Mask-RCNN虽然精度高,但其构成相对复杂,检测速度慢,由表可知AD-YOLOv3每秒检测的图片数量几乎是Mask-RCNN的60倍。而相比于原始YOLOv3,AD-YOLOv3在速度几乎没有损失的情况下实现了多方面性能的提升。
随机选取含有少量病害、中等数量病害和密集病害且病害类型不同的多张图片对YOLOv3和AD-YOLOv3进行测试,典型检测结果如图5所示。
两组图片中图I病害为病毒病;图II有两种病害,类别2为黄锈病,类别5为圆斑病;图III病害为黄锈病。图I中AD-YOLOv3模型检测出病毒病的置信度为83%,高于YOLOv3模型的46%;图II中,AD-YOLOv3模型对于黄锈病的检测置信度为84%,高于YOLOv3模型的64%。发病区域最多的图III中,AD-YOLOv3模型对于所有病害区域的置信度均高于YOLOv3。置信度的提高说明AD-YOLOv3获取到了图像中更丰富的语义信息,而语义信息的丰富得益于算法中深层特征图和浅层特征图的融合,融合后的特征图能够达到更好的检测效果。
图5 置信度对比图Fig.5 Confidence comparison
不同三七叶片的病害情况不同,有些叶片存在多种病害,有些叶片存在多个病害区域,人工检测容易漏检,而使用计算机检测能够提高检测精度。在测试集中随机选取多张存在易漏检病害区域的图片,分别使用YOLOv3和AD-YOLOv3进行检测,典型检测结果如图6所示。
两种模型对密集病害的检测结果如表4所示。YOLOv3在图1和图2的大量炭疽病区域检测中存在漏检现象,在图3的白粉病和病毒病混杂的病害区域中存在白粉病区域的漏检现象,漏检区域在AD-YOLOv3检测结果图中已用箭头标出。AD-YOLOv3检测出了不同种类病害中所有病害区域,未出现漏检,检测能力明显增强。在密集病害区域的检测中,重叠的病害区域容易被忽略,注意力特征金字塔通过通道注意力模块对融合特征按权重重新进行排列,高权值特征通道的特征会更加显著,即使密集区域发生了重叠现象,该区域特征也会因为其高权重而得到保留,在一定程度上解决了因重叠造成的密集区域漏检现象。因此,注意力特征金字塔的引入有助于解决密集区域病害的检测问题。试验表明,AD-YOLOv3在密集区域病害的检测中表现更好。
图6 密集病害检测Fig.6 Detection results of dense disease
表4 密集病害检测结果统计表Table 4 Detection results of dense disease summary table
YOLO算法对于小目标的检测能力较弱,三七叶片病害中存在较多发病面积小的病害,主要类型为早期炭疽病以及早期黄锈病以及极小区域的白粉病。为验证AD-YOLOv3对小区域病害的检测效果,从测试集小面积病害图片中选取多张含有典型早期黄锈病和早期炭疽病区域的图片进行测试,其典型检测结果如图7所示。
如图7所示,在不同病害类型的叶片中,原始YOLOv3模型对于小区域病害的检测均有漏检现象,漏检区域在AD-YOLOv3检测结果图中用箭头标出。图中病害区域小,分辨率低,在固定区域中能反映的信息少,卷积神经网络提取特征过程中经过多次下采样,很多小区域病害的特征信息已经丢失,导致小区域病害的漏检。AD-YOLOv3引入注意力特征金字塔对深层特征图进行上采样,通过深层特征信息对图像中的原始语义信息进行重构,最后将两者融合,使病害区域浅层位置信息和深层语义信息都能在融合特征图上进行反映,后续双瓶颈层对融合特征图进一步筛选,得到准确的小区域病害的特征信息,明显改善了小区域病害的检测效果。试验表明,引入了注意力特征金字塔和双瓶颈层结构的AD-YOLOv3能更好地检测出容易被忽略的小区域病害,在实际检测中能够达到更好的检测效果。
图7 小区域病害检测Fig.7 Detection results of small region
算法的鲁棒性是指算法在各种干扰情况下保持正常工作的能力,三七叶片病害的实际检测中存在各种环境干扰问题,例如在拍摄叶片图片时可能存在光线不足,雨雾干扰等问题,这就要求算法有较强的鲁棒性,能够在有干扰的情况下保证检测的准确性。随机选取测试图片并对图片进行雾化、加雨、降低亮度处理,并比较YOLOv3和AD-YOLOv3在雾,雨,暗光条件下的检测效果,结果如图8所示。
处于浓雾环境中的叶片病害类型分别为早期黄锈病和圆斑病。处于雨水环境中叶片病害为圆斑病与早期黄锈病,处于暗光条件下叶片病害类型为早期黄锈病。由3种干扰情况下检测结果可看出,在浓雾环境中,两种算法都能够检测出病害区域,但AD-YOLOv3检测出的结果置信度明显高于YOLOv3;在雨水和暗光条件下,YOLOv3出现了漏检现象,漏检区域在图8中用箭头标出。雾,雨,暗光条件都会给检测带来困难,这是由于干扰因素改变了图像中的原始特征,卷积神经网络提取到的特征中包含了很多干扰信息,病害的表征受到了噪声影响,因此一些病害就可能无法被检出,为了应对这种情况,就需要提升算法的鲁棒性。AD-YOLOv3使用了注意力特征金字塔对不同尺度的特征图进行特征的一次聚焦,关注重要特征的同时弱化干扰特征。通过特征的初次筛选后,特征又经过双瓶颈层进行二次筛选,两次特征筛选过程使AD-YOLOv3有很强的鲁棒性,提升了算法在干扰环境下的检测能力。试验和理论两方面都证明注意力特征金字塔和双瓶颈层结构增强了算法的鲁棒性,AD-YOLOv3更适合实际环境下的三七叶片病害检测。
图8 算法鲁棒性对比Fig.8 Comparison of algorithm robustness
本研究使用YOLOv3作为基础检测算法,使用注意力特征金字塔替换原算法中的特征金字塔,并在注意力特征金字塔结构后插入了双瓶颈层结构,对改进后的算法使用含有6种叶片病害的数据集进行训练,最后比较了改进算法与原算法在小目标病害和密集数量病害以及各种干扰环境下的检测效果,得出如下结论:
1)相比于原始YOLOv3算法,注意力特征金字塔和双瓶颈层均能提升算法的检测精确率和平均精度均值。注意力特征金字塔的引入对算法的精确率提升明显,双瓶颈层的引入对于算法平均精度均值的提升明显。
2)改进算法在检测速度不变的情况下对6种病害的检测精确率均优于原始算法,注意力特征金字塔与双瓶颈层的引入对检测速度影响很小。
3)改进算法在小目标病害和密集病害的检测上均优于原始算法并且算法的鲁棒性得到提升。相比于原始算法,改进算法的精确率提升了2.83个百分点,1精度提升了1.68个百分点,平均精度均值提升了1.47个百分点,性能指标提升明显。改进算法在雾、雨、暗光等干扰环境下也能达到较好检测效果。