江汉大学人工智能学院 关雅琪 侯 群
为了保证建筑工地施工人员的安全,要求佩戴安全帽。目前对安全帽佩戴的监督与检测大多采用深度学习的方法训练模型。为了使训练的模型达到实时检测的速度和精度需求,本文在进行了YOLO系列算法对比试验后,提出了一种采用改进的YOLO v5模型的安全帽佩戴检测方法,该方法对原始 YOLO v5模型进行输入尺寸、初始候选框的调整以及损失函数的改进,使YOLO v5模型更适用于安全帽佩戴的实时识别。
本文研究的安全帽检测算法旨在解决施工场地的安全问题,实际情况具有环境复杂、人流量大以及天气多变等问题,并且需要满足实时检测的速度和精度要求,传统的目标检测算法很难做到,目前在ResNet,Faster-RCNN等模型上训练速度更快的网络有YOLO系列算法。
YOLO v3借助特征金字塔网络(FPN)的多尺度特征融合思想,将3种不同尺度的特征图融合之后单独输出,分别进行目标检测,加强算法对小目标检测的精确度。YOLO v3的整体网络框架主要包括两个部分,第一部分为Darkent-53特征提取网络,第二部分为以Darknet-5为基础进行3次采样输出。
YOLO v5的识别模型能够在保证实时检测的速度下兼顾较高的精度,按照网络深度大小和特征图宽度大小分为YOLO v5s、YOLO v5m、YOLO v5l、YOLO v5,本文采用了YOLOv5s作为使用模型。YOLO v5的网络结构包含四个部分,分别是Input Sector,Backbone Sector,Neck Sector,Prediction Sector。
虽然YOLO v5具有检测速率快,检测精度高的优点,但是为了使得训练的模型更好的符合实时检测的需求,需要对原始的YOLO v5进行优化,不断调整超参数来得到更优的模型。
进行安全帽佩戴识别时,首先利用YOLO v5自带的目标检测权重,对人进行定位。使用人脸检测模块对输入的图像进行人脸识别并标记,然后使用安全帽佩戴识别模块对检测到的人脸区域裁剪出人脸区域子图像,对其以佩戴安全帽和没有佩戴安全帽为分组依据进行图像二分类,最后得到是否佩戴安全帽的图像识别结果。
YOLO v5训练阶段和预测阶段都会使用anchor box:训练阶段第一步是进行一系列卷积和池化,预先标注好的预测框需要在feature map层找到,计算这个预测框与真实框之间的偏差和损失,用anchor box去拟合真实的边框位置和大小是训练的最终目的。预测阶段需要先在整体图像上得到多个anchor box,之后再根据得到的安全帽检测模型的参数进行anchor box的类别以及偏移量的预测来得到边界框的最终预测值。
anchor box的取值直接影响到目标识别的速度和目标框位置的精度,因此需要根据自身数据集调整最优的anchor box。本文对训练集中标记目标框的高度和宽度大小进行聚类分析,主要运用的是K-Means聚类算法,根据YOLO v5模型网络结构的特点,找到9个聚类中心的宽高维度作为.config文件中anchor这个参数的取值,基于开源的安全帽数据集Safety-Helmet-Wearing-dataset聚类得出的Best Anchors=[[14.74,27.64],[23.48,46.04],[28.88,130.0],[39.33,148.07],[52.62,186.18],[62.33,279.11],[85.19,237.87],[88.0,360.89],[145.33,514.67]]。
采用GIOU_Loss做Bounding box的损失函数,可以克服IOU无法直接优化没有重叠的部分的问题,在目标检测的后处理过程中,保留一个最优的框并抑制那些冗余的框。GIOU的计算表达式如(1)所示,设M,N为两个检测框,X为最小的封闭形状,但X包含M,N,计算X没有包含M,N的面积占x的比值,最后用M,N的IOU减去比值。
GIOU解决了IOU两框不重合的问题,无论M,N两个框距离多远,只是两框不重合的值越大,GIOU越趋向于-1。GIOU是IOU减去一个值所得到的,这样避免了两个框不相交时Loss等于0的情况。GIOU具有可导的属性,当IOU=0时,表达形式如式(2)所示:
在实验过程中需要对超参数进行不断的调整和黑盒测试已达到符合当前数据集的最优模型,最终的各项参数数据具体如表1所示。
表1 超参数配置
优化器最终选用了随机梯度下降法(SGD),其中优化器的动量系数momentum设定为937×10-3,权重衰减系数设定为5×10-4。
本文做了两类对比实验,并利用模型评估方法来客观评估算法。
对比实验一:如表2所示,分别利用原始的YOLO v3和YOLO v5深度学习算法,训练同一个开源的安全帽数据集Safety-Helmet-Wearingdataset,实验结果表明,YOLO v5算法训练出来的模型除了体积更小,收敛更快之外,检测速率、准确率相比YOLO v3的提升均非常显著。
表2 YOLO v3和YOLO v5的对比实验结果
对比实验二:如表3所示,分别利用原始YOLO v5和改进后的YOLO v5深度学习算法,训练同一个开源的安全帽数据集Safety-Helmet-Wearing-dataset,实验结果表明,增加K-Means聚类改进anchor box和选用GIOU_Loss函数后改进的YOLO v5算法训练出来的模型准确率相比原始的YOLO v5有一定的提升,并且提前了5个epoch收敛,准确率和mAP分别提升了3.9%和1.6%。
表3 改进后和原始的YOLO v5对比实验结果
综上所属,YOLO v5在安全帽数据集上模型表现优势显著,并且在进行调整和优化后改进的检测算法更能满足安全帽实时检测的速度和精度要求。
实验中的测试集图片的检测结果如图1所示。
图1 模型测试结果
从检测结果可以看出,该算法对图像整体特征的提取比较全面,在检测对象所处的环境十分复杂或者运动状态下都可以准确地检测出来。而且由各个栅格产生的bounding boxes在加权非极大值抑制的不断迭代和筛选下,得到了与检测对象最吻合的检测框,当存在一定的遮挡,图像清晰度很差和识别对象较多的条件下,算法还能准确的识别是否佩戴安全帽。本文选择了准确性、召回率、平均精度的平均值以及调和平均值等来作为该模型中的评价指标。
用于安全帽佩戴识别的YOLOV5模型在训练50个epoch后,按照上述选定的多项指标对训练出的模型进行评估,评估结果如图2所示。
图2 模型评估结果
图2展示了用于安全帽佩戴识别的YOLOv5模型的各项评估结果:模型达到收敛时经过了50个epoch,在模型训练过程中,其准确率和召回率的提升十分稳定,模型达到饱和后,其准确率(Precision)可稳定保持在90%以上,召回率(Recall)可稳定保持在90%附近,平均精度均值与调和均值也保持较高水平。其中mAP指标能够客观反应算法的整体性能,通过试验,得到了头、安全帽和总体的mAP值。具体如表4所示。
表4 各项得分
在经过训练之后,测试集上的mAP 达到了 90.1%,说明改进的算法在安全帽佩戴检测上的表现优异。同时该模型在实际应用中识别速度较快,经测试采用GTX 2070显卡时,识别速度可达37FPS,基本符合实时检测的要求。YOLO v5模型体积较小只有14M,因此很容易在一些工业计算机中落地应用,能实时监督生产作业区域的工人是否佩戴安全帽。
本文提出了一种优化的YOLO v5模型的安全帽佩戴检测算法。通过对比不同算法,改进anchor box、损失函数,调整网络架构参数及优化器等方法得到改进的YOLO v5网络,检测速度和精度足以应用到安全帽实时检测系统当中。实验表明算法具有较好的稳定性和可靠性。