改进YOLOv5的复杂道路目标检测算法

2022-09-06 11:08王鹏飞黄汉明王梦琪
计算机工程与应用 2022年17期
关键词:注意力精度特征

王鹏飞,黄汉明,王梦琪

广西师范大学 计算机科学与工程学院,广西 桂林 541004

随着经济的发展和社会的进步,人们对高质量生活的追求不断提高,汽车成为了人们不可或缺的交通工具。数据显示,截至2021 年12 月27 日,中国机动车保有量将近4亿辆,其中汽车保有量超过3亿辆,每年新车注册数量超过3 000 万,总量和增幅均居世界首位。汽车保有量的快速增加方便了人们的出行,有效促进了中国经济的发展,但也随之加剧了道路拥堵、交通事故伤亡等道路交通问题。为了解决这些问题,国家制定了相关的法律法规,加强了道路交通管理,加大了对道路建设的投入,并对人们进行交通安全教育的普及等,这些措施颇有成效但是解决道路交通问题依旧任重道远。

近年来,人工智能快速发展,汽车自动驾驶技术成为解决传统汽车道路交通问题的重要技术,受到了许多国家及企业的广泛关注[1]。目标检测算法是汽车自动驾驶系统的基础和重要组成部分,总的来说,可以分为传统的目标检测算法以及基于深度学习的目标检测算法,传统的目标检测算法是把人工获取的目标特征信息[2-5]与机器学习分类器[6-7]结合实现目标检测,由于该类方法太过依赖人为提取特征,因此检测精度和速度都无法满足要求。基于深度学习的目标检测算法又可以分为两阶段(Two Stage)算法和一阶段(One Stage)算法[8]。两阶段算法首先生成可能包含待检测目标的候选区域,然后对生成的候选区域进行分类并进行位置校准得到最终的检测结果,代表算法主要有R-CNN[9]、Fast R-CNN[10]、Faster R-CNN[11];一阶段算法不再提取候选区域,而是将目标检测的整个过程转化成一个回归问题,从而实现对输入图像进行一次处理就能够得到目标物体的类别与位置信息,网络结构简单并且减少了大量冗余的计算,代表算法主要有YOLO[12]、SSD[13]、YOLOv2[14]、YOLOv3[15]、YOLOv4[16]、YOLOv5。YOLOv4 之前,两阶段目标检测算法的精度较高,但实时性不理想,一阶段目标检测算法在速度上有一定优势,但检测精度有所欠缺,而YOLOv4以及紧随其后的YOLOv5的提出,使得一阶段目标检测算法无论是检测精度还是检测速度都大幅超越两阶段目标检测算法。

道路背景下的目标检测算法需要快速且准确地识别并定位目标,在一般的道路背景下,现有的目标检测算法已经可以胜任,但在复杂的道路背景下,由于目标多而杂,且距离和角度变化大,会存在着密集目标的遮挡问题以及小目标的检测问题,容易造成误检和漏检,大大影响算法的检测精度[17],从而会对人们的生命财产安全造成威胁。因此,解决复杂道路背景下的密集目标遮挡问题以及小目标的检测问题具有重要意义[18]。

Cai 等人[19]引入级联分类器,对重叠率(intersection over union,IoU)的阈值进行了调整,提出了Cascade RCNN,该算法对检测框存在的噪声干扰问题进行了优化,有效提高了密集遮挡目标以及小目标的检测精度。陈幻杰等人[20]选择分类处理不同尺寸的目标,当检测中等目标时,加深网络的深度,可以提取到更多的语义特征,当检测小目标时,则引入反卷积和区域映射,以获得更高分辨率的特征图,大幅提升了中小目标的检测精度。李轩等人[21]为了解决密集目标的遮挡问题,提出了Occlusion Loss,通过提高预测框和真实框的匹配程度以使定位更加准确,与此同时,一个检测框对应多个目标的问题得到改善,目标漏检情况也相应减少,检测精度得到大幅提升。Chu等人[22]提出了EMD Loss损失函数以及Set NMS 非极大值抑制算法,在密集目标检测数据集中表现极佳。Li等人[23]提出Quality Focal Loss,将分类得分与预测的质量得分关联起来,并能够处理0到1之间的连续标签值,有效避免了之后进行非极大值抑制(non-maximum suppression,NMS)操作时出现错误抑制,提高了检测精度。可以看出,解决密集目标的遮挡问题和小目标检测问题主要通过改进回归损失函数、使用多尺度检测、改进非极大值抑制等方式。在现阶段,复杂背景下的目标检测还存在很多挑战,现有的方法尚无法满足现实需要,还需要更加深入的研究[24]。

针对复杂道路背景下的密集遮挡目标和小目标导致的误检、漏检问题,本文以YOLOv5 4.0 版本中最小体积的YOLOv5s 算法为基础进行相关研究改进,具体概述如下:

(1)为了提升YOLOv5s 在复杂道路背景下对密集遮挡目标的检测能力,引入Quality Focal Loss 回归损失函数来代替原始的Focal Loss[25],将定位目标与分类得分相关联,并能够处理连续的标签值,使得之后做NMS操作时更加合理有效。

(2)为了提升YOLOv5s 在复杂道路背景下对小目标的检测能力,增加一层浅层检测层来检测更小的目标,将原网络的三尺度检测改为四尺度检测,特征融合部分也作相应改进,增强网络对小目标的学习能力。

(3)为了弥补原始YOLOv5s 算法中特征金字塔网络[26(]feature pyramid networks,FPN)+PAN[27]特征融合结构缺少原始信息的缺点,借鉴BiFPN[28]的特征融合思想,提出了去权重的BiFPN,充分利用深层、浅层以及原始特征的信息,加强了不同部分之间的特征融合,减少了卷积过程中特征信息的丢失,提升了算法的检测精度。

(4)为了进一步提升YOLOv5s 算法在复杂道路背景下检测时的特征提取能力,引入CBAM[29]注意力机制,通过实验探究,将CBAM注意力模块嵌入至算法的检测头前,增强算法的特征学习能力,让算法更关注有用的信息。

1 YOLOv5目标检测算法

YOLOv5是Ultralytics团队在2020年6月提出的一种典型的One Stage 目标检测算法,该算法汇集了很多深度学习目标检测框架的优点,并且从提出至今,一直在更新迭代版本,本文使用的是4.0版本,其根据网络结构的深度和宽度不同,分为了YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x四个体量不同的版本,其中s最小,x 最大,本文以YOLOv5s 为基础进行相关改进,目前作者只公开了源代码,网址为https://github.com/ultralytics/yolov5,还未发表相应学术论文。YOLOv5 的网络结构如图1 所示,可知主要分为输入端、Backbone、Neck、输出端四部分。

图1 YOLOv5网络结构图Fig.1 YOLOv5 network structure

1.1 输入端

YOLOv5的输入端采用了Mosaic数据增强方式,使用随机缩放、随机裁剪、随机排布的方式进行拼接,丰富了数据集,提升了小目标检测的效果,也增强了算法的鲁棒性。Anchor方面,YOLOv5可以针对不同的数据集,自适应地计算不同训练集中的最佳锚框值。YOLOv5还使用了自适应图片缩放,简单的改进使得计算量大大减少,推理速度得到了37%的提升。

1.2 Backbone

YOLOv5 的Backbone 部分使用Focus 模块实现了快速下采样,该模块能够在没有信息丢失的情况下将信息集中到通道上,使接下来的特征提取更加充分。Backbone 部分还使用了C3 模块,即有3 次卷积的CSPBottleneck模块,增强了算法的学习能力,并且能够在保持算法检测精度的同时实现轻量化。SPP 模块的使用则提高了图像的尺度不变性,有效增加了主干特征的接收范围,更容易使网络收敛,提高了准确率。

1.3 Neck

YOLOv5 的Neck 部分使用FPN 和PAN 结合的结构。众所周知,深层特征图具有更强的语义信息,而定位信息较弱,浅层特征图具有更强的位置信息,而语义信息较弱。FPN 实现了语义信息从深层特征图到浅层特征图的传递,PAN则实现了定位信息从浅层特征层到深层特征层的传递,FPN 与PAN 组合,从不同的主干层对不同的检测层进行参数聚合,大大加强了网络的特征融合能力。

1.4 输出端

输出端的边界框回归损失函数采用CIOU_Loss,其充分考虑到了重叠面积、中心点距离、长宽比三个重要几何因素,对一些遮挡重叠的目标有所改进,大幅提升了预测框回归的速度和精度。检测层使用了Sigmoid激活函数,连续且平滑,便于求导。

YOLOv5 目标检测算法通过汇集各个算法网络的优点,使得检测速度和精度都达到了较高的水平,并且格式转换容易,更易部署。但是由于YOLOv5的实验主要是基于MS COCO 数据集[30]的,目标较为宽泛,在遮挡目标和小目标检测方面还有待改进,为此,本文选择使用YOLOv5系列中最小体积的YOLOv5s作为基础算法,通过一系列实验优化,从而得到更加适用于复杂道路的目标检测算法。

2 YOLOv5改进

2.1 Focal Loss的改进

(1)Focal Loss存在的问题

在目标检测算法中,输入一张图像会产生非常多的候选框,但这些候选框中只有很少一部分包含着目标物体,这就存在着类别不均衡问题。类别不均衡问题就是有大量负样本,这些负样本占总loss 的比重较大,并且大多比较容易分类,这就会使得算法的整体学习方向跑偏,远离人们的期望。Focal Loss的提出就是为了解决样本的类别不均衡问题,函数公式如下:

其中,y是真实标签值,p是经过激活函数的输出,即预测样本属于1 的概率,α用来平衡正负样本的权重,(1-p)γ和pγ用来调制每个样本的权重,通过这个损失函数,可以减少容易分类的样本的权重,使得算法模型在训练学习时更专注于难分类的样本,从而实现One Stage 目标检测算法在不影响原有速度的同时达到Two Stage算法的准确度。但是Focal Loss存在一个问题,那就是类别得分和定位质量得分在训练的时候分别进行,而在推理的时候却将两者相乘作为NMS 分数排序的依据,这就使得训练和推理之间存在误差缺口,导致有些候选框的位置预测的很准但是置信度不高,之后做NMS 的时候这些框就会被抑制掉,从而导致最后剩下的检测框定位精度较差,影响最终的检测精度。

(2)Focal Loss的改进

为了解决这个问题,首先将对位置的质量预测与分类得分进行合并,也就是将预测的分类得分与定位IoU(重叠率)相关联。由于Focal Loss之前是为One Stage算法的分类分支服务的,只支持0 或者1 这样的离散类别标签,而现在分类和质量进行关联之后,标签变成了0~1之间的连续值,Focal Loss不再适用,因此本文引入了Quality Focal Loss(QFL)。QFL 是对Focal Loss 在连续标签上的扩展,首先,将交叉熵部分-lg(pt)扩展到完全形式-( ( 1-y)lg(1-σ)+ylgσ),然后将每个样本的缩放因子(1-pt)γ泛化为预测值和实际值之间的绝对值 |y-σ|β(β≥0 ),最终扩展后的损失函数即为QFL。函数定义如下:

其中,y是0~1 的质量标签,σ为预测。在复杂的道路背景下,当待检测目标非常密集且有较多遮挡时,它们的候选框之间的交叉和重叠现象会有所增加,训练和推理之间的误差缺口也会相应变大,NMS 时更容易错误抑制,定位精度也更容易受到影响。而本文通过引入QFL,实现了定位质量得分与类别概率得分的合并统一,有效弥补了原始Focal Loss训练和推理之间存在的误差缺口,大大降低了NMS的错误抑制率,从而提升了对密集遮挡目标的定位精度。

2.2 多尺度检测的改进

YOLOv5 系列算法的网络结构只有网络深度和宽度的不同,其他都相同,都采用了多尺度检测,输入图像尺寸为640×640的前提下,算法使用20×20的特征层检测大尺寸的目标,将20×20 的特征层2 倍上采样与40×40的特征层进行融合检测中等尺寸的目标,将40×40的特征层2倍上采样与80×80的特征层进行融合检测小尺寸的目标。YOLOv5 在20×20、40×40、80×80 三种尺度上实现了对大、中、小三种尺寸目标的检测,弥补了单尺度目标检测算法检测目标的尺寸范围较小的缺点,检测准确率得到大幅提升。

而在复杂的道路背景下,很多目标由于距离较远,在图像或视频中占有的尺寸会非常小,原始YOLOv5用来检测小尺寸目标的80×80 尺度无法完全覆盖这些更加小的目标,由于将这些更小目标快速准确地检测出来对于道路交通安全尤为重要,所以本文在YOLOv5s 三尺度检测的基础上,增加浅层检测层,在输入尺寸为640×640 的前提下,增加一层160×160 尺寸的检测层来检测更小尺寸的目标,将原算法的三尺度检测改为四尺度检测。同时将原算法的特征融合部分也相应改为四尺度特征融合,增加160×160的特征层,并将80×80的特征层2 倍上采样与新增加的160×160 的特征层进行融合,以供160×160的检测层检测更小目标时使用。通过改进多尺度检测,增大了算法能够检测的目标尺寸范围,更加适用于目标尺寸变化大的复杂道路场景,有效提高了检测精度。算法改进后的网络结构图如图2 所示,其中,Output 部分的红色虚线内是增加的第四尺度的检测,Neck 部分的红色虚线内是相应增加的第四尺度的特征融合部分。

图2 改进多尺度检测后的网络结构图Fig.2 Network structure diagram after improved multi-scale detection

2.3 Neck部分的改进

YOLOv5s 算法的Neck 部分使用的是FPN 和PAN结合的结构。FPN 可以将深层特征层具有的更强的语义信息传递到浅层特征层,PAN则可以将浅层特征层具有的更强的定位信息传递到深层特征层,FPN与PAN组合,从不同的主干层对不同的检测层进行参数聚合,结构如图3(b)所示。

图3 不同特征融合结构示意图Fig.3 Schematic diagram of different feature fusion structure

这种组合虽然有效加强了网络的特征融合能力,但相应地会出现一个问题,那就是PAN结构的输入全部都是经过FPN结构处理过的特征信息,缺少主干特征提取网络部分的原始特征信息,缺少原始信息参与学习就会很容易导致训练学习出现偏差,影响检测准确度。为了解决这个问题,本文借鉴加权双向特征金字塔网络(BiFPN),以2.2节改进后的算法网络为基础进行改进。

BiFPN 首先对FPN+PAN 结构进行简化,去掉只有一条输入边和输出边的结点,并且如果输入和输出结点是同一层的,就添加一条额外的边,结构如图3(c)所示。原始的BiFPN 会根据不同输入特征的重要性设置不同的权重,同时将此结构作为一个整体反复使用以加强特征融合,但本文通过实验发现YOLOv5s 引入带权重的BiFPN会增加过多参数量和计算量,并且检测效果并不好。本文认为检测效果不好是因为对输入的特征层设置权重与在特征层后添加注意力机制极其相似,而注意力机制在不同场景下嵌入至不同网络的不同位置,对检测效果的影响都不同。本文只是想要使原始算法的PAN结构的输入能有原始特征信息的参与,所以去掉BiFPN 的权重部分,只借鉴其特征融合方法,提出去权重的BiFPN。本文提出的去权重的BiFPN 的结构示意图同样如图3(c)所示,算法改进后,PAN 结构每个结点的输入边都有一条是来自主干特征提取网络部分的原始特征层,训练过程有了原始特征信息的持续参与,就可以有效避免训练学习过程偏离人们的期望,特征融合也更加合理有效,从而使得检测精度有所提升,同时为了保持算法的轻量化,本文只使用一次去权重的BiFPN进行特征融合。改进后的网络结构如图4所示。

图4 改进Neck部分后的网络结构图Fig.4 Network structure diagram after improving Neck part

2.4 融合注意力模块

深度学习中的注意力机制(attention mechanism)在本质上其实与人类的选择性视觉注意力机制相似,其核心目标也是根据当前的任务,从大量信息中筛选出更为关键的信息,从而使得算法模型朝着更偏向任务目标的方向去训练学习。而目标检测算法在日益复杂的道路背景下应用,恰恰需要算法能够从复杂的信息中提取出有用的目标信息,过滤掉无关信息,因此本文引入CBAM注意力模块。

CBAM包含两个独立的子模块,分别是通道注意力模块(channel attention module,CAM)和空间注意力模块(spartial attention module,SAM),它们相互结合,相比于SENet[31]只关注通道的注意力机制,可以取得更好的结果,结构如图5所示。

图5 CBAM模块结构图Fig.5 CBAM module structure diagram

其他学者已经通过实验证明了嵌入CBAM 模块的卷积神经网络在图像分类、目标检测任务中能够获得较好的性能提升。但不同的算法在不同的场景应用,CBAM 注意力模块具体嵌入网络结构中的哪一部分并没有固定的理论说法。因此本文基于2.3 节改进后的算法YOLOv5s-QFB(Quality Focal Loss+Four Layers+BiFPN),通过实验探究CBAM注意力模块嵌入到算法网络的骨干部分(Backbone)、颈部(Neck)、检测头部(Head)分别对网络性能的影响。由于CBAM注意力模块是对重要的特征进行增强,所以本文将CBAM注意力模块嵌入到网络结构中每一次特征融合后,即在add、concat操作之后以及检测头之前,从而产生四种新的网络模型:YOLOv5s-QFB-A、YOLOv5s-QFB-B、YOLOv5s-QFB-C、YOLOv5s-QFB-D,具体位置如图6所示。

图6(a)是将CBAM 融入骨干部分的每个C3 结构内部的add和concat后,图6(b)是将CBAM融入颈部的每个C3 结构内部的add 和concat 后,图6(c)是在颈部concat后增加CBAM注意力层,图6(d)是在每个检测头部前面增加CBAM注意力层。

图6 四种嵌入CBAM模块的YOLOv5s-QFB模型Fig.6 Four kinds of YOLOv5s-QFB models embedded in CBAM modules

2.5 改进后的网络结构

后续的实验证明,只有在检测头前添加CBAM 层才可以提升算法的检测精度,因此,基于YOLOv5s 算法,通过四种方法改进后,就得到了本文最终提出的算法YOLOv5s-QFBC(Quality Focal Loss+Four Layers+BiFPN+CBAM),其网络结构如图7所示。

图7 YOLOv5s-QFBC的网络结构图Fig.7 Network structure diagram of YOLOv5s-QFBC

3 实验与结果分析

3.1 实验环境

本文的实验环境:CPU为Intel®Core™i7-10700KF CPU @ 3.80 GHz 3.79 GHz,32 GB 运行内存,GPU 为NVIDIAGeForceRTX 3080,10 GB 显存,Windows 10,64 位操作系统,Pytorch 深度学习框架,编程语言为python,GPU加速软件为CUDA11.1和CUDNN8.0.5。

3.2 实验数据集

为了验证本文改进的目标检测算法在复杂道路背景下的有效性,本文在公开的自动驾驶数据集KITTI[32]上进行主要实验探究,并使用自制的骑乘人员头盔数据集Helmet辅助实验验证。

(1)KITTI数据集

KITTI 数据集是目前国际上最大的自动驾驶场景下的计算机视觉算法评测数据集之一,由德国卡尔斯鲁厄理工学院和丰田美国技术研究院联合创办。KITTI数据集是在高速公路、市区、乡村等场景采集的真实图像数据,单张图像中最多可达30个行人和15辆车,远处小目标数量很多并且还有不同程度的截断与遮挡,给目标检测算法带来了很大的挑战。整个数据集分为Car、Van、Truck、Tram、Pedestrian、Person_sitting、Cyclist、Misc、DontCare九类标签,考虑到实际情况,本文在数据预处理阶段对类别进行重新划分,将Car、Van、Truck、Tram 合并为Car 类,将Pedestrian、Person_sitting 合并为现在的Pedestrian,原来的Cyclist这一类保持不变,去除Misc 和DontCare 类,即本文主要关注三种道路目标类别:车辆(Car)、行人(Pedestrian)、骑车的人(Cyclist)。处理后各类目标的数量如表1所示。

表1 KITTI数据集处理后各类目标的数量Table 1 Number of targets after KITTI dataset processing

KITTI 数据集共有7 481 张带标注的图像,本文将其按照8∶1∶1 的比例划分训练集、验证集和测试集,划分后各部分图像张数如表2 所示。实验在训练集和验证集上进行训练学习,在测试集上检测效果。

表2 KITTI数据集划分Table 2 KITTI dataset partition

(2)Helmet数据集

Helmet 骑乘人员头盔数据集是本文为了辅助算法的实验验证而自制的基于复杂道路背景的数据集,对查处不按规定佩戴头盔的交通违法行为具有积极的现实意义。实验数据集包括三部分,一部分为从公开数据集MS COCO 中提取的“bicycle”和“motorcycle”类的图片,一部分为从百度和谷歌上爬取的相关图片,另一部分为从网络上下载的其他相关数据集,共10 837 张图片。使用labelimg软件重新对数据进行标注,标签有佩戴头盔(helmet)和未佩戴头盔(nohelmet)两类,数量如表3所示。

表3 Helmet数据集处理后各类目标的数量Table 3 Number of targets after Helmet dataset processing

同样将其按照8∶1∶1的比例划分训练集、验证集和测试集,划分后各部分图像张数如表4所示。实验在训练集和验证集上进行训练学习,在测试集上检测效果。

表4 Helmet数据集划分Table 4 Helmet dataset partition

KITTI 数据集与Helmet 数据集展示如图8 所示,可以看出,远处小目标较多并且有不同程度的截断与遮挡。

图8 数据集展示Fig.8 Dataset presentation

3.3 网络训练与测试

本文实验采用精度(precision,P)、召回率(recall,R)、多个类别平均精度的平均值(mean average precision,mAP)、占用存储空间大小(单位:MB)、参数量、浮点运算次数(floating point operations,FLOPS)、每秒检测帧数(frames per second,FPS)几项性能指标评判算法的性能。其中精度P、召回率R和mAP分别表示为:

式中,TP(true positives)表示被正确检测出的目标数,FP(false positives)表示检测错误的目标数,FN(false negatives)表示未被检测出来的目标数,n表示共需要分类的类别数,AP(average precision)表示某个目标类的平均精度。

实验设置基本采用YOLOv5的官方推荐参数设置,采用自适应anchor,采用mosaic数据增强,输入图像尺寸大小为640×640,训练时batchsize为16,测试时batchsize为1,epoch 为300,初始化学习率为0.01,学习率动量为0.937。

3.4 实验结果与分析

3.4.1 改进Focal Loss的实验分析

为了验证改进Focal Loss损失函数的有效性,同时也为了与其他损失函数方法进行全面比较,本文以YOLOv5s为基础,将算法中原始的Focal Loss损失函数分别改为本文引入的Quality Focal Loss以及BCEWith-LogitsLoss[33]和Varifocal Loss[34]两种常用损失函数,其余部分不做改动,改动后的算法分别称作YOLOv5s-Q、YOLOv5s-BCE、YOLOv5s-Vari,将这三种算法与原始算法在KITTI 数据集上进行实验对比,实验结果如表5所示。

表5 改进Focal Loss验证实验Table 5 Improved Focal Loss verification experiment

从表5 中可以看出,将原始Focal Loss 损失函数改为BCEWithLogitsLoss和Varifocal Loss不仅无法提高检测精度,而且降低了检测速度,而改为本文引入的Quality Focal Loss,则可以在没有任何损耗的情况下提高0.3个百分点的检测精度,证明了该改进方法的有效性。

3.4.2 改进多尺度检测的实验分析

为了验证改进多尺度检测的有效性,本文将原始YOLOv5s算法的三尺度检测改为四尺度检测,多尺度特征融合部分也相应进行适配改进,其余部分不变,改进后的算法称作YOLOv5s-F,然后将其与原始的YOLOv5s算法网络在KITTI数据集上进行实验对比,实验结果如表6所示。

表6 改进多尺度检测验证实验Table 6 Improved multi-scale detection verification experiment

从表6 中可以看出,通过多尺度检测的改进,虽然算法模型的体积、参数量以及计算量都有少量增加,并且FPS有所降低,但都在可接受范围内并且算法仍然保持着较好的实时性,在此情况下检测精度得到了1.2 个百分点的提升,因此证明了该改进方法的有效性。

3.4.3 改进Neck部分的实验分析

为了验证Neck 部分改进的有效性,本文将原始YOLOv5s 算法中的FPN+PAN 结构改为本文提出的去权重的BiFPN 结构,其余部分保持不变,改进后的算法称作YOLOv5s-B,然后将其与原始YOLOv5s 算法在KITTI数据集上进行实验对比,实验结果如表7所示。

表7 改进Neck部分验证实验Table 7 Improved Neck partial validation experiment

从表7 中可以看出,通过改进Neck 部分,使得算法在少量增加计算量和参数量的情况下,提升了0.6 个百分点的检测精度,检测速度也有所加快,说明该改进在一定程度上加强了Neck 部分的特征融合,证明了改进方法的有效性。

3.4.4 融合注意力模块的实验分析

为了验证融合注意力模块的有效性以及探究应该将注意力模块嵌入到算法的具体哪个位置,本文以经过了上面三种改进方法改进后的算法(YOLOv5s-QFB)为基础,将CBAM注意力模块分别嵌入算法不同位置的add和concat操作之后以及检测头前,形成了2.4节中的四个新的算法,然后将改进后的这四个算法与YOLOv5s-QFB算法在KITTI数据集上进行实验对比,实验结果如表8所示。

表8 融合注意力模块验证实验Table 8 Fusion attention module verification experiment

表8 中的实验结果表明,只有YOLOv5s-QFB-D 算法即把CBAM注意力模块嵌入到检测头前才能提升算法的检测精度,并且只增加了很少的计算量就提升了0.2个百分点的检测精度,进一步提升了检测效果,证明了该方法的有效性。同时,为了与其他注意力机制方法进行更加全面的比较,本文同样以YOLOv5s-QFB 为基础,分别将本文引入的CBAM 注意力,以及SE[31]、ECA[35]、CA[36]这三种常用的注意力机制嵌入至算法的检测头前,其他部分不做改动,在KITTI 数据集上进行实验对比,实验结果如表9所示。

表9 融合不同注意力模块对比实验Table 9 Comparative experiment of fusing different attention modules

从表9中可以看出,算法融入四种不同的注意力模块增加的参数量和计算量相差不大;在检测精度方面,融合SE、ECA 注意力分别降低了0.2 个百分点和0.6 个百分点的检测精度,融合CA注意力检测精度没有改变,只有融合CBAM 注意力提高了0.2 个百分点的检测精度;在检测速度方面,融合四种注意力都会带来一定程度的速度损失,但融合CBAM 注意力带来的速度损失最少。综上所述,本文引入的CBAM 注意力相比其他常用的注意力机制,更具优越性。

3.4.5 消融实验

本文所提四种改进方法分别为Q(quality focal loss)、F(四尺度检测)、B(去权重的BiFPN)、C(CBAM注意力)。为了验证四种不同改进方法的有效性,本文从以下两个方向设计消融实验:(1)以原始YOLOv5s算法为基础,分别只增加一种改进方法,以验证每种改进方法对原算法的改进效果;(2)以最终YOLOv5s-QFBC算法为基础,分别只消除一种改进方法,以验证每种改进方法对最终算法的影响程度。为了体现算法的泛化性,本文的消融实验在公开的自动驾驶数据集KITTI和自制的骑乘人员头盔数据集Helmet 上分别进行,实验结果如表10和表11所示。

“√”表示引入该方法,从表10和表11中可以看出,本文所提出的四个改进方法无论是在KITTI 数据集还是Helmet数据集上,相比原始YOLOv5s算法,检测精度都有不同程度的提升,其中改进多尺度检测提升效果最好,分别提升了1.2 和1.3 个百分点的检测精度;而相比最终YOLOv5s-QFBC 算法,消除任一改进方法都会降低算法的检测精度,其中消除多尺度检测的改进对最终算法影响最大,检测精度分别降低了1.0 和1.1 个百分点。通过消融实验,再次证明了本文所提不同改进方法的有效性。同时,本文提出的最终算法YOLOv5s-QFBC相较于原始YOLOv5s,在KITTI 数据集和Helmet 数据集上分别提高了1.9和2.1个百分点的检测精度,FPS分别达到69 和68,都能够在很好地保持算法的实时性的同时有着更高的检测精度。YOLOv5s-QFBC 算法在自动驾驶场景下的车、行人、骑车的人检测任务中以及道路骑乘场景下的头盔佩戴检测任务中,相较于原始YOLOv5s 算法都有更好的表现,证明了本文所提算法具有较好的泛化性,也证明了本文所提算法能够更好地处理复杂道路背景下的不同场景条件中的目标检测问题。

表10 算法在KITTI数据集上的消融实验结果Table 10 Ablation experimental results of algorithm on KITTI dataset

表11 算法在Helmet数据集上的消融实验结果Table 11 Ablation experimental results of algorithm on Helmet dataset

3.4.6 对比实验

为了进一步证明本文所提算法的有效性以及优越性,将本文最终提出的算法模型与原YOLOv5s 算法、YOLOv5m、YOLOv5l、YOLOv5x、Faster R-CNN[11]、SSD[13]、YOLOv4-tiny、YOLOv4[16]、YOLOX-tiny[37]、YOLOX-X[37]算法在KITTI 数据集上进行实验对比,结果如表12所示。

表12 不同的算法模型在KITTI数据集上的性能对比Table 12 Performance comparison of different algorithm models on KITTI data set

对比表12中不同算法模型的实验结果,可以看出,本文提出的YOLOv5s-QFBC算法相较于其他主流的算法模型,有着最高的检测精度。其中,相较于检测精度较为相近的YOLOv5x以及YOLOX-X算法,本文所提算法所占用的体积只有YOLOv5x的9.8%,只有YOLOX-X的4.5%,体量优势明显;相较于检测速度较为相近的YOLOv5s 算法以及YOLOv5m 算法,本文所提算法的检测精度优势明显,比YOLOv5s 高1.9 个百分点,比YOLOv5m 高1.1 个百分点,而YOLOv4-tiny 虽然有着最高的检测速度,达到了106 FPS,但是它的检测精度却最低,只有66.8%,无法在复杂道路背景下应用;相较于占用体积较为相似的YOLOv5s、YOLOv4-tiny 以及YOLOX-tiny 算法,本文所提算法的检测精度分别高了1.9、28.1、3.7 个百分点。综上所述,本文提出的YOLOv5s-QFBC 算法在保持轻量化的同时,有着最高的检测精度,并且保持着较好的实时性,整体表现较为突出,证明了本文所提算法的优越性。为了更加直观地进行评价,本文对改进前后的效果对比进行了展示,如图9所示。

图9 算法改进前后的检测效果对比图Fig.9 Comparison of detection effect before and after algorithm improvement

通过对比可以看出,在复杂的道路背景下,本文提出的YOLOv5s-QFBC 算法,相比于原始的YOLOv5s 算法,对遮挡目标以及小目标检测时存在的误检和漏检问题都有所改进。

4 结束语

针对复杂道路背景下的遮挡目标和小目标检测导致的误检、漏检问题,本文通过对Quality Focal Loss、增加检测层、去权重的BiFPN、融合CBAM 注意力模块等方法的集成,来优化YOLOv5s这一典型的One Stage目标检测算法。

实验结果证明,改进后的算法在公开的自动驾驶数据集KITTI 和自制的骑乘人员头盔数据集Helmet 上的检测精度分别提高了1.9和2.1个百分点,检测速度分别达到了69 FPS和68 FPS。本文通过改进YOLOv5s算法模型,在保持算法速度和体量优势的同时获得了更高的检测精度,相比其他主流目标检测算法模型,本文改进算法更适用于复杂道路背景下的目标检测。

猜你喜欢
注意力精度特征
根据方程特征选解法
离散型随机变量的分布列与数字特征
让注意力“飞”回来
热连轧机组粗轧机精度控制
如何培养一年级学生的注意力
超高精度计时器——原子钟
不忠诚的四个特征
分析误差提精度
基于DSPIC33F微处理器的采集精度的提高
A Beautiful Way Of Looking At Things