1. 引言
佩戴安全帽可以有效降低生产安全事故带给相关工作人员的人身伤害,因此,有效监管工人的安全帽佩戴状态是安全生产管理中的重要组成部分[1]。在众多的不安全行为中,由未佩戴安全帽而引发的安全事故最为频繁[2]。研究表明,在建筑工地及巡检现场中,有接近90%的脑损伤是因为没有正确地佩戴安全帽引起,有必要对相关人员的安全帽佩戴进行检测,降低相关事故发生率[3]。为此,监督好工人穿戴好安全帽极其重要,不仅是为施工单位降低安全事故的发生率也是为了施工人员的个人安全着想。目前,安全帽的检测方式包括物理传感器的方法和计算机视觉的方法,其中计算机视觉方法又分为基于机器学习的方法和基于深度学习的方法两类。随着深度学习近年来的迅速发展,其目标检测的稳定性以及准确率远远超过了机器学习的方法,所以当今绝大多数检测方法均采用深度学习的方法。
基于传感器的检测原理主要通过定位技术来获得目标位置,提供给系统进行评价。由于定位精度和健康隐患问题,传感器识别技术很难在现场落地。对于通过图形处理进行安全帽检测,主要分为对安全帽的形状特征、颜色特征、边缘特征、特征表示和分类器相结合等四类。但手动构建大量的特征,检测速度慢、准确率低等问题使得其不适用于复杂性较高的施工及巡检现场[4]。在使用深度学习进行安全帽检测方面,国内近年也有不少的研究。在2021年,学者李华等人[5]提出了在Faster R-CNN目标检测算法的基础上,针对小目标的安全帽识别问题通过增加锚点提升检测能力。在2022年,宋晓凤等人提出了一种改进YOLOv5s算法的安全帽佩戴检测,该算法以YOLOv5s网络为基础,在网络的主干网中引入CoordAtt坐标注意力机制模块[6]。在2023年,王晓龙等人提出了一种基于改进YOLOX-m的安全帽佩戴检测方法,其基于YOLOX-m网络,在简化了主干网络的基础上,加入了Res-RepVGG和SPPF模块,提高了检测精度和推理速度[7]。
在深度学习的目标检测算法中,较多模型的参数量过大,不利于边缘计算设备的搭载,所以各种模型衍生出了tiny版本,也就是所谓的轻量化版本。又因为模型在精简轻量化后会比之前的模型的精度有所降低,因此如何使得模型大小适合边缘计算设备搭载又能有较高精度一直是众多学者研究的问题。
本文提出一种基于改进YOLOv7-Tiny [8]的安全帽检测方法。YOLOv7-Tiny相较于YOLOv7,在保证精确度相近的情况下,大幅缩小了参数量,使得模型部署在边缘计算设备上速度更快,同时采用WIoUv3作为损失函数改进头部网络,进一步提高模型精确度,经实验,发现改进模型的mAP值甚至超越YOLOv8n,参数量却只接近YOLOv8n的一半,证明该模型的改进能够部署在边缘检测设备上且有效提高复杂施工场景下的检测精度。
2. YOLOv7-Tiny模型
YOLOv7-Tiny是YOLOv7的简化版本,其在保持检测精度基本不变的情况下,大幅减少了参数量。YOLOv7-Tiny相比与YOLOv7,在特征提取的过程中采取CBL替换CBS,简而言之就是使用SiLu激活函数被替换为ReLu激活函数;其次,主干网络中减少了一个连接分支,使用最大池化来替代金字塔结构;最后,使用E-ELAN模块替代了ELAN模块,大幅减少了模型大小。YOLOv7-Tiny的结构图如图1所示。
Figure 1. YOLOv7-Tiny structure diagram
图1. YOLOv7-Tiny结构图
3. YOLOv7-Tiny改进方法
3.1. 加入注意力机制
SimAM注意力机制是一种通用性的注意力机制,其本身的轻量化结构以及无参特性可以在不给模型带来任何的参数量的增加的基础上有效提高整体的精确度。目前学术界大多数的注意力机制只关注通道维度或者空间维度上的特征,就算空间与通道都关注,例如CBAM注意力机制,也会有额外的参数会增加模型参数量,导致在边缘计算设备上模型检测速度略微受损。SimAM是一种3-D无参注意力模块,与1-D注意力、2-D注意力相比,它同时关注通道和空间特征的重要性,且不需要向网络额外添加参数就能推导出三维权重[9]。其结构如图2所示。
Figure 2. SimAM attention mechanism
图2. SimAM注意力机制
该模块在空间和通道维度的基础上直接对特征图推导3D注意力权重,不会向网络中增加参数量,也不局限于特定网络,兼具轻量化和灵活性的特点[10]。SimAM注意力机制通过定义线性可分性的能量函数对网络中的每个神经元进行评估,其公式如式(1)~(3)所示,其中t为目标神经元,x为相邻神经元,
为超参数,
能量越低表明神经元与相邻的区分度越高,神经元的重要程度也越高,如式(4)所示通过
对神经元根据重要性进行加权[11]。
(1)
(2)
(3)
(4)
3.2. 改进主干网络结构
YOLOv7-Tiny模型为了在资源受限的嵌入式设备上搭载,主干网络在特征提取时,将ELAN结构替换为了E-ELAN结构,使得计算资源大幅减少。这一举措虽然保留了ELAN结构中的关键结构,但是通道数以及卷积层都大幅减少,精度也受到了损失。如图3所示,为了弥补精度上的损失,同时又为了模型参数不膨胀,受文献[9]对于YOLOv8的改进启发,为此在YOLOv7-Tiny主干网络的每个E-ELAN模块后加入SimAM注意力机制,这样既能更好地关注输入特征中的重要信息,提升表达特征的能力,又能增强模型的鲁棒性,能够更好地适应不同光照场景下的识别能力。
Figure 3. Improved backbone network structure
图3. 改进主干网络结构
3.3. 改进颈部网络
3.3.1. 改进颈部主干网络
对于颈部改进分为三个方面。原始YOLOv7-Tiny在颈部网络只用到了3个特征层的信息,对于较大目标的特征层的信息160 × 160没用到,那么对于即想要增加到使用四个特征层的信息,又不想增加检测头的数量,为此借鉴了文献[12]对于颈部网络的改进方法,将160 × 160特征层的信息堆叠到80 × 80的特征层上面。
其次,因文献[13]中对于在YOLOv7的颈部网络中加入SimAM这一举措的启发,又因为YOLOv7-Tiny是YOLOv7的轻量化版本,两者同宗同源,且本文已经使用160 × 160特征层堆叠在80 × 80层上这一举措,所以为了优化高层次特征的选择,使得高层次的语义信息的选择和增强,提升模型对于复杂背景情况下和全局特征的理解,将SimAM注意力模块放在了每次上采样之前。然后,在颈部网络与头部网络的连接处再次加入SimAM注意力机制。如图4所示,这样极大地增加了模型的泛化能力与鲁棒性。
3.3.2. 改进SPPCSPC结构
由于SPPCSPC结构类似于YOLOv4 [14]的darknet网络中的SPP [15]结构,为了增加对于小目标以及在密集环境中检测的成功数量,为此在其最大池化核中加入了一个核大小为3的池化核,增加特征图多尺度感受野信息的融合[16],以增加对密集小目标的检测能力。其改进结构如图5所示,并将此改进SPPCSPC结构记为Modify-SPPCSPC。
3.4. WIoU损失函数
初始的YOLOv7-Tiny采用的是CIoU损失函数,其公式如式(5)所示:
Figure 4. Neck network improvement
图4. 颈部网络改进
Figure 5. Modify-SPPCSPC structure diagram
图5. Modify-SPPCSPC结构图
(5)
式中,IOU为预测框与真实框的交并比,
是为预测框与真实框的中心点,而
则为预测框中心
与真实框中心
的欧式距离,
和
分别表示预测框和真实框组成的最小外接矩形的宽度和高度,公式的最后一项则是用于衡量预测框与真实框的宽高比的一致性。
由公式(5)可见,CIoU作为损失函数有以下缺点。其一,权重限制比较固定。在计算损失是,对距离和宽高比的一致性权重是固定的。对于不同数据集下的不同的特点场景下,检测效果也有较大差异;其二,则是计算效率低下。公式中有很多包含复杂的分式平方的项,例如欧式距离的计算。其三,是对于小目标的检测效果有限,在目标面积比较小的情况下,损失函数的权重可能不能够有很好的检测效果等等。
为此,本文采用WIoU损失函数替代CIoU损失函数作为本次网络的改进的损失函数。WIoU损失函数[17]全称Wise-IOU是由学者TONG等人于2023年提出,其相对与CIoU、EIoU以及SIoU对于模型的精度都有不错的提升。WIoU一共有个版本v1、v2以及v3。v1版本构了基于注意力的边界损失,v2以及v3都是基于v1版本构造而来,两者都采用了梯度增益的计算方法来附加聚焦机制。本文直接采用文献[17]中效果最好的WioUv3替代CIoU。
WIoUv1的公式如式(6)~(8)所示:
(6)
(7)
(8)
式中,
、
是最小封闭框的大小,
,
和
,
分别为预测框和真实框的中心点坐标。
WIoUv3在WIoUv1的基础上,使用
定义了一个离群度描述锚框质量的公式,锚框质量越高,离群度
越大。同时,利用
构建了一个非单调聚焦系数
,对离群度较大的锚框分配较小的梯度增益,有效防止低质量示例产生较大的有害梯度[18]。WIoUv3通过动态调整权重,提供了更高的灵活性和适应性,能够增强在特定任务和数据集上的灵活性与鲁棒性。WIoUv3的公式如式(9)~(11)所示。其中,式(1)中
与
为可调参数,可针对不同模型进行适当调整以得到最好的效果。
(9)
(10)
(11)
4. 实验设计
4.1. 实验数据
在安全帽数据方面,比较常用的数据集有SHWD (Safety helmet wearing detect)、安全帽佩戴数据集(Safety Helmet Wearing Dataset)以及安全帽和安全背心(反光衣)图像数据集(Hardhat and Safety Vest Image for Object Detection)。本文采用SHWD数据集作为本次实验的数据集。该数据集是由SCUT-HEAD这个头部检测数据集外加网络爬取的工地照片组合而成,总共包含7581张图片,采用labelimg标准软件手动标注分为两类,标注正样本为“hat”一共有9044个,标注负样本为“person”一共有111,514个。本文的训练集以及验证集以9:1的比例划分,采用马赛克数据增强,图片输入大小为640 × 640。训练使用的epoch设置为100,批次大小bath_size设置为4,使用adam作为优化器,初始学习率为0.001,最小学习率为0.00001,学习率动量momentum设置为0.937,下降策略则是采用余弦退火策略,迁移学习的思想同样适合本文,训练使用的模型则选用了YOLOv7_Tiny_weights作为权重,这样实验结果比较固定,从头的话训练随机性比较大。为了体现算法的改进,在下面的不同算法的对比结果中复现了文献[19]的算法,同时为了统一性与公平性,本文所有消融实验以及与其他算法的对比均采用上面提到的参数配比。本次实验所采用的配置如表1所示。
Table 1. Experimental environment
表1. 实验环境
名称 |
环境变参 |
CPU |
13,900 K |
GPU |
4090D |
内存 |
64 G |
操作系统 |
Windows 11 |
Python |
3.11 |
CUDA |
12.1 |
Pytorch |
2.3.0 |
4.2. 评价指标
本文对模型性能的评估采用精确率(Precision)、召回率(Recall)、AP (Average Precision)、mAP (mean Average Precision)作为检测指标,其公式分别如式(9)、(10)、(11)、(12)所示。
(12)
(13)
其中,TP (Ture Positive)是真正例,FP (False Positive)是假正例,FN (False Negatives)是假负例。
(14)
式中:P(R)是精确率P在召回率R下的精度值;AP值反映了目标检测算法的鲁棒性和泛化能力;AP值越高对单个目标的检测能力越强。
(15)
式中,C为类别总数;
是第i个类别的AP值;mAP值反应了对于不同类别目标的平均覆盖率。
4.3. 消融实验
为了验证上述对于YOLOv7-Tiny的改进主干网络、改进颈部网络以及损失函数改进的有效性,以YOLOv7-Tiny初始模型为基底,针对正样本设置如下消融实验,YOLOv7-Tiny记为Base,将“-”记为无任何改进,同时将对主干网络的改进记为“A”,对颈部网络的改进记为“B”,对头部网络中使用WIoU损失函数替代CIoU损失函数这一举措记为“C”。以精确率(precision)、召回率(recall)以及mAP (平均精度)为评价指标,详细结果如表2所示。可以看出,模型随着改进的不断加入,其精度也是在不断上升中。对主干进行改进时,提升表达特征的能力,精度略微上升;随后对颈部又进行了改进,将160 × 160的特征层融合进了80 × 80的特征层,使得视野更加广阔,同时对SPPCSPC架构进行改进,加入了SimAM注意力机制,放在颈部的上采样与尾部部分,使得精度又有了较大提升;最后对于头部网络,引入最新的WIoUv3损失函数用来替换原来的CIoU损失函数,这样又使得精度提升一大步。
Table 2. Ablation experiment results
表2. 消融实验结果
基线模型 |
改进方法 |
P/% |
R/% |
mAP/% |
Hat |
Person |
Hat |
Person |
Base |
- |
95.99 |
92.84 |
88.8% |
85.98 |
93.68 |
Base |
A |
96.43 |
92.89 |
89.01 |
85.98 |
93.85 |
Base |
A + B |
95.21 |
92.48 |
90.11 |
88.76 |
94.55 |
Base |
A + B + C |
94.37 |
92.67 |
89.84 |
89.52 |
95.00 |
4.4. 不同模型的对比实验
为验证本算法相对于其他算法的优秀性、有效性,相对于其他算法更加适合于资源有限的嵌入式平台,将模型使用CPU版的Pytorch直接部署在香橙派5plus上打开摄像头进行实时动态检测,并且将检测时长定为60秒,计算其平均FPS作为FPS的指标,实验选取了YOLOv5、YOLOv8各自适合于嵌入式平台的版本YOLOv5s、YOLOv8n,以及复现了文献[19]的算法,全部按照之前实验设计的数据进行训练,在同样数据集以及同样的实验参数的情况下,实验结果如表3所示。
Table 3. Comparative experiments of different algorithms
表3. 不同算法的对比实验
算法 |
AP |
mAP |
参数量/MB |
FPS |
hat |
person |
YOLOv5s |
96.93% |
91.67% |
94.03% |
27.16 |
0.90 |
YOLOv8n |
95.96% |
92.69% |
94.33% |
42.60 |
0.68 |
文献[19] |
95.68% |
93.58% |
94.63% |
23.40 |
1.27 |
本文算法 |
96.34% |
93.66% |
95.00% |
23.70 |
1.25 |
Figure 6. Detection effect diagram of different algorithms
图6. 不同算法检测效果图
由实验结果可以看出,在参数量大小基本不变的、FPS值大小也基本不变的情况下,本文所提出的基于YOLOv7-Tiny的改进算法相对于文献[19]在“hat”类以及“person”类上的AP值均有所提升,在mAP上显著提升了0.37%。相较于YOLOv5s以及YOLOv8n,本算法的参数量更小,FPS的值更好,精确度更高,更加应证了本算法在资源受限的无GPU平台在面对密度大、目标小、环境复杂时检测安全帽精度低的问题时的优秀性与有效性。综上所述,本文的算法,相比于其它主流算法精确度更高,模型更小,更加适合于无GPU的嵌入式平台。
为了直观展示本文算法相对于其它算法的优势,选取表3中的算法与本文算法进行图片检测对比。如图6所示,从上到下依次是原图、YOLOv5s、YOLOv8n、文献[19]以及本文的改进算法。可以从图中清楚地看出,本文改进算法相对于其他算法来说,漏检数以及误检数最少,是所有对比算法中最优的存在,达到了实时检测对于稳准快的要求,也是具有比较高的实用价值。
5. 结语
在施工场地中,针对轻量化模型部署在资源受限的嵌入式平台上进行安全帽检测所面临的密度大、目标小、环境复杂的问题,本文以YOLOv7-Tiny为蓝本,提出了一中基于YOLOv7-Tiny的安全帽检测算法。经SHWD数据集实验对比论证,本文所提出的改进方法真实有效,相较于其他算法在精度上有较大提升,漏检以及误检的概率大大降低,充分证实了本算法的出色的性能,特别在人口密度大且现场环境复杂的情况下能够做到不漏检、不误检是很难能可贵的,对于施工现场保证人员的生命健康,减少安全事故的发生具有较大意义。
NOTES
*第一作者。
#通讯作者。