1. 引言
在当前社会背景下,安全生产是各行各业高度重视的问题之一,尤其在建筑工地、矿井等高风险作业环境中,确保工人的人身安全尤为重要。安全头盔作为最基本的个人防护装备之一,在保护工人生命安全方面扮演着至关重要的角色。然而,由于一些工人缺乏足够的安全意识,不按规定佩戴头盔的情况时有发生,这给生产安全带来了潜在的风险。
计算机视觉和人工智能技术的迅速发展,为安全帽检测和管理提供了新的可能性。在这一背景下,安全帽目标检测成为一个备受关注的研究领域,其目标是自动地识别工作人员是否佩戴安全帽。已有的一些算法可以识别图像中的多个物体,并判断出它们的类别和位置,因此在产品安全领域中引起了研究人员的高度关注。
传统的物体检测方法通常采用基于滑动窗口的区域选择策略[1],这种方法不仅针对性不强,而且计算复杂度较高。此外,依赖于手工设计的特征提取器对于目标多样性处理的能力有限。近年来,得益于GPU性能的提升以及深度学习方法的发展,卷积神经网络(CNN)因其无须手动设计特征提取过程的优势,在目标检测任务中得到了广泛应用。根据是否有候选框,算法分为两阶段目标检测算法和一阶段目标检测算法。两阶段算法,如R-CNN[2]、Faster R-CNN[3],根据检测算法提前生成候选区,然后再对候选区进行分析。一阶段算法,如SSD[4]、YOLO系列[5],可以实现端到端的检测,能够在一次前向传播中同时完成目标检测和定位,具有高效性和准确性的优势。然而,传统YOLO模型在头盔目标检测中仍然面临一些挑战,例如YOLOv8n网络参数多、不同尺度目标的检测问题等。因此,改进和优化YOLO模型以适应安全帽目标检测的需求成为国内外学者的研究目标[6][7]。
为了提高YOLOv8在目标检测的性能,引入了通道和位置注意力机制(Channel and Position Attention Mechanism, CPAM),使YOLOv8模型更加关注具有丰富信息的目标特征。
为了适应真实的安全帽应用场景存在小目标[8]的情况,在YOLOv8的基础上,新增小目标检测层P2,增加小目标特征信息量。
2. 模型原理
2.1. CPAM
CPAM是ASF-YOLO[9]中的一个注意力机制。ASF-YOLO是一种基于YOLO框架创新的目标检测模型,专为细胞实例分割设计,它结合了空间和尺度特征,旨在实现快速而精准的细胞识别与分割。在YOLO分割框架的基础上,ASF-YOLO引入了尺度序列特征融合(Scale Sequence Feature Fusion, SSFF)模块来增强网络的多尺度信息提取能力,并采用了三重特征编码器(Triple Feature Encoder, TFE)来融合不同尺度的特征图以增加细节信息。SSFF模块对输入的特征图进行卷积、差值(Interpolation)、维度扩展(Unsqueeze),最后,使用卷积、批处理归一化和LeakyReLU激活函数完成尺度序列特征提取。
在ASF-YOLO中,CPAM用以整合SSFF和TFE模块,重点关注信息通道和空间位置相关的小对象,以提高检测和分割性能。为了提高YOLOv8在目标检测的性能,使其更加关注具有丰富信息的目标特征,引入了CPAM和SSFF。
CPAM的结构如图1所示,它包括通道注意网络(Channel attention network)和位置注意网络(Position attention network)。在本文改进的YOLOv8中,通道注意网络的输入是处理后的P3特征图(输入1),位置注意网络的输入是输出1和SSFF输出(输入2)的叠加。
Figure 1.The structure of CPAM module
图1.CPAM的结构图
通道注意力机制的结构见图1的左侧虚线框内。通道注意力机制通过关注重要的特征通道来提升模型的表现,其首先对输入特征图F进行全局平均池化,数据重塑,应用一维卷积层和Sigmoid函数,生成每个通道的权重。为了捕获跨通道的相互作用,考虑每个通道及其k个最近邻通道,使用核为k的1维卷积实现,即核大小k表示局部跨通道相互作用的覆盖范围。由于卷积核大小k与通道维数C成正比,通道维数一般为2的指数,可以将k定义为
(1)
其中
和b是控制卷积核大小k与通道维度C之比的缩放参数。式中
代表对向上取奇数。实验中,将
的值设为2,b设为1。
位置注意力机制的结构见图1的右侧虚线框内。位置注意力机制通过关注重要的空间位置来提升模型的表现。将输出1与来自SSFF的特征(输入2)相结合作为位置注意网络的输入,可以提供互补信息,从特征中提取关键的位置信息。
与通道注意机制相比,位置注意机制首先根据输入特征图x的宽度w和高度h将其分成两部分,分别在高度方向和宽度方向进行空间平均池化,得到xh,xw。将拼接后的xh,xw通过卷积层和激活函数,见公式(2),(3)。
(2)
(3)
其中Concat是拼接操作,Conv是一个卷积层,BN表示批量归一化,ReLU是激活函数。
然后分离高度和宽度的特征图,并应用卷积层来生成权重。
(4)
(5)
表示Sigmoid函数。
最后,使用生成的高度和宽度方向的权重对原始特征图进行加权,得到输出out:
(6)
2.2. YOLOv8
YOLOv8是Ultralytics公司推出的基于目标检测模型的YOLO系列之一。YOLOv8共有YOLOv8n、YOLOv8s1、YOLOv8m、YOLOv8l和YOLOv8x五个版本,检测精度和模型大小依次增加。考虑到精度、模型大小和检测速度,本文选择以YOLOv8n作为基准算法,在此基础上进行改进和创新。
YOLOv8算法模型结构主要由输入端(Input)、主干网络(Backbone)和头部(Head)组成,其中头部包括了颈部网络(Neck)和检测头(Detcet)。在输入端部分,功能包括了马赛克(Mosic)数据增强、自适应锚框(Anchor)计算和其他数据增强技术。实验设置YOLOv8输入的是一张三维尺寸为640 * 640的图像,然后利用卷积神经网络将输入图像转换成特征图。网络会预测边界框的位置、大小和相关物体的概率,并根据预测结果生成目标检测结果。
相比较传统的目标检测算法,该算法模型在不损失检测精度的前提下具有更快的检测速度、更轻量的算法模型等优点。YOLOv8在YOLOv5的基础上进行了优化,用C2f (包括两个卷积层的CSP bottleneck)模块替换了YOLOv5中的C3 (包含三个卷积层的CSP bottleneck)模块,C2f模块包含更多的跳跃连接和split操作,减少了计算量并增强了特征信息的传递。YOLOv8不仅限于目标检测,还支持实例分割和关键点检测,这使得它成为一个多用途的计算机视觉工具。YOLOv8采用了无锚点的检测方法,简化了框的预测过程,提高了检测效率。
2.3. 小目标检测头
YOLOv8主干中的1~5级特征提取分支P1、P2、P3、P4、P5,对应与这些特征映射相关联的YOLO网络输出。在YOLOv8的特征提取阶段,使用多个C2f模块堆叠为主干,然后将主干的三个有效特征分支P3、P4、P5作为特征金字塔网络[10]结构的输入,在颈部构建特征融合结构,如图2的黑色箭头。
Figure2.An abridged general view of the framework of YOLOv8 and addition of P2 layer
图2.YOLOv8的框架及P2层的加入
真实的安全帽应用场景中,建筑工地施工现场获得的图片由于相机距离目标较远、颜色亮度不匹配、拍摄角度不合适、恶劣天气等情况下存在小目标情况。在改进的方法中,在特征金字塔中加入专门针对小目标的P2层,如图2的蓝色箭头。P2层的加入,可以改善目标检测系统中小目标可能被忽视或定位不准确的问题。
2.4. 算法改进说明
1) 在YOLOv8的颈部引入CPAM架构,搭配SSFF,其作用是提取不同通道中包含的代表性特征信息。
2) 在YOLOv8的头部引入小目标检测层P2,作为更浅的特征层,其可以改善下采样带来的小目标信息丢失导致模型在较深的特征图中很难精准定位和识别小目标这一问题。
改进后的网络(下文称CPAM-P2-YOLOv8)结构如图3,在网络第25层加入了CPAM。处理后的P2特征图对应于网络的第30层,最终的检测头接收P2、P3、P4和P5特征图作为输入,进行最终的目标检测。
3. 实验的结果与分析
3.1. 实验平台及参数设置
在本文实验使用Colab平台,深度学习的框架为torch-2.3.1+cu121,语言版本为Python3.10.12,GPU为NVIDIA Tesla T4,15102MiB,CPU为Intel(R) Xeon(R) CPU @ 2.20GHz,Cuda版本为12.2。实验环境的配置参数如表1所示。
主要训练参数配置如表2所示。
Figure3.Diagram of the CPAM-P2-YOLOv8n model architecture
图3.CPAM-P2-YOLOv8n的结构
Table 1.Configuration parameters of the test environment
表1.测试环境的配置参数
参数 |
版本或数值 |
操作平台 |
Colab |
CPU |
Intel(R) Xeon(R) CPU @ 2.20GHz |
GPU |
NVIDIA Tesla T4, 15102MiB |
CUDA |
12.2 |
Pytorch |
torch-2.3.1+cu121 |
Python |
3.10.12 |
Table2.Training parameters
表2.训练参数配置
参数名称 |
配置 |
Epochs |
100 |
Batchsize |
8 |
workers |
8 |
Optimizer |
SGD |
close_mosaic |
10 |
imgsz |
640 |
3.2. 数据集介绍
本次实验采用GDUT-HWD安全帽数据集[6]。GDUT-HWD数据集是一个专门为检测建筑工地上工人是否佩戴安全帽以及识别安全帽颜色而创建的基准数据集。总共包含3174张图像。本文按照7:1:2划分训练集、验证集与测试集,2221张用于训练集,318张用于验证集,另外635张用于测试集。数据集中共有18,893个实例,被分为5个类别:蓝色、黄色、白色、红色、未佩戴安全帽。每个实例都带有类别标签和边界框标注。特别的是,数据集中的小规模实例(面积 ≤ 322像素)数量最多,这为安全帽检测带来了挑战。
相比于其他研究使用的安全帽数据集[11],GDUT-HWD要求检测所有佩戴和未佩戴安全帽的工人,并识别安全帽的颜色。颜色识别有助于区分工地上的不同角色,从而增强安全管理。数据集注重头区域的边界框标注,而非整个工人身体,这减少了背景像素对检测的影响,提高了检测的鲁棒性。
3.3. 实验结果
实验采用精度(Precision,P)、召回率(Recall,R)、所有类别平均精度值(Mean Average Precision ,mAP,参数量(Parameters)、运算量(GFLOPs)、模型体积评估本文所提算法的性能,其中精度,召回率,mAP的公式分别是:
(7)
(8)
(9)
TP (True Positives):实际正类预测为正类的数量。
TN (True Negative):实际负类预测为负类的数量。
FP (False Positives):实际负类预测为正类的数量。
FN (False Negative):实际正类预测为负类的数量。
N为类别数量。
各类的平均精度(Average Precision, AP)可以被视为精确率与召回率曲线(PR曲线)下的面积,mAP则是衡量所有类别的平均均度。mAP50是在IOU (交并比)为0.5时的mAP。
YOLOv10[12]是2024年5月25日由清华多媒体智能组发布的用于实时端到端对象检测的新一代YOLO系列。SSD-RPA512是由数据集GDUT-HWD的创建者发布的SOTA模型。本次实验将YOLOv8n、YOLOv10、SSD-RPA512与CPAM-P2-YOLOv8n作对比,得出CPAM-P2-YOLOv8n模型相比于YOLOv8n模型mAP值提高了1.1%,参数量减少了17%。具体结果如表3所示。由此可见,CPAM-P2-YOLOv8n模型在安全帽检测方面性能更佳。
Table3.System resulting data of standard experiment
表3.对比试验结果
模型 |
P |
R |
mAP50% |
参数量 |
GFLOPs |
模型体积(MB) |
YOLOv8n |
0.907 |
0.837 |
90.5 |
3,006,623 |
8.1 |
6.3 |
YOLOv10n |
0.899 |
0.807 |
89.6 |
2,266,143 |
6.5 |
5.8 |
SSD-RPA512 |
--- |
--- |
83.9 |
--- |
--- |
--- |
CPAM-P2-YOLOv8n |
0.910 |
0.845 |
91.5 |
2,490,607 |
12.0 |
5.4 |
CPAM-P2-YOLOv8m |
0.918 |
0.858 |
93.0 |
22,610,721 |
94.8 |
45.7 |
CPAM-P2-YOLOv8n (学生模型) |
0.914 |
0.838 |
91.6 |
2,490,607 |
12.0 |
5.4 |
与YOLOv8n相比,CPAM-P2-YOLOv8n的精度、召回率和mAP50(下文称三项指标)分别高了0.3%、0.8%和1.0%。同时CPAM-P2-YOLOv8n的参数量和模型体积显著低于YOLOv8n,更适合部署在资源受限的设备上。由于CPAM和P2引入,GFLOPs在可接受范围内有所提高。
与YOLOv10n相比,CPAM-P2-YOLOv8n的三项指标分别高了1.1%、3.8%和1.9%。同时在参数量和模型体积方面,两者差别不大且均优于YOLOv8n。
与之前的研究中SSD-RPA512相比,CPAM-P2-YOLOv8n的mAP50高了7.6%,精度显著提高。
由于CPAM-P2-YOLOv8m的参数和模型体积大幅增加,其精度明显高于其他模型。与CPAM-P2-YOLOv8n相比,其三项指标分别高0.8%、1.3%、1.5%。大模型的训练往往耗费更多的资源,其GFLOPs 高达94.8。为了提高模型利用率,以CPAM-P2-YOLOv8m作为教师模型,通过逐层知识蒸馏(Channel-wise Knowledge Distillation)[13]训练CPAM-P2-YOLOv8n (学生模型)。经过实验发现,选择网络中的13,17,20,23,28层作为蒸馏层时,学生模型学习效果最佳。学生模型的精度和mAP50分别比采用传统的训练方法时的CPAM-P2-YOLOv8n高了0.4%、0.1%。
根据应用场景的不同,可以选择适合的模型。如果追求更高的性能并且资源充足,CPAM-P2-YOLOv8m可能是更好的选择。如果需要平衡性能和资源使用,则CPAM-P2-YOLOv8更为合适。具体实验结果如图4所示。
Figure4.Comparison diagram of experiments with different models
图4.不同模型的实验对比图
安全帽检测结果如图5所示,第一行图片为标签,第二行为CPAM-P2-YOLOv8n模型所检测的结果,第三行为YOLOv8n模型所检测的结果。左侧图片中YOLOv8n出现了预测错误;右侧图片出现小目标遮挡的情况,经过对比可以得出CPAM-P2-YOLOv8n模型对安全帽的小目标检测比YOLOv8更加好。
Figure5.Comparison diagram of CPAM-P2-YOLOv8n VS YOLOv8n
图5.CPAM-P2-YOLOv8n与YOLOv8n预测对比图
4. 结论
安全帽目标检测有很大的研究价值,保护工作人员生命安全应放在生产工作的第一位。做好安全帽检测工作可以防患于未然,对于个人和社会都有重要意义。本文应用GDUT-HWD数据集,在YOLOv8的基础上引入CPAM架构和P2检测层,CPAM-P2-YOLOv8n模型比YOLOv8模型在精度和mAP50上都有提升。除此之外,与其他模型比较,CPAM-P2-YOLOv8n在检测安全帽方面有明显优势。P2检测层的引入使其在小目标检测上更加精准。未来可以通过剪枝、进一步的蒸馏和模型轻量化等手段来减少模型参数,降低计算量提升检测速度。