基于改进YOLOv5的安全帽佩戴检测算法

2022-09-08 08:02周华平郭依文孙克雷
关键词:安全帽特征提取注意力

周华平,郭依文,孙克雷

(安徽理工大学计算机科学与工程学院,安徽 淮南 232001)

近年来,我国的建筑行业快速发展,但是安全事故却时有发生,导致许多人员伤亡以及大量财产损失。据调查,超过6成的安全事故导致的人员伤亡是因为施工现场的工人们安全意识较低,违反施工现场的规章制度没有佩戴安全帽所造成的。为了能够有效地改善这种情况,及时地发现和预防事故的发生,实时地检测安全帽佩带情况, 就成了我国各类工程项目的施工环境下保障人员生命财产和施工安全的重要保障。就目前来看,我国的大多数施工现场没有安全帽检测设备,或主要依靠传统的人工检查方法和视频监控的方式进行安全帽佩戴检测,这样会导致一些施工人员在无人监管的条件下因放松安全意识而不佩戴安全帽或者由于监控设备角度的问题而造成错检漏检等情况的发生[1]。

随着近年来深度学习技术的快速发展,卷积神经网络在针对计算机视觉的各种识别任务中都取得了比较令人满意的效果。深度学习[2]目标检测算法可以分为两类,第一类是两步目标检测算法。即基于区域生成候选框,然后进行分类。这种算法检测精度相对来说较高,但花费的时间较多,典型的算法主要有R-CNN[3]、Faster R-CNN[4]等。第二类是单步目标检测算法。采用端到端的方式来预测整个图像,同时完成目标位置的检测和分类。这种算法检测精度相对低一些,但是检测的速度快。最具代表性的算法分别是SSD[5]和YOLO[6]等目标检测算法。安全帽检测便是目标检测应用领域中的一种。到目前为止,国内外已有诸多学者对安全帽检测进行了一系列相关研究[7]。2018a,文献[8]提出使用一种高精度、高速度和广泛适用的Faster R-CNN方法来检测建筑工人的安全帽佩戴情况,虽然在准确率上有了较大的提高,但是运行效率相对较低。2019a,文献[9]提出了基于Faster R-CNN的改进模型,用于检测摩托车手有没有正确地佩戴安全头盔,并使用一系列带有字符串编码的卷积神经网络模型(CNN)和一个空间转换器来识别没有佩戴安全头盔的摩托车手的车牌号码。2020a,文献[10]提出了两种安全帽的检测方法,一种是基于人工特征的,另一种是使用CNN的。实验结果表明,所提出的CNN模型的执行精度最好,而基于特征的模型的检测速度更快。2021a,文献[11]提出了一种等级SSD 模型,虽然可以在很大程度上降低误检率并提高环境的适应性,但其运行效率并不高。

针对以上所述安全帽检测的优缺点,本文采用改进YOLOv5的检测算法进行研究。主要的改进方式如下:

(1)为了能够更好地检测小目标,并提高对小目标的检测准确性,在YOLOv5主干网络的基础上增加一层160*160尺度大小的有效特征提取网络,并且改进颈部的特征金字塔结构,使得特征融合进一步得到加强,增强模型对安全帽检测的特征融合过程;

(2)在主干网络中引入ECA-Net有效通道注意力模块,更加关注安全帽检测中小目标的特征信息,增强模型对小目标检测的性能;

(3)引入CIOU-NMS替换NMS,使得网络不仅考虑到预测框和真实框之间的重叠面积,而且考虑到两个框之间的中心点的距离和宽高比,解决对安全帽检测中重叠和遮挡目标错检、漏检的问题,提升对重叠和遮挡目标检测的精确性。

1 相关工作

1.1 YOLOv5算法介绍

YOLOv5[12]提供了4种不同型号的YOLOv5算法,分别是YOLOv5s、YOLOv5m、YOLOv5l和YOLOv5x。本文是在YOLOv5s算法的基础上进行改进。YOLOv5s目标检测网络主要由3部分组成,分别是:特征提取的主干部分(Backbone)、特征融合的颈部部分(Neck)和目标检测的输出部分(Head)。YOLOv5的网络结构如图1所示。

图1 YOLOv5网络结构

从图1可知,YOLOv5的主干部分侧重于从输入图像中提取特征信息,颈部将提取的特征信息融合,生成3个尺度的特征图,输出部分从这些生成的特征图中检测出对象。在主干网络中Focus模块先进行切片操作,然后进行连接,其目的是在降维的过程中能够更好地提取特征信息。CBL模块由卷积[13]、归一化和Leaky_Relu[14]激活函数等模块构成。CSP[15]网络通过跨层连接来连接网络的前后层,这样可以通过减少模型的大小来提高推理速度,同时保持较高的精度。SPP[16]模块是指空间金字塔池化模块,执行不同内核大小的最大池化,并通过将特征连接在一起来融合。Concat模块表示张量连接操作。Neck网络是一系列混合和组合图像特征的特征聚合层,主要是由FPN和PAN的特征金子塔结构构成。当输入图片的大小为640*640时,在YOLOv5的主干网络中会生成3个不同尺寸的有效特征图,尺寸分别为:80*80、40*40和20*20。这些不同尺寸的有效特征层被输入到颈部网络中进行特征融合后生成3个尺度的新特征图,20*20*255这个特征图用于检测大物体,40*40*255特征图用于检测中物体,80*80*255这个特征图用于检测小物体。

2 MYOLOv5算法模型

2.1 增加特征提取层并改进特征金字塔结构

对于YOLOv5原模型来说,其主干网络共包含了3个有效特征层,分别作用于检测小物体、中物体和大物体。然而,当需要检测的目标物体的像素值远小于8*8像素时,物体便很难被检测到。对于检测,当需要被检测的安全帽距离较远时,其在图像上所展示的图片信息会非常小,这样就给安全帽的检测带来困难。因此,本文采取增加一层有效特征提取层的方式来提高安全帽佩戴检测的精确度。对于YOLOv5目标检测算法来说,随着其主干网络特征层深度的增加,对大目标检测效果会越来越好。如图1所示,特征层从80*80尺度大小开始,到20*20尺度大小结束。这3个有效特征层将会越来越有利于对大物体目标的检测。因此,为了能够更好地检测安全帽这类小目标信息,本文采取增加一层有效特征提取层的方式进行检测,也就是在80*80尺度大小这个有效特征层前面增加了一层160*160尺度大小的有效特征提取层。通过增加这个有效特征提取层将会更加有利于对安全帽这类小目标信息检测。在增加了160*160这个有效特征提取层之后,需要在特征融合的颈部部分Neck和目标检测的输出部分Head这两个部分增加相应的特征融合和输出处理部分,也就是图2中黑色虚线框框住的部分(见图2)。

而YOLOv5原有的特征金字塔网络为PANet(FPN+PAN)结构,该结构是目标检测系列算法中常用的特征金字塔结构。PANet结构首先通过上采样操作获得较强的语义信息,然后通过下采样操作获得位置信息。但是PANet结构在特征融合方面表现得有所欠缺。因此,为了能够更好加强语义信息的特征融合,本文在原有的PANet结构基础上的两个对应的同一层,添加了两个特征融合层,就是图2中加粗连接线所连接的地方。通过在PANet结构的同一层上添加这两条连接线,可以更好地融合特征信息,避免梯度衰减,并且增强了梯度的反向传播,减少对于安全帽检测过程中的特征损失,增强网络模型的泛化性能,同时提高了对小目标检测的准确性。

图2 MYOLOv5模型图

2.2 引入ECA-Net注意力机制模块

添加注意力机制的主要目的是通过关注输入对象的重要区域来获取更为关键的信息,注意力机制的关注点主要是在局部信息,而不是整体。将注意力机制添加到不同算法的实际应用中,同一个注意力机制也许会有不同的实现效果,或者不同的注意力机制应用在同一个算法中也会有很大的区别。ECA-Net[17]是一种有效的通道注意机制,它可以通过捕获关于跨通道交互的信息(通道之间的依赖性)来提高性能。大多数的注意力机制都是通过降维来控制模型的复杂性。然而,降维对捕获所有通道之间的依赖性都有副作用。ECA-Net注意力机制则是通过添加少量参数来避免降维,从而有效地捕获关于跨通道交互的信息,并获得显著的性能提高。ECA-Net注意力机制在没有降维的情况下,经过通道级全局平均池化后,通过考虑每个通道及其K个邻居来捕获局部跨通道交互信息。卷积核大小K表示局部跨信道交互作用的覆盖范围,即该信道有多少个邻居参与了注意力计算。为了避免手动调整K,采用了一种自适应确定K的方法,如式(1)所示。

(1)

式中:C为通道维数;|t|odd奇数表示最近的奇数;r为超参数,设置r=2;b为超参数,设置b=1。

为了可以更好地提取到安全帽数据集图像中的小目标的关键信息,将ECA-Net注意力机制模块添加到YOLOv5的主干网络中,添加的具体位置如图2中MYOLOv5主干网络的ECA-Net部分。通过添加ECA-Net注意力机制模块将会更加容易获取到小目标的关键信息,增强了模型对小目标检测的性能。ECA-Net注意力机制模块的工作流程是首先将上一层获取到的图像信息作为输入图像,输入到ECA-Net注意力机制模块中。输入的图像信息通过一维卷积,在全局平均池化(GAP)后直接学习特征,并将更新后的权值与输入的特征图相乘,生成新的特征图,然后输出。ECA-Net注意力机制模块结构图,如图3所示。

图3 ECA-Net注意力机制模块结构

2.3 CIOU-NMS替换NMS

在现有的目标检测系列算法中,大多通常都是使用传统的NMS。这些算法通过使用IOU[18]指数来抑制冗余的检测框[19]。在IOU指数中,检测框之间的重叠区域是唯一要考虑的因素。IOU指数公式和NMS公式分别如式(2)和式(3)所示。

(2)

(3)

式中:IOU为预测框与真实框之间的交并比;N为所有预测框中得分最高的那一个框;Bi为其他的框;Si为得分;ε为手动设置的NMS的阈值。

本文ε阈值设置为0.5, 当ε阈值设置大于0.5或小于0.5时,均会对实验结果产生影响,导致平均检测精度(MAP)降低。具体表现为:当ε阈值设置大于0.5时,得分最高的框与其他框之间交并比(IOU)的值要达到非常高的时候,才会被识别出两个框检测的是同一个物体,导致错检情况的发生,从而降低了实验的检测精度;当ε阈值设置小于0.5时,得分最高的框与其他框之间交并比(IOU)的值在较小的时候便会被识别为两个框检测到的是同一个物体,导致漏检情况的发生,从而降低了实验的检测精度。

在YOLOv5算法中, 其所采用的NMS经常会对重叠的预测框产生错误的抑制, 导致被遮挡的目标无法被检测得到, 从而降低了检测的准确率。 在对安全帽佩戴的检测过程中表现为对重叠和遮挡目标的错检、 漏检等问题。 为了能够更好地解决这一问题,本文利用CIOU-NMS来替换NMS。CIOU-NMS在进行边框抑制时,不仅考虑到了两个框之间的重叠区域,还考虑到了两个框之间的中心点的距离和宽高比。对应的公式分别如式(4)~式(7)所示。

(4)

(5)

(6)

(7)

式中:ρ2(b,bgt)为预测框与真实框二者之间中心点的距离;c2为可以封闭两个框的最小矩形框的对角线的长度;α为权重函数;ν为用来衡量预测框与真实框二者之间宽高比的一致性。预测框与真实框之间的归一化距离的建模如图4所示。

图4 归一化距离建模

通过引用CIOU-NMS来替换NMS可以有效地改善对安全帽佩戴检测过程中的对于重叠、遮挡目标检测时产生错检和漏检等问题,提升了对安全帽佩戴检测的准确性。

3 实验

3.1 数据集介绍

目前公开的安全帽佩戴数据主要有SHWD和GDUT-HWD两种安全帽数据。但SHWD安全帽佩戴数据只有两个类别,即head和helmet,类别较少。为了增加检测难度,本文选择具有5个类别的GDUT-HWD数据集,分别是None(未佩戴安全帽)、Red(佩戴红色安全帽)、Blue(佩戴蓝色安全帽)、Yellow(佩戴黄色安全帽)和White(佩戴白色安全帽)。它不仅可以检测到施工人员是否佩戴了安全帽,同时还能识别佩戴的安全帽相应的颜色。GDUT-HWD数据集图片数量为3 174张,包含了18 893个实例。这些图片包含了个人姿势变化、遮挡、场景变化、视角变化、照明变化等。其中小尺度的实例数据居多,这也增加了训练的难度。本文数据集的划分按照训练集和测试集比例8∶2的比例进行划分,随机抽取635张作为测试集,剩余的图片作为训练集。安全帽数据集每个类别的实例个数具体划分如图5所示。

图5 数据集实例具体划分

3.2 实验环境配置

实验采用Ubuntu 18.04操作系统,使用PyTorch深度学习框架,Python版本为3.8,实验所用的显卡为NVIDIA GeForce RTX 2080 Ti,显存为11GB,CUDN版本为11.0,cuDNN版本为8.0。

3.3 网络模型训练

在网络模型训练过程中,将batch-size设置为16,epochs设置为200,权重衰减系数设置为0.000 5,学习率动量设置为0.937,对于改进的YOLOv5网络模型来说,模型的损失值越小越好,精确度(Precision,P)、召回率(Recall,R)和MAP值越高越好。训练和验证集的训练时期Box loss、Objectness loss、Classification loss,Precision、Recall和MAP的不同性能指标如图6所示。

图6 训练时期的不同性能指标值

3.4 实验结果分析

实验结果[20]采用平均精度均值MAP(Mean Average Precision)、类平均精度AP(Average Precision)和检测速度帧每秒F1(Frame Per Second,FPS)来对不同模型的性能进行评估。AP表示当预设不同的IOU时(本文IOU=0.5),精确度P(precision)和召回率R(recall)所围成的曲线(P-R曲线)与坐标轴所围成的面积。MAP是所有类的平均AP值[21]。准确率P、召回率R、检测速度帧每秒F1和平均精度均值MAP的计算公式如式(8)~式(11)所示。

(8)

(9)

(10)

(11)

式中:TP(True Positives)为被识别为正样本,实际上也是正样本的数量;FP(False Positives)为被识别为正样本,实际上是负样本的数量;FN(False Negatives)为被识别为负样本,实际上是正样本的数量。准确率表示为正确预测的正样本数量与预测为正样本的样本数量之间的比例。召回率表示为正确预测的正样本数量与正样本数量的比例。F1同时考虑精确率和召回率,让两者同时达到最高,取得平衡。c表示类别,当AP值越大时,说明算法针对某一类的检测效果表现越好。MAP就是对所有类别的AP值求均值。

1)消融实验 为了能够验证改进方法的有效性,本文在安全帽数据集上针对每一项改进点都进行了相应的消融实验。字母A代表增加特征提取层并改进特征金字塔结构;字母B代表引入ECA-Net注意力机制;字母C代表CIOU-NMS替换NMS。消融实验[22]的结果如表1所示。

表1 消融实验

由表1可知,随着针对YOLOv5模型的3个改进点的逐个加入,模型在MAP上较未改进的模型分别逐步提升了0.8%、2.3%和3.8%。消融实验结果表明,A、B、C全部叠加结合的改进方法在各项评价指标上均取得了最优的结果,P提升了3.9%,R提升了4.2%,F1提升了4.1%。根据消融实验的结果可知,针对YOLOv5算法的改进是非常有效的。

2)与其他算法模型的对比 选取了Faster R-CNN、SSD、YOLOv3-tiny、YOLOv4、YOLOv4-tiny、YOLOv5和MYOLOv5算法进行实验对比,主要选择AP值和MAP值这两种指标在各种算法上进行评价。不同模型性能的对比如表2所示。

表2 不同模型性能对比

MYOLOv5模型在安全帽测试集上所得到的R-P曲线图如图7所示。

图7 R-P曲线

从表2可以看出YOLOv5目标检测算法在安全帽数据集上的MAP值上远远地超过了其他同类型的目标检测算法。而MYOLOv5算法在Blue类别上的AP值较YOLOv5算法提升了2.5%,在Yellow类别上的AP值较YOLOv5算法提升了2.1%,在White类别上的AP值较YOLOv5算法提升了3.1%,在Red类别上的AP值较YOLOv5算法提升了7.5%,在None类别上的AP值较YOLOv5算法提升了3.8%。平均精度均值(MAP)提升了3.8%。图7是由R-P曲线所围成的不同类别的安全帽测试集的检测结果得分平均值。因此MYOLOv5算法能够有效地提升对于安全帽佩戴的检测精度,同时由于训练数据集的施工场景的复杂多样化,MYOLOv5算法能够满足各种复杂的施工场景下对于安全帽的检测的需要,并且满足准确性的要求。

为了能够更加清晰直观地看出MYOLOv5算法与YOLOv5算法之间的差距,给出了(a)、(b)、(c)3种情况下的检测结果图(见图8)。图8(a)为错检结果,YOLOv5算法将白色的圆盘螺旋设备错误地识别成了白色的安全帽,导致错检情况的发生,降低了检测的精确性,而MYOLOv5算法则没有对其错检,而且所有被检测到的安全帽得分情况都有所提高。图8(b)为漏检结果,YOLOv5算法没有检测出遮挡情况下的红色安全帽,而MYOLOv5算法则将其正确地检测出来,而且其他被检测出的安全帽得分情况均有所提高。图8(c)为错检和漏检结果,由于背景相对复杂,且目标非常小,YOLOv5算法将右侧电线杆左侧的那个较小的蓝色安全帽错检为了红色安全帽,导致错检情况的发生。而且,没有将右侧电线杆右侧那个较小的蓝色安全帽识别出来,同样导致了漏检情况的发生。而MYOLOv5算法则正确地识别出了这两个蓝色的安全帽,而且得分较YOLOv5算法高出许多。由上述多种情况下的检测结果图对比可知,MYOLOv5算法优于YOLOv5算法。

(a)错检

4 结论

为了改进现有的安全帽佩戴检测算法难以有效地检测到小目标,以及解决重叠和遮挡目标错检、漏检等问题,提出了一种基于改进YOLOv5的安全帽佩戴检测算法。通过增加一层有效特征提取层并改进特征金字塔结构,引入ECA-Net注意力模块,并使用CIOU-NMS替换NMS进行边框抑制,使得改进后的算法更加适合于检测小目标,以及解决重叠和遮挡目标的错检和漏检等问题。通过实验对比可知,改进后的算法模型较YOLOv5模型来说,在检测到小目标,以及解决重叠和遮挡目标错检、漏检等问题起到了良好效果,并且取得了较高的检测准确度,满足在施工场景下对安全帽佩戴检测准确率的要求。未来,该改进算法将会进一步考虑如何更好地提升模型的检测速率,并且能够有效地移植到检测设备或者检测机器人上进行实际的检测应用。

猜你喜欢
安全帽特征提取注意力
让注意力“飞”回来
如何培养一年级学生的注意力
空间目标的ISAR成像及轮廓特征提取
爆笑四格
基于Gazebo仿真环境的ORB特征提取与比对的研究
基于特征提取的绘本阅读机器人设计方案
基于Daubechies(dbN)的飞行器音频特征提取
危险
A Beautiful Way Of Looking At Things
“多功能”安全帽