国华(乾安)风电有限公司138000
摘要在实际生产过程中,因工人不戴安全帽而引发的安全事故时有发生。为了减少佩戴头盔造成的安全事故,提出了一种基于改进YOLO v4的头盔检测方法。通过采集自制的现场施工现场视频数据集,利用K-means算法对数据集进行聚类,得到适当的先验帧维中心,获取更有针对性的边缘信息。随后,在网络训练过程中采用多尺度训练策略,从不同的检测尺度提高模型的适应性。实验结果表明,在头盔佩戴检测任务中,模型mAP值达到92.89%,检测速度达到15f/s,检测精度和检测速度较YOLO v4有所提高,满足实时性要求。头盔检测任务。
关键词 安全帽检测 神经网络 目标检测 YOLO v4
1 引言
佩戴安全帽是保障工人安全的重要条件。目前,施工现场安全帽佩戴检测主要有人工检测和视频监控两种方式。但是,这些监管方式需要大量的人工成本。因此,实时检测监控视频中的工作人员是否佩戴安全帽,对安全监管具有重要意义。
近年来,深度学习是机器学习新的研究方向。在目标检测领域,Redmon J[1]提出了YOLO检测算法,该算法丢弃了候选区域的中间步骤,使用了单个卷积神经网络。直接对每个bounding box进行回归,预测对应类别的概率,在保证检测精度的同时,最终检测速度达到45f/s。在YOLO的基础上,Redmon先后提出了YOLO v2[2]和YOLOv3[3]检测算法,提高了检测效果和检测时间。2020年,Alexey A.B.[4]接手Redmon,在YOLO v3的基础上做了改进。检测效果进一步提升。在COCO数据集上实现了43.5%的AP,实时速度可以达到65FPS。更重要的是,检测准确率比YOLO v3提高了近10个百分点。与EfficientDet[8]相比,YOLO v4花费了一半的时间来达到与43AP相同的性能。可见,在目标检测领域,YOLO v4可以同时保持精度和检测速度,取得更好的检测效果。
安全帽佩戴检测包括一类目标检测问题。目前,与头盔检测相关的研究并不多。Yan Rongrong[5]结合肤色分割和Adaboost算法进行人脸定位和头盔检测。冯国臣[6]利用OpenCV颜色识别相关方法研究头盔的自动识别。张博[7]使用OpenPose定位人体头部和颈部位置生成子图像,使用Faster R-CNN检测子图像中的头盔。现有的方法大多基于传统的目标检测方法,大多存在检测速度慢、检测精度低等问题。而且,它们受环境影响很大,难以满足实际复杂多变的工业环境的需要。
本文利用施工现场的视频数据和辅助网络爬虫获取的图片创建头盔检测数据集。首先,基于YOLO v4模型,对目标框的维度进行K-means聚类分析,得到更准确的维度框信息,从而使模型能够获取更多目标物体的边缘信息。然后在训练过程训练中使用多尺度图像使模型能够适应不同分辨率的图像。最后,在模型训练过程中多次训练获得最优参数。实验表明,改进后的YOLO v4算法可以在保证检测精度的同时提高检测率。
本文组织结构如下:第二节讨论了相关工作;第三节介绍了论文安全帽检测方法;第四节介绍了该方法的实验分析;第五部分对全文进行总结。
2 相关工作
目标检测架构分为两种,一种是two-stage,一种是one-stage,区别就在于 two-stage 有region proposal 过程,类似于一种海选过程,网络会根据候选区域生成位置和类别,而 one-stage 直接从图片生成位置和类别。论文提到的 YOLO 就是一种 one-stage 方法。
YOLO 是 You Only Look Once 的缩写,意思是神经网络只需要看一次图片,就能输出结果。YOLO 一共发布了四个版本,其中 YOLOv1 奠定了整个系列的基础,后面的系列就是在第一版基础上的改进,只为提升性能。
YOLOv1 的检测方法如下:
将输入图像划分为 S×S 网格(grid),比如这里划分成 7×7=49 个 grid,如果目标的中心落入网格单元,则该网格单元负责检测该目标。注意不是整个物体落入单元格,只需要物体中心在即可。
之前 two-stage 方法如 R-CNN 把检测问题分成两部分,先生成候选区域(region proposal),再用分类器对区域分类,多阶段训练导致不易优化。YOLOv1 把检测当作回归问题,用一个网络输出位置和类别,实现了一个 unified system,从检测的角度是 one-stage的训练流程和 R-CNN 差不多,首先 ImageNet 1000类 竞赛数据集上对卷积层进行预训练然后再把网络根据检测任务微调检测流程,输入一幅多目标图像,将图像划分成多个网格,通过网络得到每个网格的分类概率,以及各网格预测的框+置信度。针对每个框,把概率与置信分数相乘,作为每个框特定于每个类的置信分数、输出位置和类别信息其优点在于可以基于整幅图像预测(看全貌而不是只看部分)。与基于滑动窗口和区域提议的技术不同,YOLO在训练和测试期间会看到整个图像,因此它隐式地编码有关类及其外观的上下文信息。因为能看到图像全貌,与 Fast R-CNN 相比,YOLO 预测背景出错的次数少了一半。
学习到物体的通用表示(generalizable representations),泛化能力好。因此,当训练集和测试集类型不同时,YOLO 的表现比 DPM 和 R-CNN 好得多,应用于新领域也很少出现崩溃的情况。
其缺点存在空间限制:一个单元格只能预测两个框和一个类别,这种空间约束必然会限制预测的数量;难扩展:模型根据数据预测边界框,很难将其推广到具有新的或不同寻常的宽高比或配置的对象。由于输出层为全连接层,因此在检测时,YOLO 训练模型只支持与训练图像相同的输入分辨率;网络损失不具体:无论边界框的大小都用损失函数近似为检测性能,物体 IOU 误差和小物体 IOU 误差对网络训练中 loss 贡献值接近,但对于大边界框来说,小损失影响不大,对于小边界框,小错误对 IOU 影响较大,从而降低了物体检测的定位准确性。
YOLOv2 的检测方法如下:
由于YOLOv1 检测性能低,当前的检测任务受数据集标签的限制(数据集必须有标签或通过分类赋予标签)。但是,标记检测图像比标记分类图像昂贵得多,所以检测数据和分类数据不是一个规模。
针对第一个问题,使用一些方法提升 YOLOv1 的性能,得到 YOLOv2。针对第二个问题,提出了 ImageNet 和 COCO 数据集的结合方法,以及联合训练方法,训练 YOLOv2 后得到的模型叫 YOLO9000。
其提升性能的方法是提出一个新网络:Darknet-19。论文提出了一种联合训练算法,该算法可以在检测和分类数据上训练目标检测器。 利用标记的检测图像来学习精准定位,同时使用分类图像来增加其“词汇量”和健壮性。分类检测数据集结合方法:检测数据集的标签少且普通,分类数据集的标签多且具体,如果我们想在两个数据集上训练,就得把它们的标签合并起来。很多分类方法都用一个 softmax layer ,但它的前提是假设所有类互斥,但我们的数据集类别是不都是互斥的(有可能是包含关系,例如狗和金毛犬),所以我们使用了一个多标签模型来组合数据集(无互斥的要求),及使用多个 softmax 。大多数分类方法都假定标签采用扁平结构,但是对于组合数据集我们需要层次化的结构。ImageNet 标签采用有向图结构。在这里,作者把数据集的结构简化为结构树(hierarchical tree)。通过改造图,最后得到一个 WordTree,这样每个节点/标签都有自己的概率,解决了类别之间不互斥的问题,就能在检测集和分类集上联合训练。联合训练方法:把检测和分类数据混合,训练过程中遇到带标签的检测图像,就基于 YOLOv2 整个损失函数进行反向传播,遇到分类图像,只反向传播网络的分类损失。
YOLOv3 的检测方法如下:
YOLOv3 在 YOLOv2 基础上做了一些小改进,文章篇幅不长,核心思想和 YOLOv2、YOLO9000差不多。
模型改进方面增加了边界框预测:定位任务采用 anchor box 预测边界框的方法,YOLOv3 使用逻辑回归为每个边界框都预测了一个分数 objectness score,打分依据是预测框与物体的重叠度。如果某个框的重叠度比其他框都高,它的分数就是 1,忽略那些不是最好的框且重叠度大于某一阈值(0.5)的框;类别预测:和 YOLOv2 一样,YOLOv3 仍然采取多标签分类;多尺度预测:使用新网络 Darknet-53 提取特征。
YOLOv4 的检测方法如下:
YOLOv4 是对 YOLOv3 的一个改进。它的改进方法就是总结了几乎所有的检测技巧,又提出一点儿技巧,然后经过筛选,排列组合,遍历实验(ablation study)哪些方法有效。
下图介绍了 YOLOv4 检测器的构成及使用的训练方法,这些是经过大量实验选出的性能最好的组合。
图1 YOLO改进流程
3 安全帽检测方法
A. YOLO v4介绍
YOLO v4算法采用全新的CSPDarknet53神经网络作为检测器的主要模型。YOLO v4包含29个3x3,725x725 输入特征图和27.6M参数的卷积层。SPP块被添加到CSPDarknet53,这显着增加了输入特征图并分离了上下文特征。最后,在YOLO v3中使用PANET代替FPN作为不同检测器级别的参数聚合方法。
此外,YOLO v4还提出了一些新的改进策略:
1)应用一种新的数据增强方法;
2)通过GA选择最优的超参数;
3)改进现有方法,使其更适合高效训练和推理:改进SAM和PAN。
B. 改进方法
YOLO v4在目标检测领域取得了不错的检测效果,而YOLO v4的目标检测是在通用数据集上实现的。至于具体的头盔佩戴检测数据集,需要在YOLO v4上做一些改进。为了适应特定的头盔检查任务,改进的方法主要包括使用K-means算法进行维度聚类和多尺度训练。
1)K-means维度聚类算法:YOLO v4借鉴YOLO v3中使用先验框预测边界坐标的方法,使用K-means算法预测9个先验框,较大尺度的特征图使用较小的先验框获取更多目标边缘信息
YOLO v4基于COCO数据集计算出的9组先验帧维度分别为:(12, 16), (19, 36), (40, 28), (36, 75), (76, 55), ( 72, 146), (142, 110), (192, 243), (459, 401)。在实际的头盔佩戴检测任务中,YOLO v4计算的先验框架维度并不适合头盔佩戴检测场景。使用YOLO v4的原始先验帧维度很难获得准确的目标帧信息。
因此,在头盔佩戴检测场景中,利用K-means算法对自制头盔佩戴数据集进行聚类分析,得到9组先验框维中心,分别为:(7, 15), (9, 19),(11, 23), (15, 29), (21, 38), (30, 51), (44, 74), (69, 118), (128, 212)使用这个簇中心网络头盔佩戴检测的训练可以获得更好的结果。
2)多尺度训练:对于自制的头盔检测数据集,输入的图像有不同的大小。因此,为了增强模型对图像大小的鲁棒性,可以采用多尺度的训练策略。具体来说,将YOLO v4网络中的全连接层去掉,改为全卷积操作,因为全连接层的存在使得网络输入图片的大小,必须是固定的在训练过程中。
3)当输入图像尺寸为416x416时,经过Darknet-53网络后,输出13×13×1024的特征图。第一种结构通过一个包含4096个神经元的全连接层得到一组4096×1的Feature map;第二种使用4096个13×13卷积核最终得到一个1×1×4096的特征图,即本质上相当于一个全连接得到的4096个神经元。对于以上两种网络结构,当图片输入尺寸为416×416时,网络可以正常运行,但头盔自制数据集中还有其他尺寸的图片。比如输入一张608×608大小的图片,网络就可以正常运行。网络输出一个19×19×1024的特征图后,对于图1(a)的结构,特征图需要全连接4096个神经元。由于原来的架构大小是13×13,现在换成了19×19,网络在传播过程中无法使用之前的参数矩阵,无法正常运行。对于第二种结构,将全连接改为卷积运算后,网络可以继续运行,得到7×7×4 096的正确输出。因此,改变全连接层后对不同尺寸的输入图像进行全卷积运算和训练,改进后的算法可以适应不同尺寸的测试图像。
基于以上分析,本文采用多尺度训练策略对自制头盔数据集进行训练。由于整个网络有5个最大池化层,网络的子采样率为32。在训练过程中,头盔佩戴数据集的训练图像的输入大小被分成32个倍数的序列。尺寸计算公式为:
Sn = 32n , n ≤ 9 (1)
其中,Sn为输入图像的大小。在网络初始化期间,S1为 320 x 320。
从等式(1)可以得出输入图像的大小为:{320,352..., 608}。 在训练过程中,每10轮随机选择一个输入图像尺寸,以实现能够适应不同尺寸图像效果的模型。
4 安全帽检测实验分析
A.实验平台
表1 实验环境参数
CPU | Intel(R)i7-9750H CPU@2.60GHz |
RAM | 16G |
GPU | Nvidia GeForce GTX 1660Ti 6GB |
编程语言 | Python 3 |
深度学习框架 | Tensorflow 2 |
B. 模型训练
本文使用YOLO v4官网提供的权重参数作为网络训练的初始化参数。它还以施工现场视频并辅以网络爬虫图片作为数据集进行多次训练。微调网络参数优化整体网络训练效果。部分实验参数设置如表1所示,整个模型训练过程在这套环境下进行。当迭代次数达到15000次时,平均损失函数avg损失值为3.6782,模型训练效果最佳。
C. 模型性能分析
1)不同目标大小下的性能测试:为了验证不同目标检测性能下的检测效果,测试数据集按照目标大小进行排序。0-25%, 25% - 50%, 50% - 75%和75% - 100%的目标分为A、B、C、D四个子类,分别代表不同目标的大小。如表2所示,列出了原始和改进的Yolo V4算法针对不同大小目标的性能数据。
表2 算法性能测试
YOLO v4 | Improved YOLO v4 | |
A | 61.48% | 63.76% |
B | 78.69% | 80.56% |
C | 87.62% | 89.23% |
D | 93.26% | 95.63% |
从表2可以看出,改进后的Yolo V4算法对不同目标尺寸的检测精度高于原 Yolo V4算法。因此,多尺度训练策略的使用使得整个算法在小目标检测中取得了很好的效果。
2)安全帽佩戴检测模型对比实验:在模型性能分析方面,本文以各类别的平均精度(mAP)作为模型质量的评价指标,对模型进行了实验改进的YOLO v4算法。同时使用Faster R-CNN、YOLOv3和原YOLO v4算法与改进后的YOLO v4进行比较。mAP和每秒帧数(FPS)作为检测效果评价指标。实验结果如表3所示。
表3 实验结果对比
算法 | mAP% | FPS(f/s) |
Faster R-CNN | 92.82% | 0.2 |
YOLO v3 | 86.24% | 12.0 |
YOLO v4 | 90.66% | 15.0 |
Improved YOLO v4 | 92.89% | 15.0 |
D. 结果分析
从实验结果可以看出,Faster R-CNN的mAP值最高,达到了94.82%,改进后的YOLO v4算法的mAP值为92.89%。虽然检测精度略低于Faster R-CNN,但其检测速度比它快75倍。YOLO v3和原YOLO v4在检测精度上都不如改进后的YOLO v4算法。也可以看出,改进后的YOLO v4兼顾了检测精度和检测速度,可以更好地应用于实际环境中,实现头盔佩戴检测任务。
另外,为了直观感受不同算法之间的检测差异,本文选取一组检测图片进行分析。算法对实际工地环境进行检测。并在实际工程中发现改进的YOLO v4算法检测效果好,置信度高。综上所述,本文提出的改进YOLO v4算法在保持较高检测率的同时,可以满足实时检测要求。
5 结论
本文提出了一种基于改进的YOLO v4的头盔佩戴检测方法。以施工现场视频辅以网络爬虫图片为数据集进行头盔佩戴检测测试。然后通过使用目标帧维度聚类和多尺度训练方法改进YOLO v4网络,以确保更高的准确率。同时,这仍然具有较快的速度,可以满足实际工业环境中头盔佩戴检测任务的准确性和实时性要求。
6 致谢
本论文研究工作得到了公司高风险安全作业项目的支持。
参考文献
[1]Redmon J, pvala S, Girshick R, et al. You only look once:unified, real-time object detection[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 2015:779-788.
[2]Redmon J, Farhadi A.YOLO9000:better, faster, stronger[C]//IEEE Conference on Computer Vision and Pattern Recognition, 2017:6517-6525.
[3]Redmon J, Farhadi A. YOLOv3: an incremental improvement[J].IEEE Conference on Computer Vision and Pattern Recognition, 2018:89-95.
[4]YOLOv4: Optimal Speed and Accuracy of Object Detection. BOCHKOVSKIY A,WANG C Y,LIAO H Y M. https://arxiv.org/abs/2004.10934.2020.
[5]Yan Rongrong. Research on safety helmet detection algorithm for industrial scene [D]. Xi'an University of Technology, 2019.
[6]Feng Guochen, Chen Yanyan, Chen Ning, Li Xin, Song Chengcheng. Research on Automatic Identification Technology of Safety Helmet.Based on Machine Vision[J]. Machine Design and Manufacturing Engineering, 2015, 44(10): 39-42.
[7]Zhang Bo, Song Yuanbin, Xiong Ruoxin, Zhang Shichao. Detection of wearing helmets fused with human joint points[J]. Chinese Journal of Safety Science, 2020, 30(02): 177-182.
[8]Liu Xiaohui, Ye Xining. Application of skin color detection and Hu moment in helmet recognition[J]. Journal of East China University of Science and Technology, 2014, 40(3).
[9]Research on target vehicle detection based on improved SSD algorithm[J].Chen Bingqu, Deng Tao. Journal of Chongqing University of Technology (Natural Science). 2019(01).
[10]Application of improved convolutional neural network in pedestrian detection[J]. Xie Linjiang, Ji Guishu, Peng Qing, Luo Entao. Computer Science and Exploration. 2018(05).
[11]Safety helmet recognition based on parallel two-way convolutional neural network [J]. Huang Yuwen, Pan Difu. Enterprise Technology Development. 2018(03).
作者简介
张惟涛(1987-),男,河北省邢台市人,本科,现供职于国家能源集团国华(乾安)风电有限公司,2009年至今一直从事风电行业运行管理、安全管理工作。
国华(乾安)风电有限公司 吉林省松原市