结合轻量卷积和注意机制的YOLOv5麦穗检测算法
2023-06-27刘双艳葛华勇段家辉
刘双艳,葛华勇,段家辉
(东华大学信息科学与技术学院,上海 201620)
0 引言
小麦麦穗数量的检测在产量评估、种植密度估计和基因性状评估等方面都有一定的应用价值,目前在麦穗计数方面有较多相关的研究。小麦产量的评估一般是统计单位面积内麦穗的个数,通过人工计数结果较为准确,但是会浪费人力资源,并且由于没有统一的计数标准,结果会受主观影响。利用数字图像处理技术进行计数能更加高效且节省资源,但缺点是精确度不够高。
随着人工智能的快速发展,深度学习成为当前研究的热点。将深度学习技术应用在小麦麦穗检测方面,选取合适的网络进行训练,利用数据训练的模型自动检测麦穗,可以满足预估小麦产量的要求,同时也将提高小麦麦穗计数的效率,减少人工田间的工作量,并且拥有较高的准确率。基于深度学习的目标检测方法中,最具代表性的算法是YOLO(you only look once)[1],其高效、灵活和泛化性能好,在工业界十分受欢迎,能够满足麦穗检测的基本要求。
深度学习的网络模型的计算量和参数量尤为巨大,以及硬件资源的匮乏,这对检测效果和嵌入式设备和移动端的部署是不利的,使网络模型更加轻量化是解决问题的关键。考虑到一些特征图的冗余信息可能是成功模型的重要组成部分, Han 等[2]提出了新型轻量卷积模块Ghost Module,尝试使用一系列线性转换等计算量小的操作来获取这些冗余信息,并将这些冗余的特征图称为Ghost,旨在获取轻量化的模型。除了在网络计算量上进行改进,增加网络精度也能达到提高网络性能的效果。注意力机制结合全局信息,让模型更关注于重要的区域,筛选当前任务较为关键的信息,提高网络检测性能。Woo 等[3]提出的注意力机制模块CBAM,将特征信息分为通道域和空间域,算法分别在两个独立的维度进行学习,更能识别出重要信息。陈啟超等[4]在阴影检测技术中添加了注意力机制,在原有模型中搭建注意力机制模块,使得检测能力进一步提升。高明柯等[5]在手势识别过程中为了不丢失动态手势的重要信息,引进了基于特征融合和注意力机制的手势识别方法,通过实验验证了方法的有效性和鲁棒性。
本研究以来自不同大陆的Global Wheat大规模麦穗数据集为研究对象,研究了基于改进的YOLOv5 网络的麦穗自动检测方法。在YOLOv5的基础上进行了如下的研究和改进:①为了减少算法的计算时间并提高检测速度,将Leaky-ReLu代替SILU作为整个网络的激活函数;②在YOLOv5的基础上进行模型优化,在每一个多尺度特称融合之后加入CBAM 注意力网络,关注图上有意义的信息和目标的位置信息,并抑制不重要的信息,提取更丰富全面的特征;③结合GhostNet 的Ghost 模块用于替代网络中的普通卷积层,同时将Ghostbottleneck 代替Neck 中的C3 模块,达到有效降低模型的参数量并提升算法性能的效果。
1 目标检测网络
1.1 YOLOv5目标检测
YOLOv5 网络的结构主要包括输入端Backbone、Neck、Prediction 三部分,输入端采用Mosaic 方法进行数据增强,同时具备自适应的图片缩放以及锚框计算等功能。待检图片首先由Backbone 进行特征提取,获取三个有效特征层,进行下一步网络的构建。
其在CSP Darknet53[6]结构的基础上,加入简化版Bottleneck CSP 的C3 模块,由于C3 部分只有3 个卷积,因此可以减少参数。SPPF 结构与SPP(spatial pyramid pooling)[7]结构作用一样,但SPPF 结构效率更高、速度更快。如通过不同池化核大小的最大池化进行特征提取,提高网络的感受野。在YOLOv4[8]中,SPP 是用在FPN里面的;在YOLOv5 中,SPPF 模块被用在了主干特征提取网络中,如图1 所示。YOLOv5 整体框架如图2所示。YOLOv5中的Neck端融合FPN(feature pyramid network)+PAN(path aggregation network)结构,特征金字塔结构中引入了CSP结构,每个C3 模块中都含有CSP 结构。网络的Prediction 模块采用的损失函数为GIOU_Loss,采用YOLOv3[9]的Head 结构,对三个不同尺度进行检测结果的预测。
图1 SPPF模块
图2 YOLOv5s网络结构
1.2 相关检测网络
(1)注意力机制。注意力机制本质上分为三种:空间注意力模型(spatial attention),通道注意力模型(channel attention)和混合注意力模型。其中,后者中最典型的机制是CBAM 混合注意机制,结合了通道和空间注意力模块,能够关注图上有意义的信息和目标的位置信息,并抑制不重要的信息,提取的特征更丰富全面。在神经网络中引入CBAM,所增加的模型参数量和开销可忽略,但能明显地提高检测和分类的精度。
(2)Ghost模块。Ghost模块是一种新型轻量卷积模块,Ghost 模块可以代替卷积网络中的每一个卷积层。将与原本特征图(intrinsic)相似的特征图称为魅影(ghost),普通的卷积操作运算量非常之大,被简单的操作生成的ghost 图所代替,将使得模型更加轻量化。
2 改进算法的网络结构
2.1 网络整体结构
改进的YOLO 网络结构如图3 所示。
图3 改进的YOLO网络结构
主干网络对输入图像进行特征提取,分别得到了128×128,256×256, 512×512 三个不同尺度的有效特征层。在512×512 大小的特征图输入到SPPF 模块之后,采用CBAM 模块对输出进行处理,YOLOv5 的PANet 将三个不同尺度的特征图进行自上而下和自下而上两条路径上的融合。改进的YOLOv5 中,将融合之后的特征图输入CBAM 模块,关注图上有意义的信息和目标的位置信息,并抑制不重要的信息,提取更丰富全面的特征。将普通卷积替换成轻量型的GhostConv,并且将Bottle neckcsp 换成了GhostBottleneck,旨在降低Neck 部分的参数计算量,使得整个模型更加地轻量化。并采用LeakyRelu函数激活,相较于SiLU激活能够一定程度上减少计算量。
2.2 特征融合添加注意力机制
CBAM 注意力机制结合了通道和空间注意力模块,能够识别有用的信息并抑制大量冗余信息。本文对YOLOv5 中的FPN 结构进行了改进,提出在每两个特征进行Concat 堆叠之后添加CBAM 注意力机制,在空间和通道两个维度进行Attention 操作,使网络更加关注图上有意义的信息和目标的位置信息,并抑制不重要的信息,提取更丰富全面的特征。CBAM 模块结构如图4所示。
图4 CBAM模块
CBAM 注意力机制先通过通道注意力模块进行空间的压缩,学习图上有用的内容,H*W*C大小的特征图输入后,首先进行了全局最大池化和局部最大池化等运算,运算结果输入共享全连接层,将输出特征图的像素点进行相加,之后由Sigmoid 函数激活,最终生成通道注意特征图,再与输入图片的像素点进行相乘操作,作为空间注意机制的输入。
空间注意机制是对通道维度的压缩。基于通道维度进行Maxpooling 和Avgpooling,得到两个H*W*1 的输出,进行Concat 之后,再进行卷积操作,降低维度,经过Sigmoid 函数激活,得到空间注意特征图,再与输入feature 进行像素点的相乘操作,得到最后的特征,CBAM 注意力机制各部分的具体公式如下:
其中:σ运算表示Sigmoid 函数激活;AvgPool、MaxPool分别表示全局池化和最大池化;⊗表示对应像素点相乘,⊕表示对应像素点相加。
2.3 轻量型卷积的引进
原网络中卷积层全部使用SiLU 激活函数推理速度较低,为了减少算法的计算时间并提高检测速度,将LeakyReLu 代替SiLU 作为整个网络的激活函数。
为了使得模型计算量更小,引入Ghost模块替换普通卷积层,Ghost 模块结构如图5 所示。在初步卷积操作中,卷积核是普通卷积层的一半,从而减少一半的计算量,称为少量卷积,因此可得到一半通道的特征图,次级卷积操作逐个将初级卷积输出的特征图进行3*3或5*5的卷积,称为廉价操作,得到另一半幽灵(ghost)特征图。
图5 GhostConv
普通卷积和Ghost卷积的计算量公式以及普通卷积和轻量卷积计算量的比值如下:
其中:h'、w'表示特征图的高和宽,k表示卷积核大小。d表示3 或者5(3*3 或5*5 的卷积)。FLOPs1表示普通卷积的计算量,FLOPs2表示轻量卷积的计算量。可以看出,用GhostModule 模块,FLOPs一般可减少为原来的1/2。
3 实验与结果分析
3.1 数据集处理和网络训练
为验证本文所提出的改进YOLOv5 的性能,在Global Wheat 2020 数据集上进行了训练和测试。Global Wheat 2020 麦穗来自不同国家不同地区的小麦,是目前使用最多的麦穗检测数据集。输入模型之前,对图像进行了数据增强,如调整对比度、饱和度、亮度(包括调亮和调暗)以及水平翻转来丰富数据集,提高泛化能力。研究中使用训练集900张、验证集747张共1647 张麦穗图像。实验中9 个先验框的尺寸如表1所示。
表1 先验框大小
实验所用的硬件设备为NVIDIA GeForce RTX 3090,使用Python 语言在Torch1.10.0 +cu113 CUDA 框架下实现算法。输入网络的图片分辨率大小为640×640,采用随机梯度下降优化器,权重衰减设置为0.0005。初始学习率是0.01,最终学习率0.1,SGD 动量为0.937,优化权重衰减系数是0.0005,训练轮次300 次,batchsize=16,前3 个epoch 进行学习率预热,其初始化动量为0.8,初始bias学习率为0.1。边界框损失系数设为0.05,分类损失系数为0.5,IoU训练阈值设为0.2,边界框的长宽比阈值为4.0。
表2 列出了改进网络前后的参数模型对比。网络参数从701 万减少到了570 万,降低了18.59 %。
表2 参数量对比
3.2 测试结果
把训练后的网络在GlobalWheat2020 测试集上进行了检测,获得了图6 所示的召回率-精确度曲线。
图6 YOLOv5s和改进YOLO的检测召回率-精确度曲线对比
表3进一步将改进前后的网络特性进行了比较。根据表3可知,改进YOLO 算法与YOLOv5s算法相比,平均检测精度提高了1.3 个百分点;在相同数据集的情况下,改进YOLO 算法的检测用时更少,检测速度相比于YOLOv5s 有17.6%的提升。实验得出改进前后算法检测图片的对比如图7所示。
表3 性能对比
图7 YOLOv5和改进YOLO检测结果对比
图7 (a)和(b)的两组图片表示YOLOv5 和改进网络的检测结果对比。其中,每组左列的标注框是YOLOv5 未检测到的麦穗,(a)组中,YOLOv5会漏检一些小麦穗和被遮挡的麦穗,而改进的算法均会将这些麦穗检测出来,对小物体和被遮挡物体的检测效果明显提升。(b)组实验结果表明,改进算法比YOLOv5 检测出更多位于图像边缘的麦穗。对比YOLOv5 和改进算法的检测结果发现,YOLOv5对小目标的漏检现象严重,对于图片中不完整的麦穗,尤其是图片边缘的物体,存在漏检、误检、检测精度不高的现象。另外,对于背景模糊的图像,麦穗的检测也存在缺陷,比如拥挤的麦穗只用一个边界框标注。改进后的网络对遮挡不完整且尺寸较小的麦穗的检测能力提高明显。即使背景图像模糊、出现在图像边缘不完整的麦穗,改进的网络也会准确检测出来,并且可以看出,改进的YOLO 算法检测到的麦穗整体的平均精度更大一些。
3.3 不同改进策略的实验对比
本文开展了一系列的对照试验,①将网络所有卷积层的SiLU 激活函数修改为LeakyRelu函数;②在①的基础上,添加CBAM 注意力机制模块:在主干网络的SPPF 模块后添加CBAM模块,在FPN部分的每两个特征图叠加(concat)之后添加CBAM 模块;③在②的基础上引入GhostNet,即将FPN 网络里的普通卷积替换成Ghost 轻量化卷积模块,把bottleneckCSP 替换成相应的Ghostbottleneck模块。分别将以上改进策略做实验,效果如表4所示。
通过实验对比可以发现:将网络所有卷积层的SiLU 激活函数修改为LeakyRelu 函数提高了网络检测速度,但参数数量并没有提升;进一步添加CBAM 注意力机制模块之后,检测时间虽增加0.3 ms,但是检测精度提升至92.0%,Ghostmodule 和Ghostbottleneck 结构的引入使得网络的检测精度由92.0%提高到了92.3%,检测时间从10.2 ms 减少到了8.5 ms,检测速度提升了17.6%。综上,本文针对YOLOv5 的改进策略能够提升复杂场景下的麦穗检测效果。
表4 不同改进策略的实验结果对比
4 结语
本文在YOLOv5 的基础上,引进了轻量级GhostNet模块、注意力机制CBAM 模块,改进了激活函数,使得网络整体精度提升了1.3 个百分点,速度提升了17.6%。结合Ghost 模块的轻量型思想,能够很大程度上同时提高检测的速度和精确度。引进的注意力模块技术可以更有效地改善网络检测准确度。改进后的网络对遮挡不完整且尺寸较小的麦穗的检测能力明显提高,同时也会检测出来背景图像模糊、出现在图像边缘不完整的麦穗目标。由于现有的麦穗数据集中,所含有的边缘不完整麦穗和小目标麦穗的数量较少,能否对其数据集改善并扩充,以及如何提升网络的速度和精度是今后的研究方向。