基于改进YOLO v5s的马铃薯种薯芽眼检测方法
2023-09-23张万枝刘树峰穆桂脂张弘毅郭壮壮
张万枝 曾 祥 刘树峰 穆桂脂 张弘毅 郭壮壮
(1.山东农业大学机械与电子工程学院,泰安 271018; 2.山东省农业装备智能化工程实验室,泰安 271018)
0 引言
我国年均马铃薯种植面积为6.0×106hm2以上,总产量位居世界第一,是第一生产大国,但并不是生产强国[1-3]。我国与美国、荷兰等发达国家相比,马铃薯种植机械化水平偏低。国内传统的切块作业方式仍然处于人工切块,存在耗时耗力、效率低下和出苗率难以保证等问题,为提高种植机械化水平,智能切块取代人工切块将显得尤为重要,而马铃薯种薯芽眼检测是实现智能切块的前提。
为实现马铃薯种薯芽眼检测,国内部分学者通过传统视觉技术进行了相关研究。田海韬等[4]在彩色和灰度空间中分割出芽眼,再将二者结合进行数学形态学处理得到芽眼标记结果。李玉华等[5]基于色饱和度三维几何特征进行马铃薯芽眼检测。吕钊钦等[6]基于Gabor特征进行马铃薯图像滤波处理,剔除马铃薯边界连通区域进行芽眼区域提取,完成芽眼的检测。张金敏等[7]提出使用局部二值模式(LBP)提取特征结合支持向量机(SVM)进行分类,完成对马铃薯芽眼检测。YANG等[8]在多光谱图像中结合监督多阈值分割模型和Canny边缘检测器,完成马铃薯芽眼检测。以上传统视觉检测是基于颜色、纹理、形状和其他手动标注的特征进行训练,虽然训练模型简单,但模型的泛化性和普适性较差,不利于在不同环境的实际应用。
近年来随着深度学习快速发展,基于深度学习的目标检测技术在农业工程领域也得到了广泛的应用[9-12]。该技术主要分为基于候选框的双阶段目标检测算法和更快检测速度的单阶段目标检测算法。双阶段目标算法最具有代表的是R-CNN系列,其中包括R-CNN、Fast R-CNN、Faster R-CNN和R-FCN[13-16]。XI等[17]提出基于改进Faster R-CNN双阶段的马铃薯芽眼检测算法,对发芽马铃薯芽眼检测精度可达96.32%。杨森等[18]利用迁移学习和复合特征字典方法对Faster R-CNN训练,检测马铃薯病害叶片的斑块区域。双阶段目标检测算法先生成一系列样本候选框,再根据生成的候选框区域进行目标分类和回归,检测精度较优,但这也带来检测时间长的弊端,不适用于农业工程实时检测。单阶段目标检测算法与双阶段检测算法相比,候选框和检测同时进行,且兼顾检测速度和精度。此类最具有代表的是YOLO系列算法[19-22]。陈志伟等[23]采用YOLO v3单阶段目标检测算法对马铃薯种薯芽眼检测,并使用图像数据增强和迁移学习思想的方法。王相友等[24]针对马铃薯中土块石块检测问题对YOLO v4模型进行通道剪枝达到轻量化的目的。史方青等[25]使用YOLO v3网络模型将多个遮挡、机械损伤、虫眼的芽眼及杂质的样本加入数据集中,实现对种薯芽眼的检测。
目前基于深度学习的芽眼目标检测虽然取得了一定进展,但针对马铃薯种薯芽眼特征一般仅使用YOLO系列原始模型,未区别于一般检测物体特征展开研究。由于马铃薯种薯芽眼随机分布在表面,与整体背景较为相似,不易进行检测,同时种薯芽眼位于表面凹陷处,对于凹陷区域较浅的芽眼经过多次下采样后会造成特征信息丢失,在特征融合处效果较差。YOLO系列原始模型并未针对以上种薯芽眼特征存在的问题进行具体分析,为实现种薯芽眼精准高效检测,本文提出一种基于改进YOLO v5s的马铃薯种薯芽眼检测方法。马铃薯种薯芽眼与马铃薯整体背景较为相似,为抑制除芽眼外的马铃薯背景,使用CBAM卷积注意力机制去除冗余特征,增强有用信息,使其对芽眼特征信息更加关注;马铃薯种薯芽眼特征融合效果差,使用加权双向特征金字塔网络BiFPN,引入骨干原始特征信息,同时为不同尺度特征图赋予不同权重,使得马铃薯种薯芽眼多尺度特征融合更加合理;引入解耦头,将检测头中分类问题和回归任务分开计算,加快模型的收敛速度,以进一步提升马铃薯芽眼检测性能。
1 马铃薯种薯芽眼检测模型
1.1 改进的YOLO v5s模型
YOLO v5网络根据模型深度倍数(Depth_Multiple)和层通道倍数(Width_Multiple)分为n、s、m、l和x 5种版本,同时模型的复杂度也依次增加,在牺牲检测速度的情况下提高检测精度。考虑到农业工程应用以实时检测为主,本文选择基于改进的YOLO v5s进行马铃薯芽眼检测。YOLO v5s网络模型分为4部分:输入端(Input)、骨干网络(Backbone)、颈部网络(Neck)、预测端(Prediction Head)。输入端通过Mosaic数据增加、自适应锚框计算和自适应图像缩放,以此来达到丰富背景信息,计算最佳锚点框以及原图缩放到统一标准尺寸的目的。骨干网络由CBS、Bottleneck CSP和SPPF组成,在最新的版本中使用6×6的Conv卷积模块替换了Focus切片操作,使用串行的SPPF替换了并行的SPP,减少计算量,在相同的精度条件下提高检测速度。颈部网络采用FPN+PAN结构,FPN传递高层的语义特征到低层特征中,增强语义信息利于分类,添加自底向上的PAN弥补并加强了位置信息。预测端将颈部网络输出的3个特征图作为网络的输出,维度分别为80×80、40×40和20×20,分别用于检测小目标、中目标和大目标。
本文首先针对马铃薯种薯芽眼与背景相似的问题,在检测头前端引入CBAM注意力机制,实现抑制背景的干扰,更加突出种薯芽眼的特征。其次将FPN+PAN特征融合更换为更加有效的多尺度特征融合方法BiFPN,解决特征信息融合尺度不一致问题。最后把传统耦合头替换为解耦头,使得模型收敛速度更快,提升模型整体性能。改进后的YOLO v5s芽眼检测整体网络架构如图1所示。
图1 改进后YOLO v5s整体网络架构
1.2 CBAM注意力机制
为了从复杂的特征信息中获取芽眼关键特征信息,并考虑到芽眼与马铃薯整体较为相似的特性,本文引入了卷积注意力机制(Convolutional block attention module,CBAM)[26]进行强化芽眼目标信息,抑制背景信息。CBAM结合了特征通道和特征空间2个维度的注意力机制,分别负责寻找重要信息和确定重要信息位置,两者结合对特征信息进行权重分配,将有限的计算资源分配给重要的目标,其模块结构如图2所示,图中H为输入图像高度,W为输入图像宽度,C为特征通道数。
图2 CBAM注意力模块结构
输入特征图F首先经过通道注意力模块,分别进行2个并行的全局最大池化(Global max pooling,GMP)和全局平均池化(Global average pooling,GAP),得到2个C×1×1的特征图,然后将其分别送入共享的2层全连接层MLP中,激活函数为ReLU,得到卷积输出的2个一维矢量进行element-wise的加和操作,最后使用Sigmoid激活,计算式为
(1)
式中MC——通道注意力模块特征图
σ——Sigmoid激活函数
Favg——平均池化特征图
Fmax——最大池化特征图
Wi——输入的共享权重
经通道注意力模块处理后的特征图与输入特征图F相乘,得到特征图F′作为空间注意力模块的输入,首先通过基于通道注意力模块的池化处理,得到2个1×H×W的特征图再进行相加,然后将经过7×7 Conv卷积以及Sigmoid激活函数生成的特征图MS与特征图F′相乘,计算式为
(2)
1.3 加权双向特征金字塔BiFPN
为了提升经下采样得到不同种薯芽眼特征图的融合能力,本文将YOLO v5的Neck网络中的FPN+PAN特征融合更换为加权双向特征金字塔网络(Bidirectional feature pyramid network,BiFPN),BiFPN的主要贡献为:高效的双向跨尺度连接和带权重的特征融合机制。
PANet虽然提供自底向上的特征融合层,加强了位置信息,但输入是经FPN结构处理的特征信息,缺乏骨干网络提取到的特征中的原始特征信息。为解决该问题,BiFPN在同一层中的原始输入节点和输出节点之间添加了一条额外的特征融合边,旨在不增加太多成本的情况下融合更多的原始特征,同时删除了只有一条输入边且没有特征融合的节点,从而简化特征融合网络,其结构如图3所示。
图3 不同特征金字塔结构
传统的特征融合只是简单地将不同的特征图相加,并未考虑到不同分辨率的特征图对融合输入时贡献度也有所不同,因此简单地对其相加并不是最佳操作。为了解决这一问题,BiFPN引入快速归一化特征融合机制,对不同尺度的芽眼特征赋予不同的权重,其计算式为
(3)
其中,wi表示输入特征Ii对应一个可学习的权重,为了保证wi≥0,在每个wi前采用ReLU激活函数,并将初始学习率ε设置为0.001以此来避免数值不稳定。P4层的2个特征融合过程计算式为
(4)
(5)
Resize——上采样或下采样操作
Conv()——卷积
1.4 Decoupled Head解耦检测头
为了解决种薯芽眼分类问题和回归任务的冲突,加快模型的收敛速度,提高模型的整体性能,本文将YOLO v5中Head耦合头替换为Decoupled Head解耦头结构。SONG等[27]提出目标检测算法的分类问题和回归任务是互斥的关系,即分类和回归的关注点不同,分类更加关注目标的纹理内容,回归更加关注目标的边缘信息。原始YOLO v5的检测头为耦合头,将分类问题和回归任务合并在一起计算,分类和回归分支共享参数。但这会存在一个问题,若网络模型过分关注分类的信息,则更加明显的马铃薯种薯芽眼特征响应值会很高,只框选出芽眼明显部分,对定位造成很大影响,导致芽眼检测位置不准确,同时也会引起训练过程中收敛速度较慢的问题。为解决该问题,引入Decoupled Head解耦头结构可以将分类问题和回归任务分开计算,使二者关注目标更加明确,加快收敛速度。
YOLOX在检测头上使用Anchor-free的解耦头对分类和回归分支解耦计算,同时新增2个额外的3×3 CBS卷积模块,虽提升了检测精度,但在一定程度上增加了模型复杂度。为此本文在YOLOX基础上进行了精简设计,如图4所示,删除了1×1Conv 降维卷积,采用检测头的维度由主干和颈部的宽度系数共同缩放,并删除了2个分支中额外一个3×3 CBS卷积模块。删除这2部分的目的是因为过多卷积层会造成计算量增加以及部分信息丢失,同时为每个CBS模块添加残差边,旨在降低网络优化难度,并在不增加成本的情况下提高检测头性能。
图4 改进后的Decoupled Head
2 数据准备与模型训练
2.1 数据集构建
数据集采集地点为山东省滕州市其祥马铃薯种植合作社,样本种薯品种为“荷兰15号”和“中薯3号”。种薯采集样本的品质会对芽眼的检测造成重要影响,因此选择无病害、干腐、病斑、虫眼等储存状况良好的马铃薯种薯作为采集样本。采集后的数据集经人工剔除冗余、像素质量差的图像,共931幅种薯图像。为避免数据集样本过少影响其模型训练效果和泛化性能,本文采用翻转、旋转、改变亮度和添加噪声的方式进行数据扩充,经过扩充及处理后的数据集总共3 936幅图像,部分样本图像如图5所示。利用LabelImg软件对马铃薯种薯图像中芽眼进行标注,标注后的数据集按9∶1的比例划分为训练集(3 542幅)和验证集(394幅)。
2.2 试验环境与参数设置
试验过程在Win 11操作系统下进行,处理器型号为12th Gen Intel(R) Core(TM) i7-12700K 3.60 GHz,显卡型号为Nvidia GeForce RTX 3080Ti。深度学习框架为Pytorch,编程平台为PyCharm,软件环境为CUDA 11.6和CuDNN 8.0.5版本,所用编程语言为Python 3.8。
为提高算法性能,减少过拟合,训练采用的批量大小(batch size)为16,初始学习率设置为0.01,动量设置为0.937,训练总轮数设置为200,后续不同算法对比试验中也将保持统一变量。
2.3 评价指标
为了通过检测结果来评价改进后YOLO v5s模型的性能,选用准确率(Precision,P)、召回率(Recall,R)、平均精度均值(Mean average precision,mAP)和帧率(Frames per second,FPS)作为评价指标。
3 试验结果与分析
3.1 YOLO v5版本对比试验
YOLO v5s、YOLO v5m、YOLO v5l和YOLO v5x的4个版本在速度和精度之间提供了不同的权衡,以适应不同的计算能力和实时性的需求,为了选择合适的版本作为基线模型,进行了不同版本的YOLO v5对比试验,试验结果如表1所示。
表1 YOLO v5不同版本性能比较
可以看出,YOLO v5各版本模型的平均精度均值相差并不大的情况下,在参数量(Parames)和浮点运算数(GFLOPs)方面,其他3个版本模型比YOLO v5s模型增加3~13倍,同时也引起FPS降低和权重文件增大,综合性能不如YOLO v5s模型。分析其模型复杂度增加但平均精度均值并未有明显提升的原因可能是芽眼目标较为单一,当使用m、l和x版本模型时,由于网络所含残差结构的个数和卷积核的个数不断增加,对芽眼特征提取操作次数也越多,造成芽眼特征信息丢失,使得检测精度并未有大幅度提升。
综上所述,本研究所使用的马铃薯种薯芽眼数据集相对较小,目标样本较单调,因此使用较浅层的网络即可充分提取特征,同时考虑后续在实际应用中需要对模型进行边缘端部署等原因,选用复杂度较低且具有较高检测精度的YOLO v5s模型作为基线模型进行改进。
3.2 不同解耦头应用于YOLO v5s的性能比较
为了评价改进后的解耦头与YOLOX解耦头在YOLO v5s模型中的性能优劣,分别单独加入YOLO v5s模型中进行试验,结果如表2所示。可以看出,改进后解耦头的参数量相较于YOLOX解耦头参数量(Parames)有所下降,并且浮点运算数(GFLOPs)减少约50%,说明删除1×1 Conv降维卷积和一个3×3 CBS卷积模块后可降低计算量的有效性;同时改进解耦头在计算量下降的情况下,为每个CBS模块添加残差边使得平均精度均值仍然有0.4个百分点的提升,这进一步说明本文解耦头有着更优的性能。
表2 不同解耦头性能比较
改进前后平均精度均值曲线如图6所示。由图6 可以看出,使用改进后的解耦头代替原模型耦合头能达到收敛速度更快、性能更好的效果。
图6 改进前后mAP曲线对比
3.3 消融试验
为实现马铃薯种薯芽眼精准高效检测,本文基于原始YOLO v5s模型,提出更有效的网络模型:加入卷积注意力模块CBAM,引入BiFPN特征融合结构,更换解耦头,并分别进行4组消融试验验证,试验结果如表3所示。
表3 消融试验结果
从表3中可知,加入CBAM注意力机制后,检测模型的mAP提高2.4个百分点,表明加入CBAM后模型能够更加准确地检测种薯芽眼信息;引入BiFPN特征融合结构,能够融合更多主干网络提取的原始特征并且让特征融合更加合理,mAP较原始模型提高1.6个百分点;将YOLO v5s原始模型的耦合头替换为改进后的解耦头,mAP提高2.4个百分点,表明替换解耦头能够解决种薯芽眼特征在分类问题和回归任务的冲突,这不仅使得模型加快收敛速度,而且还提高了整体检测性能。本文提出的改进模型,准确率达到93.3%,较原始模型增长0.9个百分点,同时召回率增加1.7个百分点,mAP提升3.2个百分点。以上数据说明了与YOLO v5s相比,本文模型有更强的特征提取能力和多尺度融合性能,在马铃薯种薯芽眼检测上有更好的表现。
为了更加直观地展示本文模型与YOLO v5s原始模型对马铃薯种薯芽眼特征的关注程度不同,文中使用Grad-CAM[28]中类激活热力图分别对2个模型输出层进行可视化分析,即通过类激活热力图中某一区域的亮度来表示该区域在预测输出过程所占的权重,颜色鲜亮区域面积越大,表示预测输出关注度越高,反之亦然。2个模型的类激活热力图如图7所示,可以看出本文模型对马铃薯种薯芽眼的特征预测输出权重分配更高,对于不显眼的马铃薯种薯芽眼也能得到更多关注,避免造成漏检;而且本文模型相较于原始模型在同一处的马铃薯种薯芽眼检测置信度更高,具有更好的鲁棒性。通过类激活热力图可以看出本文模型更适合马铃薯种薯芽眼特征检测。
图7 类激活热力图
3.4 与其他模型对比试验
为了验证本文所提出模型的有效性,将本文改进后的YOLO v5s模型与其他主流检测模型进行对比试验,所有模型均在同一数据集和同一训练设备下采用控制变量原则进行试验,结果如表4所示。
表4 改进模型与其他检测模型对比
由表4可以看出,与YOLO其他系列原始模型相比,YOLO v5s原始模型综合性能要优于其他系列模型,证明了本文选择YOLO v5s作为基线模型的可行性。在针对马铃薯种薯芽眼检测,改进YOLO v5s模型准确率最优,与Faster R-CNN、YOLO v3、YOLO v6、YOLOX和YOLO v7等模型相比,mAP分别提高8.4、3.1、9.0、12.9、4.4个百分点,并且在模型内存占用量和帧率上也具有较大优势。召回率对比中,改进YOLO v5s模型略低于YOLO v3模型,主要是因为准确率和召回率存在一定的此消彼长关系,当模型降低了对芽眼检测要求,芽眼漏检数量将会减少,代表着预测出了更多的种薯芽眼,但这也会增加芽眼检测错误数量。由于本文模型加入高效解耦头,导致模型内存占用量与原始模型相比由13.6 MB 增加到25.8 MB、检测帧率由35.7 f/s降至32.4 f/s,但由于在种薯芽眼检测中更加注重准确率的提升,且帧率的略微下降并不影响实际应用,因此本文模型在兼顾准确率和召回率情况下,仍能保证最高平均精度均值和较高的帧率,综合性能最优。
3.5 种薯自动切块芽眼检测试验
为了评估本文所提出改进YOLO v5s模型在实际种薯自动切块芽眼检测的性能,在自制的马铃薯种薯自动切块装置进行试验,如图8所示。将种薯放置在CCD相机下,经相机采集到种薯图像后,传输给计算机中改进的YOLO v5s模型进行芽眼检测,便于下一步根据检测到的种薯芽眼位置,通过切刀决策方法控制切刀运动实现种薯切块。从种薯表面检测出芽眼是自动切块的重要前提,同时考虑到种薯图像受拍摄设备及环境影响,且实际应用中希望检测得到更多的种薯芽眼,相较于准确率,召回率能更好地反映本文模型的性能。因此在试验结果中主要对召回率进行计算,并将置信度阈值设置为0.35。
图8 马铃薯种薯自动切块装置
试验结果如表5所示。可以看出,3种不同品种的种薯进行实际检测应用中,改进YOLO v5s模型漏检数明显下降,不同种薯品种的平均召回率达到91.5%,相较于原始模型提高17.5个百分点,说明了本文模型在实际种薯自动切块芽眼检测中拥有更强的多尺度性能以及对芽眼具有更多的关注度,能够降低漏检率,从而保证后续切刀根据芽眼位置做出姿态调整的精准性,避免切伤芽眼造成种薯浪费。
表5 马铃薯种薯芽眼检测结果统计
图9分别为荷兰15号、尤金885和中薯3号3种品种种薯的漏检与误检情况。可以看出,YOLO v5s原始模型存在不同程度的漏检现象(图中椭圆形所示),即使较为明显的芽眼特征也未被检测出,其原因是因为种薯芽眼特征在种薯表面不明显,在通过主干网络下采样以及FPN结构上采样过程后会造成特征信息丢失,导致在检测头处因特征信息不足引起漏检。而本文所提出的改进YOLO v5s模型能够有效避免该问题,并且能够检测到种薯边缘部分较小区域芽眼,漏检率较低。同时不同品种检测过程中YOLO v5s原始模型也存在主要以下3种误检情况:图9a原始模型将种薯表面的破损表皮误检为芽眼;图9b原始模型将种薯表面的裂痕误检为芽眼;图9c原始模型将种薯表面存在的泥土误检为芽眼。使用改进后的YOLO v5s模型进行检测可有效改善上述误检情况,降低误检率。
图9 实际应用检测结果对比
通过将本文所提模型应用到实际种薯自动切块装置中,与原始模型相比能够检测到更多芽眼,并且能够有效避免误检情况的发生,这说明位于检测头前端的CBAM注意力机制增加了对芽眼特征的权重分配,能够从相似背景下检测出芽眼;BiFPN中增添额外的特征融合边,引入了更多下采样过程中的原始特征信息,丰富了芽眼特征信息,同时带权重的特征融合机制也为芽眼特征分配到更多的权重,避免了特征信息的丢失;改进的解耦头能够解决分类和回归的冲突,分别更好地关注了芽眼目标的纹理内容和边缘信息。综上可知,本文提出的改进YOLO v5s模型能够更好地应用于实际种薯自动切块芽眼检测。
4 结论
(1)为实现种薯芽眼精准高效检测,本文提出一种基于改进YOLO v5s的马铃薯种薯芽眼检测方法。首先通过加入CBAM注意力机制,加强对马铃薯种薯芽眼图像的特征学习和特征提取,同时弱化与芽眼相似的马铃薯种薯表面背景对检测结果的影响;其次引入加权双向特征金字塔BiFPN增加经骨干网络提取的种薯芽眼原始信息,为不同尺度特征图赋予不同权重,使得多尺度特征融合更加合理;最后替换为改进的高效解耦头Decoupled Head区分回归和分类,加快模型收敛速度,进一步提升马铃薯种薯芽眼检测性能。
(2)试验结果表明,改进YOLO v5s模型准确率、召回率和平均精度均值分别为93.3%、93.4%和95.2%;相比原始YOLO v5s模型,平均精度均值提高3.2个百分点,准确率和召回率分别提高0.9、1.7个百分点;不同模型对比分析表明,改进YOLO v5s模型与Faster R-CNN、YOLO v3、YOLO v6、YOLOX和YOLO v7等模型相比有着较大优势,平均精度均值分别提高8.4、3.1、9.0、12.9、4.4个百分点。
(3)在种薯自动切块芽眼检测试验中,改进YOLO v5s模型平均召回率为91.5%,相比原始YOLO v5s模型提高17.5个百分点,本文提出的改进YOLO v5s模型能够更好地应用于实际种薯自动切块芽眼检测。