基于改进YOLOv5的番茄识别检测算法
2023-03-04丁仁集陈丙三
丁仁集,陈丙三
(福建理工大学 机械与汽车工程学院,福建 福州 350118)
随着智慧农业的发展,机器人自动采摘在番茄产业中得到了推广和应用。比起人工采摘,机器人自动采摘虽然省时高效,但对番茄果实的识别准确性还需要进一步提高。研究目标识别检测算法有助于提高番茄机器人自动采摘效率,促进番茄产业的智能化发展[1-2]。
基于卷积神经网络的目标识别算法已在农场番茄识别检测中得到广泛应用。张文静[3]等提出用改进的Faster-RCNN[4]模型识别自然环境下的番茄,但其检测效率低下且在复杂环境下不能保证较高的检测精度。成伟[5]等提出改进的YOLOv3[6]模型,用于识别温室中的番茄,平均精度为95.7%,但对于小番茄仍存在误检和漏检。近年来,YOLO系列目标检测算法被不断更新,YOLOv5的设计在精度、召回率和平均精度等方面都达到了最佳性能,是番茄检测的理想模型,但在番茄果实存在遮挡或果实与背景颜色相似情况下,检测效果仍不理想。
针对上述问题,本研究提出一种基于改进YOLOv5的番茄识别检测算法,优化了YOLOv5原始算法的主要模块 BottleneckCSP ,通过增加批归一化层与SILU激活函数提升网络对目标深层语义信息的提取能力;使用轻量级通用上采样CARAFE算子增加感受野;引入无参注意力机制SimAM增强有效特征,抑制干扰特征;使用SIoU Loss作为模型的损失函数优化回归过程,提升模型检测性能。
1 YOLOv5算法
YOLOv5是一种单阶段目标检测算法,它汲取了许多优秀网络结构的优点,确保高检测精度的同时还能维持较高的检测速度,能够做到实时检测目标。YOLOv5由输入端、主干网络(Backbone)、颈部网络(Neck)和输出检测层(Head)4部分组成,其结构如图1所示。
图1 YOLOv5 结构Fig.1 Structure of YOLOv5
2 改进YOLOv5算法
2.1 优化BottleneckCSP模块
BottleneckCSP模块是YOLOv5的重要组成部分,用于构建骨干网络。其中Bottleneck模块(如图2所示)是BottleneckCSP的主要构成,该模块采用的是残差结构,即将卷积核尺寸为1×1的卷积层与3×3的卷积层相连,并为每一个卷积层配置了一个BN层和一个激活函数。再将该部分的输出与输入相加,形成残差结构,作为Bottleneck模块的输出。
图2 Bottleneck 结构Fig.2 Structure of Bottleneck
BottleneckCSP模块(如图3所示)的主要作用是将输入特征图分别送入两个分支,并对这两个分支进行卷积操作,使其特征图的通道数减半。其中一个分支先与Bottleneck模块相连进行数据降维操作,再通过常规卷积进行升维;然后经过Conv层,使用Concat操作将两个分支的输出特征图深度连接;最后通过BN层和Conv层依次处理,得到BottleneckCSP模块的输出特征图,其尺寸与输入BottleneckCSP模块特征图尺寸相同。
图3 BottleneckCSP 结构Fig.3 Structure of BottleneckCSP
本研究在BottleneckCSP模块的基础上进行改进,在其上层的卷积层后面添加了一个批归一化层和一个SiLU激活函数,形成了卷积模块CBS。通过加入批归一化层,既提升了算法的特征提取能力,又确保了算法的稳定性。引入SiLU激活函数可以增加算法的非线性因素,将含有更多目标位置与细节信息的低层特征图、含有更强语义信息的高层特征图进行融合,使得改进后的BottleneckCSP模块的输出特征图可以包含更多细节信息和更强的语义信息,从而提升了BottleneckCSP模块的特征提取能力。改进后的BottleneckCSP模块如图4所示,命名为BottleneckCSP_D模块。
图4 BottleneckCSP_D 结构图Fig.4 Structure of BottleneckCSP_D
2.2 CARAFE 轻量级通用上采样算子
YOLOv5原始算法默认使用最近邻插值,仅根据像素点的空间位置来确定上采样核,并未充分利用特征图的语义信息,可以将其看作是一种“均匀”的上采样方式,但感知域通常较小。为了解决该问题,本研究的番茄识别检测算法引入了轻量高效的上采样算子CARAFE[7],通过少量参数和计算保持轻量级功能并扩大感受野。CARAFE由上采样预测模块和特征重组两个模块构成,如图5所示。
图5 CARAFE 上采样结构Fig.5 Up-sampling structure of CARAFE
2.3 SimAM 注意力机制
当待检测目标和背景环境相似时,在神经网络中添加注意力机制可以有效地剔除不相关信息的干扰。改进的番茄识别检测算法使用了三维的无参数SimAM[8]注意力机制改进特征融合网络。与一维、二维的注意力机制相比,三维注意力机制在没有引入参数的情况下就能够更加全面高效地平衡特征的重要性,从而增强目标区域的特征权重并降低背景特征的权重。SimAM注意力机制模块如图6所示。
图6 SimAM注意力机制结构图Fig.6 Structure of SimAM attention mechanism
SimAM 注意力机制的计算过程如式(1)所示。
(1)
(2)
(3)
(4)
式中,X为输入特征,M为输入特征图的尺寸。通过对神经元进行操作,赋予带有关键信息的神经元更高的权重,提高网络的识别和定位精度,而不会增加网络的额外参数。本研究将注意力机制添加在检测头前,如图7。
图7 注意力机制添加区域Fig.7 Addition area of attention mechanism
2.4 SIoU损失函数
SIoU[9]损失函数在CIoU损失函数的基础上,定义了预测框向真实框靠近的方向,避免了预测框的游荡现象,从而可以进一步提高模型的回归精度。因此,改进的番茄识别检测算法选择SIoU损失函数来计算回归预测损失。
SIoU_Loss损失函数由4个Cost函数组成:Angle cost、Distance cost、Shape cost和IoU cost,包含的数学定义为式(5)~式(11)。Angle cost添加了LF角度感知组件,模型首先将预测框带到X或Y轴,然后沿着相对应的轴继续接近。为实现这一点,引入和定义 LF 组件如下:
(5)
(6)
Distance cost重新定义为
(7)
Shape cost 的定义为
(8)
其中,θ的值定义为每个数据集的 Shape cost,并且其值是唯一的,它控制着对Shape cost 的关注程度。
IoU cost 的定义为
(9)
其中,B表示真实框,BT表示预测框。回归损失函数SIoU为
(10)
总损失函数为
L=WboxLbox+WclsLcls
(11)
其中,Lcls是 focal loss,Wbox和Wcls分别是框和分类损失权重。
3 试验及结果分析
3.1 数据集
研究采用的数据集为 Kaggle 公开的数据集,由895张带有标注的番茄图像组成,同时实地采集400张番茄图像标注之后与公共数据集混合。为扩大数据集数量,分别对图像进行随机翻转、改变亮度、Mosaic增强和Mixup增强等操作,加上原始数据后一共有3 980张图片。对增强后的数据集按照8∶1∶1的比例划分为训练集、验证集、测试集,数据集图像,如图8所示。
图8 番茄数据集Fig.8 Tomato dataset
3.2 实验环境与参数设定
实验运行环境如表1所示。训练时,使用余弦退火算法调整学习率,采用SGD优化器进行参数更新,参数设置如表2所示。
表1 实验环境配置Tab.1 Experimental environment configuration
表2 参数设置Tab.2 Parameter settings
3.3 评价指标
采用的算法评价指标有精确率P、召回率R、平均精度AP和平均精度均值mAP等指标衡量算法性能,计算公式如下:
(12)
(13)
(14)
(15)
其中,TP表示正确检测出的番茄目标,FP表示错误检测的番茄目标,FN表示实际存在但未被检测的番茄目标,N表示标签类别数。
3.4 训练结果
在相同的配置环境下,将原始算法和改进后的算法分别进行了100轮训练。平均精度均值曲线的对比如图9所示,其中虚线代表原始的YOLOv5算法,实线代表改进后的YOLOv5算法,图9中横坐标表示训练次数,总共为100轮,纵坐标表示平均精度均值,从图9可以看出,在前20轮训练时,算法的收敛速度非常快,经过30轮训练迭代后,两个算法曲线都趋于水平,改进后算法平均精度均值明显提高,表明算法改进方案是有效的。
图9 YOLOv5改进前后对比曲线Fig.9 Comparison curve of YOLOv5 before and after improvement
3.5 注意力机制对比试验
为了验证不同的注意力机制对 YOLOv5算法的性能的影响,对比 SE、CBAM、CA 和 SimAM4种注意力机制,结果如表3所示。从表3可见,除了CA之外,其它3种算法的平均精度均值相比原始 YOLOv5 算法都有不同程度的提升。其中,SE的精确度提升较大,但召回率提升不够明显;CBAM和SimAM的精确率、召回率和平均精度均值3个指标都有一定提升,但SimAM的提升更为显著,分别比YOLOv5原始算法提高了1.9%、2.1%和1.7%,综合检测性能更好。因此,本研究选择SimAM模块进行识别检测。
表3 不同注意力机制的对比Tab.3 Comparison of different attention mechanisms
3.6 消融试验
为了验证4种改进方案的检测效果,本研究在番茄数据集上进行了消融试验和对比分析。为了确保试验的严谨性,在试验过程中使用了相同的参数配置,结果如表4所示。相较于原始YOLOv5算法,4种改进算法的性能都有不同程度的提升。
表4 消融试验结果Tab.4 Ablation test results
3.7 主流目标检测模型对比
为了进一步评估改进算法对番茄的检测性能,将改进后的算法与SSD[10]、Faster-RCNN、YOLOv4-tiny以及YOLOv5目标检测算法进行了比较。从表5可以看出,改进后的YOLOv5算法的平均精度均值和召回率都优于其他算法,相较于原始YOLOv5,平均精度均值提高了3.4%,达到96.5%;召回率提高了3.8%,达到89.1%。由于召回率的提高,改进后的算法会检测到更多的番茄目标,帧率有所下降,但仍快于SSD、Faster-RCNN和YOLOv4-tiny,满足现实番茄检测的实时性要求。
表5 主流算法性能对比Tab.5 Performance comparison of mainstream algorithms
3.8 应用检测评价
为了进一步证明改进5算法对番茄检测的有效性,对YOLOv5原始算法和改进算法在实际种植场景进行可视化比较。选择了番茄果园中的枝叶遮挡、果实遮挡、背景相似和远距离的4种复杂场景。如图10所示,原始YOLOv5算法在4种复杂场景下存在不同程度的误检和漏检问题,且检测置信度偏低。改进后的算法有效降低了原始YOLOv5检测过程中存在的误检、漏检问题,并且提高了置信度,如图11所示。综上,改进的算法在实际番茄种植场景中具有更好的检测性能。
图10 YOLOv5改进前的效果Fig.10 Effects before improvement of YOLOv5
图11 YOLOv5改进后的效果Fig.11 Effects after improvement of YOLOv5
4 结论
本研究针对当前番茄机器人检测精度较差以及对遮挡目标存在漏检的问题,提出一种基于改进YOLOv5算法的番茄目标识别检测算法。算法通过设计BottleneckCSP_D模块替换BottleneckCSP 模块,扩大感受野,增强模型的特征提取能力;引入三维无参数SimAM注意力机制,抑制了背景中无关信息的干扰,保持了检测速度的同时提高了检测精度;更换上采样为CARAFE算子,增强特征融合准确度,充分融合上下文语义信息;改进损失函数,优化边界框回归过程,提升预测锚框准确率。结果表明, 相比原始算法,改进后的YOLOv5的mAP提高了3.4%,置信度更高,对遮挡环境和背景相似环境中番茄目标的检测性能也得到了提高,其检测精度能够满足农场番茄实际采摘的需求。该算法可为番茄自动采摘提供了技术支持。