基于改进YOLOv5的工业安全帽检测

2024-01-03 08:41刘斯逸
现代计算机 2023年21期
关键词:安全帽注意力卷积

刘斯逸,何 青

(长沙理工大学电气与信息工程学院,长沙 410114)

0 引言

在工厂生产和工地施工期间,车间和工地人员的安全问题是一个不容忽视的问题。钢铁厂车间存在着各种潜在的安全隐患,例如高温、高空坠物、重物滑落等。这些潜在的安全风险对工厂施工人员的生命和财产造成了巨大的威胁。近些年来,有些企业没有很好地规范职工使用安全防护用品,例如安全帽、手套等,为此付出了比较惨重的代价。近些年来,工厂企业和工地施工单位逐步将施工安全放在首要位置,安全绳、安全帽等防护用品的佩戴得到了本行业甚至是其他行业越来越多的重视。当下,对于安全帽佩戴检测主要采用的是传统人为视频监控和传感器监测的方式,容易出现人为疏漏,且费时、费力。

随着深度卷积神经网络快速发展,其在图像分类、目标识别、目标检测和跟踪等多个领域展现出其特有的优势。对于工业现场安全帽佩戴的检测引起了学者的广泛关注并对其投入了一定的研究。

闫蓉蓉[1]运用形态学和肤色分割法处理并定位出人脸位置,结合设计的EHSW-Adaboost算法定位出安全帽的位置。Wen等[2]提出基于改进Hough 变换的圆弧/弧检测方法,并将其应用于ATM监控系统中的安全帽检测。

Wu 等[3]将安全帽颜色分类,把目标切分成不同尺度,在此基础上采用改进后的SSD 算法进行识别,取得了较好的效果。刘瑞昊等[4]在安全帽检测中改进YOLOv3算法,对其特征融合进行改进,加入了Inception_shortcut 的结构。吕宗喆等[5]改进YOLOv5 算法,将输入的图片进行重叠切片,应用于安全帽检测,提高对于小目标检测的准确性。金源等[6]对YOLOv5 的预测输出层进行改进,加入了二级目标的分类数量并对损失函数进行优化。Fang 等[7]提出了基于改进YOLOv2模型的方法,把密集网络和特征提取网络结合起来,利用MobileNet 轻量型网络模型,提高了检测精度和检测速度。吴冬梅等[8]提出了改进的Faster R-CNN 的安全帽佩戴检测方法,将骨干网络中的5个网络阶段的特征图进行融合,提高了对被检测目标的检测准确性。乔炎等[9]引入轻量型网络Shuffletnetv2,在C3 模块引入了Swin Transformer Block 模块,在其中加入了CBAM_H 注意力机制,减少了参数量,提高了检测的准确性。梅国新等[10]提出了基于EfficientDet 的用于检测边缘环境下面向复杂监控视频背景的安全帽检测算法。邓开发等[11]通过将Faster R-CNN 目标检测模型和深度特征流算法相结合,实现了对施工现场摄像头监控视频中安全帽的检测,但容易受到外界复杂因素的干扰。王雨生等[12]提出了新的安全帽佩戴检测姿态估计的方法。赵丽等[13]改进YOLOv5 模型,将PANet 改为BiFPN 并改进了边界框损失函数。岳衡等[14]在YOLOv5 模型中加入了压缩激励层,和Soft-NMS 保留更多的预测框,进一步使用加权非极大值抑制法获得更为准确的预测框,将其运用到工业安全帽检测中。肖体刚等[15]提出一种基于改进SSD 的安全帽佩戴快速检测算法,通过将SSD 中的骨干网络VGG-16 替换为轻量型卷积神经网络MobileNetV3-small,减少了模型的参数,同时使用特征金字塔结构将深层特征与浅层特征进行融合,提升了检测精度。Liu等[16]提出新的SSD 算法,结合了Faster R-CNN和YOLO 的思想,有效地运用多尺度特征图融合预测的思想,对于小目标检测有一定的效果。

综上所述,目前基于深度学习的目标检测算法虽相比于传统的检测算法有了较大的改进,但对于复杂环境下的小目标检测效果不佳。对于上述问题,本文以YOLOv5算法模型为基础对模型结构以及损失函数进行调整和改进,改进后的算法模型相比于之前的对于小目标检测的效果更好,检测精度也有所提高。

1 YOLOv5网络结构模型

本文以YOLOv5 算法模型为基础,算法模型主要由以下三个部分组成,主干网络(Backbone)即特征提取网络、颈部(Neck)即PANet特征融合模块和头部(Head)预测模块。如图1所示。

图1 YOLOv5网络结构图

主干特征提取网络主要由一个SPPF 层和多个卷积和C3 层组成,C3 模型中引入了Cross Stage Partial Network(CSP)模块,用于加速特征图的计算,并提高模型的准确性,运用到了残差连接使得模型能够更好地学习目标的特征信息。空间金字塔池化(SPPF)位于特征提取网络的最后一层,即输出端,其主要作用是由于输入的图像尺寸总是不能满足输入时要求的大小,通常需要进行手动裁剪、拉伸或者缩放,但这种做法并不好,对于图像的原始特征造成了一定的影响,损失了图像原始的特征。SPPF 层通过将候选区的特征图划分为多个不同尺寸的网格,对每个网格内都做最大池化,将提取到的任意大小的特征图转换成固定大小的特征向量。

颈部,即特征融合层(PANet),采用自下而上和自上而下的特征金字塔融合方式,使得模型能够获得不同尺度目标特征图的特征信息,从而学习到更多的目标特征信息,提高了模型检测目标的精度,有效地解决了多尺度特征融合的问题。

预测模块(Head)采用1×1 的卷积预测输出,利用置信度损失函数、目标定位损失函数、目标类别损失函数判定目标预测框和真实框之间的差距,再通过非极大值抑制(NMS)滤除多余的选框,得到最终的预测输出框。

相比于之前的YOLO 系列的算法模型,YOLOv5 在检测精度和检测速度上有了很大的提升,PANet模块的引入使得算法模型能更好地学习到不同尺度的目标特征信息,改善了检测的精度,能够相对较好地预测中小目标,但对于本文所述的目标检测任务,由于施工现场复杂的环境容易受到光照、时间等因素的影响,且被检测的目标大多为中小目标,YOLOv5算法模型以及当下一些主流的算法对于中小目标以及密集型目标检测效果不佳,存在漏检、错检的问题。

2 Mosaic数据增强

YOLOv5输入端,即数据预处理端主要通过选框的聚类选择出合适标准的anchors,图像的自适应缩放以及数据增强操作。由于被检测的目标大多为中小目标,在复杂环境下,被检测目标的精度会受到一定程度的影响,因此为了提高检测的精度,增加一张图像中目标的数量,丰富数据的多样性,采用Mosaic 方法对输入图像进行数据增强。Mosaic 会从训练集中随机选取四张不同的图片,随机初始化拼接的中心点,将四张图片通过裁剪、缩放、翻转等操作,拼接成一张大图。通过这种方式,可以有效地扩展训练集规模,提高模型的泛化能力和检测精度,较为有效地提高了图片中被检测目标的数量。Mosaic 数据增强处理后的图像如图2 所示。在训练过程中有50%的概率会采用Mosaic数据增强的方法,不难发现通过此种方式处理后的数据,图像中被检测目标的数量有了明显的增加。

图2 Mosaic数据增强处理后的图像

本文采用kmeans++聚类方法对选框进行聚类,分别得到9种不同的选框用于预测三个不同预测特征层中的小、中、大目标。其anchors 大小分别为[10,13,16,30,33,23],[30,61,62,45,59,119]和[116,90,156,198,373,326]。再将聚类选择出的anchors 以及数据增强处理后打包得到的图像数据送入模型的主干网络中进行特征提取。

3 YOLOv5算法改进

由于被检测的目标安全帽大多为中小目标且较为密集,YOLOv5算法模型的检测精度受到施工现场复杂环境影响不是很高。因此有必要在主干网络中引入注意力机制,来提升网络模型对于被检测目标安全帽相关特征信息的关注度,学习到更多的目标特征信息,从而提升网络的检测精度。

注意力机制是一种基于神经网络的模型模块,用于增强模型对输入中重要部分的关注度和记忆能力。在注意力机制中,计算输入中每个元素的权重,这些权重可以通过各种方法得到,如加权平均、向量相似度、自适应加权等,增大有效特征信息的权重参数,来让算法模型更好地、有目的地抓住需要关注的目标特征信息,忽略无关信息,从而提高算法模型的泛化能力和鲁棒性,以及对于被检测目标的关注度,进而提升检测精度。

3.1 SKNet注意力机制模块

由于被检测的目标主要为小型目标,故需要对Neck 模块融合后的特征进行进一步筛选,在Head 预测小目标1×1 卷积核输出预测之前加入SKNet 注意力模块,以此提高模型对于小目标检测的鲁棒性。SKNet[17](Selective Kernel Networks)是卷积核注意力机制,可以让网络自适应地选择合适的卷积核,主要通过引入选择性注意力机制来提高模型的准确性和泛化能力。具体来说,在SKNet 中,每个卷积层都包含多个不同大小的卷积核,不同大小的感受视野(卷积核)对于不同尺度(远近、大小)的目标会有不同的效果,为小目标的检测提供指导。通过选择不同大小的卷积核,来适应不同尺度的特征,使得不同的图像能够得到具有不同重要性的卷积核,提高模型对于检测小目标的能力,从而提高模型的灵活性和表达能力。同时,SKNet还引入了通道注意力机制,用于进一步筛选具有重要信息的特征通道,从而加强模型对关键特征的捕捉和记忆。由于引入了注意力机制,算法模型的深度增加,容易出现梯度消失和梯度爆炸的问题,残差连接的引入能更好地提升模型的表达能力和性能。同时,残差连接跨层进行,可以有效地帮助模型更好地学习目标特征,在训练时可以使得模型更加容易收敛,减少训练所需的时间,引入残差连接的SKNet如图3所示。

图3 带有残差连接的SKNet模块

将输入的特征图分别通过一个3×3 的卷积和5×5 的卷积生成两个特征图,分别为U1 和U2。然后将这两个特征图相加,生成新的特征图U,再通过全局平均池化(Fgp)生成1×1×C 的特征图S,再通过一个全连接层(Ffc 函数)生成d×1 的向量Z,利用Softmax 对Z 向量进行归一化,这时每个通道对应一个权重值,其大小代表了通道的重要程度,再将得到的权重值分别乘以对应的特征图U1 和U2,得到U3 和U4。将两个特征图进行融合,得到带有通道权重值的特征图V,最后再将输出的特征图V与输入特征图X 相加得到模块的最终输出。其最终输出的特征图相比于输入的特征图X 经过了特征信息的筛选和提炼,融合了不同感受野的信息。该模块的引入使得模型可以更多地关注小目标,提高了模型对于小目标的检测精度。

3.2 CA注意力机制模块

相较于小目标,算法模型对于中等目标的检测效果有了一定的提升,但中等目标具有空间方向和位置的敏感性。虽然通道注意力会较为显著地改善算法模型的性能,但其通常会忽略对中等目标生成空间选择性注意力图非常重要的位置信息且参数量较大,考虑到算法模型的复杂度,本文针对中等目标预测1×1 的卷积输出层前引入了CA注意力机制。

CA[18](coordinate attention)注意力机制是较为简单和灵活的注意力机制,在几乎不带来额外的计算开销的前提之下,可以显著提升模型对于中等目标的关注度。CA 注意力机制能捕获跨通道的信息,还可以获取方向和位置的信息,其将通道注意力分解为两个沿着不同方向进行聚合,形成一对方向感知和位置敏感的特征图,它们可以互补地运用以增强输入特征图对于中等目标的检测能力,使得算法模型更加精准地定位和识别图像中重要的目标信息,提升网络模型的检测精度。最后,和引入SKNet 注意力模块一样,考虑到算法模型深度和梯度消失的问题,引入了残差连接。引入残差连接的CA 注意力机制模块如图4所示。

图4 带有残差连接的CA模块

将输入的特征图在w 和h方向进行平均池化操作,通过此两种池化操作使得注意力机制模块可以很好地捕捉到沿着一个空间方向的长程依赖,同时保存沿着另一个空间方向的精确位置信息,相比于一般的注意力机制,这样可以使得网络更准确地定位感兴趣的目标区域。如图5所示,将两个方向上的特征图拼接以后送入1×1 卷积中进行降维处理,然后通过BN 和非线性激活函数,切分成不同方向的张量卷积后进行Sigmoid 处理,输出对于输入特征图的权重系数,再与原输入相乘,最后再将带有权重系数的特征图与原输入通过残差连接相加得到模块的最终输出。此注意力模块完成了对于输入特征图竖直和水平方向上的自注意力,改善了算法模型对于中等目标的检测精度。

图5 带有残差连接的ECA模块

3.3 ECA注意力模块

由于被检测的大目标在数据集中数量较少,为进一步提高对于模型的检测精度和能力,本文在Head 模块1×1 卷积预测大目标输出之前,引入了ECA注意力机制模块。

SE 注意力机制首先对输入特征图进行了通道压缩,该做法对于学习到通道之间的依赖关系造成一定的影响。ECA[19](efficient channel attention)注意力机制与之不同,其通过应用一维卷积层将全局特征向量转换为注意力权重向量,并将其应用于特征图上,从而提高重要特征通道的权重。如图5 所示,ECA 注意力机制舍去了降维,直接将输入特征图X 通过全局池化变成1×1×C的张量,再用1×1卷积对输入的张量进行通道得分的学习,其中k=3 或5 自适应地选择卷积核的大小,然后经过Sigmoid 激活函数获得对于各个通道的权重参数,将获得的权重值与原始输入特征图对应元素相乘,得到带有通道权重值的特征图。相较于其他注意力机制,ECA 注意力机制具有计算速度快、参数量少等优点,并且不需要显式地计算特征之间的相关性。同时也考虑到模型深度和梯度消失以及更好学习目标特征的问题,引入了残差连接,引入残差连接的ECA模块如图5所示。

3.4 损失函数的改进

YOLOv5算法模型的损失函数主要由目标类别预测损失(Class probability loss)、置信度损失(Confident loss)和边界框定位损失(Location loss)三部分组成。其中类别损失和置信度损失都采用二分类交叉熵损失(BCEloss),边界框定位损失原算法中采用了GIoU 损失。GIoU 损失计算的公式如下所示:

GIoU相比于直接计算IoU值引入了预测框和真实框的最小外接框,但当两个预测框高宽相同,且处于同一水平面或者是一种包含关系时,GIoU就退化为IoU。此外,GIoU在两框相交的时候在水平和竖直方向上收敛速度较慢,回归不够准确。本文采用DIoU损失替换原算法中计算定位损失的方式,如图6所示。

图6 DIoU计算图

其中,c为真实框和预测框外接最小矩形的对角线,d为真实框和预测框中心点的距离。DIoU采用直接回归两个框中心点的欧式距离,加速收敛,加快了算法模型的训练速度。DIoU损失函数的基本公式如下所示:

4 算法模型训练及结果

4.1 实验环境

本文采用的操作系统为Windows10,所使用的GPU为ATX A4000,显存大小为16 GB,运行内存大小为25 GB,内存32 GB。算法模型训练基于深度学习框架PyTorch 和Python3.8 编程语言,利用cuda11.6 在模型训练过程中对GPU 进行加速。

4.2 数据集以及实验参数设置

本文训练时所用到的数据集为开源的数据集(SHWD),此数据集主要包含两个大类:person 和helmet,共7851 张图像,含有9044 个合理佩戴了安全帽的目标即正样本和111514 个未合理佩戴安全帽的目标。由于原始数据集的图像标注信息以VOC数据格式进行存储,因此,将Python 脚本VOC 格式的数据集转换成了YOLO格式。同时,对原有的数据集中的图像进行一定的筛选,最终得到6056 张图像,将图像按照9∶1 的比例划分为训练集和验证集,得到训练集5450张图像,验证集606张图像。

实验训练设置的超参数如下:初始学习率为0.001,采用余弦退火函数调整学习率,学习率动量0.937,权值衰减量为0.0005,考虑到计算机资源的实际情况,设置epoch 值为100,batch size 为16,算法模型对训练的数据集有0.5的概率会采用Mosaic数据增强。

4.3 指标评价

对算法模型的评判主要通过精确率P、召回率R、F1 分数以及均值平均精度mAP等来综合考量。F1 的取值为0~1 之间,其大小反映了算法模型的性能,综合考虑了算法模型的查准率和查全率。mAP即均值平均精度,在平均精度的基础上根据类别数量求平均值,考虑训练好的算法模型在数据集所有类别上的预测性能好坏。F1与mAP值计算公式如下:

其中TP、FP、FN分别为预测正确的正样本、负样本错误地预测为正样本、预测正确的负样本。

4.4 实验结果分析

本文将改进前的YOLOv5算法和改进之后的YOLOv5算法进行对比实验,在一台实验机器上训练100 轮。改进前后的YOLOv5 算法实验结果如图7所示。

图7 实验结果对比

从实验数据不难看出,改进后的YOLOv5算法模型相比于改进之前,对于被检测目标的P值提高了0.4 个百分点,达到了93.43%,R值提高了2.13 个百分点,到达78.79%,mAP值提升了1.6个百分点,达到83.78%,F1值提高了1个百分点。多项实验数据表明,改进后的YOLOv5算法模型各项性能指标优于改进前的算法模型,对于中小目标安全帽的检测精度有了较大的提升,预测的准确度也得到了提高,能够更好地预测实际工程中安全帽的佩戴问题,证明改进后的YOLOv5算法模型的可行性。对比结果如图8所示。

图8 算法对比结果

5 结语

利用测试集同时结合施工现场实际情况进行验证,发现改进后的YOLOv5算法模型对目标的识别精度有了一定的提升,进一步说明了改进的可行性。

猜你喜欢
安全帽注意力卷积
小小安全帽,生命保护伞
让注意力“飞”回来
基于3D-Winograd的快速卷积算法设计及FPGA实现
爆笑四格
从滤波器理解卷积
基于傅里叶域卷积表示的目标跟踪算法
“扬眼”APP:让注意力“变现”
A Beautiful Way Of Looking At Things
一种基于卷积神经网络的性别识别方法
肤色检测和Hu矩在安全帽识别中的应用