基于深度学习的安全帽佩戴检测算法综述
2022-07-12李政谦
李政谦 刘 晖
(北京华电天仁电力控制技术有限公司 北京 100039)
0 引 言
佩戴安全帽是一项防止脑部损伤的措施。研究表明,在建筑工地及巡检现场中,有接近90%的脑损伤是因为没有正确地佩戴安全帽引起[1],有必要对相关人员的安全帽佩戴进行检测,降低相关事故发生率。
早期,施工及巡检现场通常会有专责的安全监督人员对工人们的安全帽佩戴情况进行检测,但这种方式难以全方位监督,无法保证监督的有效性。因此,相关单位为了能够实时监督施工及巡检现场并降低监督成本,存在安全帽佩戴检测的实际需求。
一般的目标检测方法仅需在图片上判断是否存在检测目标,并获得目标数量,标记目标位置。对于安全帽佩戴检测算法,在此基础上还要求针对动态视频实时识别、深度优化,达到较高的识别跟踪精度;对光线、阴天等不同环境适应性强,且不受人员眼镜、胡须、发型、表情等遮挡影响;也不受到人员正面、背面、侧面、跑动、低头等不同姿态影响。近年来,研究人员在基于传感器与基于图像处理等两种检测方式上对安全帽佩戴检测做了很多具有创新性的研究工作。
基于传感器的识别主要通过定位技术来采集人、材、机的位置信息,提供给安全识别系统进行综合风险评价[2-5]。由于定位精度不高以及大量的设备投入并且存在一定程度的健康隐患,传感器识别技术在实际现场中很难进行推广。
研究人员也尝试通过图形处理进行安全帽检测,主要分为对安全帽的形状特征[6]、颜色特征[7-9]、边缘特征[10]、特征表示和分类器相结合[11]等四类进行检测。但基于图像处理的安全帽检测需要手动构建大量的特征,检测速度慢、准确率低等问题使得其不适用于复杂性较高的施工及巡检现场。
由于传统目标检测算法存在以上缺点,无法达到安全帽佩戴检测实际需求,基于深度学习的检测算法依靠其网络简单、检测速度快准确性高等特点超过传统检测算法,成为当前安全帽佩戴检测方面的主流算法。
1 目标检测算法评价指标
(1) 检测速度fps(Frames per second):每秒能够检测的图片数量。
(2) 交并比IOU(Intersection over Union):预测边框与实际边框的交集和并集的比值。
(1)
式中:Bp为预测边框;Bg为实际边框。
(3) 准确率P(Precision):
(2)
式中:TP是预测正确的正样本的数量;FP是将负样本预测成正样本的数量。
(4) 召回率R(Recall):
(3)
式中:FN是将正样本预测为负样本的数量。
(5) 平均准确率AP(average precision):
(4)
式中:t是在不同IOU下曲线的召回率,比如当t=0.7时,只有IOU≥0.7才被认为是正样本。
(6) 平均准确率均值mAP(mean average precision):
(5)
式中:N为种类数量。
2 基于分类的目标检测算法
基于深度学习的目标检测算法可分为基于分类的目标检测算法和基于回归的目标检测算法。基于分类的目标检测算法也称为两阶段目标检测(two-stage),首先针对图像中目标物体位置,预先提出候选区域,然后微调候选区并输出检测结果。
2.1 Faster R-CNN
文献[13]提出的R-CNN(Regions with CNN features)是将卷积神经网络(CNN)用于目标检测的开端,如图1所示,其首先是利用选择性搜索(Selective Search)[14]生成2 000个候选区域并转换成指定大小,然后送入CNN模型中得到一个特征向量,最后使用SVM进行分类并得到目标区域。
图1 R-CNN流程图
其在PASCAL VOC 2010数据集上准确率达到了53.7%,与之前各算法相比获得了巨大的提升,但仍然存在着计算时间长、无效计算多、占用空间大等缺点。随后文献[15]提出了空间金字塔池化层(Spatial Pyramid Pooling,SPP)解决R-CNN中重复卷积的问题。同年Girshick提出的Fast R-CNN[16]修正了R-CNN和SPP-net的缺点,比如减少了训练步骤且不再将特征保存在磁盘,提高了速度和准确性。但Fast R-CNN在提取区域候选框时仍使用Selective Search算法,检测速度仍然较慢。因此,以上算法对安全帽等小目标的识别准确率及检测速度并不能很好地满足工程使用,直到文献[17]提出了Faster R-CNN,研究人员开始大量使用并改进该方法应用于安全帽检测领域。
Faster R-CNN算法用候选区域生成网络(RPN)代替了选择性搜索算法,提高了算法的检测速度和准确率。Faster R-CNN流程如图2所示,首先,提取照片的特征。然后使用CNN方法对整幅图像进行处理,利用几个卷积层和最大池化层生成卷积特征图。特征图被后续RPN层和全连接层共享。然后使用区域生成网络(RPN)生成候选区域。之后进入ROI池化层,收集输入的特征图和候选区域并池化为固定大小,送入全连接层。最后是Fast R-CNN检测器,它利用候选区域和相应的被提取的特征对候选区域是否是戴安全帽的工人进行分类。
图2 Faster R-CNN流程图
Faster R-CNN能够很好地处理复杂环境,可以自动学习特征,无须手动建立各种人体姿态模型,相比上文模型其拥有更高的准确率和检测速度,满足了各种建筑工地的实际安全监控要求。
在安全帽检测领域研究中,文献[18]使用Faster R-CNN+ZFNet的组合搭建了安全帽检测系统,该系统能够实时识别监控视频中的人员和头盔,mAP高达90.3%,每幅图像的检测时间高达27帧/秒。Fang等[19]提出了一种基于快速R-CNN的远场监控检测方法,从25个不同建筑工地的远场监控视频中随机选择了超过10万幅建筑工人图像帧,实验结果表明,该方法检测精度高,能有效地检测不同施工现场条件下施工人员的安全帽佩戴情况,有利于改进安全检查和监督。王悦[20]改进Faster R-CNN的算法训练过程同时对YOLO、SSD相关深度学习检测算法进行测试对比,获得了更高的准确率。王忠玉[21]通过分层预测特征金字塔的多层特征改进了Faster R-CNN,设计了一种安全帽佩戴检测算法(FMP-net),其效果优于Faster R-CNN和SSD等算法。2019年,文献[22]使用了EspiNet V2模型,改进了Faster R-CNN的CNN部分,获得了一个6层(4卷积)的简单CNN网络,减少了一定的参数量。该模型能够从低角度和移动摄像机拍摄且存在一定遮挡的情况下获得88.8%的mAP。徐守坤等[23]通过在Faster R-CNN增加锚点以及使用多尺度训练来增强不同尺寸目标在检测送的鲁棒性,同时增加在线困难样本挖掘策略用以防止正负样本不均衡问题,最后采用多部件结合方法剔除误检目标。Wang等[24]研究了建筑工地在有遮挡、重叠以及工人衣着反光等情况,使用改进后的Faster R-CNN对目标进行检测,获得了较高的检测精度。
2.2 R-FCN
由于Faster R-CNN仍然存在检测速度较慢的情况,Dai等[25]在此基础上设计出了R-FCN,基于区域的全卷积网络(region-based fully convolutional network,R-FCN)是一种利用全卷积网络进行目标分类识别的网络,它适用于复杂背景中广泛存在的小目标的识别。其流程图如图3所示。
图3 R-FCN流程图
首先输入图像经过一个全卷积网络(ResNet),然后一方面在最后一个卷积层后面添加特殊的卷积层生成位置敏感得分图(position-sensitive score map),另一方面全卷积网络的某个卷积层输出作为RPN网络的输入,RPN网络最后生成ROI。最后的ROI池化层将前面的得分图和ROI作为输入,并输出类别信息。R-FCN在整幅图像上共享计算,减少了参数冗余,并利用位置敏感得分图,解决了图像分类平移不变性和目标检测平移变化之间的矛盾,在ImageNet上取得了较好的识别分类结果。
在安全帽检测领域研究中,文献[26]使用基于区域的全卷积网络(R-FCN)进行深度学习,R-FCN是基于卷积神经网络(CNN)和转移学习技术的对象检测算法之一。对来自ImageNet的1 089幅人体和安全帽图像进行学习,测量人体和安全帽的mAP分别为0.86和0.83。Wang等[27]提出了一种基于区域全卷积网络(R-FCN)的多类检测器来实现对多目标的检测和定位。然后根据检测结果对工人或设备进行二次分析,识别出违规类型和缺陷类型。
3 基于回归的目标检测算法
尽管经过多次改良,两阶段检测算法大幅提高了检测准确率与速度,但由于两阶段检测存在提取候选区域的过程,检测速度难以满足部分现场需求,因此研究人员开发出单阶段(one-stage)算法,将整个检测过程简化为一次端对端的检测。
3.1 YOLO
文献[28]提出YOLO(You Only Look Once)算法,使用回归的思想来处理物体检测(object detection)问题,用一个卷积神经网络对输入的图片进行卷积运算,进而降低图片数据的维度,进行特征提取,能够直接预测边界框(bounding box)的位置以及类别。结构上将多步检测优化为统一检测,提高了模型的运行速度,既可以直接学习图像的全局信息,也可以端对端训练。图4所示为YOLO的流程图。
图4 YOLO流程图
但YOLO存在两点不足之处,一是定位不准确,二是和基于分类的检测方法相比召回率较低。
在安全帽检测领域研究中,刘君等[29]设计了一种改进的YOLO网络结构,将RPN检测算法融入到YOLO算法中,并借鉴R-FCN算法,去掉一个全连接层,在卷积层上进行滑动窗口操作,采用先池化再卷积的方法,以减少图片特征丢失。该模型在准确率与检测速度上都取得满意的结果。Hung等[30]提出了一种基于YOLO算法的实时防护装备图像检测方法,并为此建立一个建筑工地6种常见防护设备的图像数据库。实验表明该模型在准确率上较好的检测结果,未来将在检测速度上加以优化。
3.2 YOLOv2
2016年Redmon等[31]引入了一个先进的实时目标检测系统YOLOv2,其网络结构参照SSD和YOLO的网络结构,为了解决YOLO在物体定位方面不够准确,并且召回率较低等缺点,YOLOv2增加了批量正则化(Batch Normalization),使用了K-means聚类产生的锚点代替Faster R-CNN和SSD手工设计的锚点、高分辨率分类器(High Resolution Classifier)并使用Darknet-19为基础模型进行特征提取。YOLOv2网络结构如图5所示。
图5 YOLOv2流程图
在安全帽检测领域研究中,2018年方明等[32]通过在以YOLOv2为基础的模型中加入密集块,实现了多层特征的融合以及浅层低语义信息与深层高语义信息的兼顾,提高了网络对于小目标检测的敏感性,利用Mobilenet中的轻量化网络结构对网络进行压缩,使模型的大小缩减为原来的十分之一,增加了模型的可用性。结果显示:该模型的检测准确率为87.42%,稍逊色于YOLOv3,但是其检测速度提升显著达到148帧/s。文献[33]通过改进YOLOv2的网络结构来提高检测速度,并使用强化连接来降低计算复杂度,使多层功能重用和融合。利用Tiny-YOLO-Density实现了电力施工现场违法行为监测系统[34]。
3.3 YOLOv3
在YOLOv2基础上,2018年Redmon等[35]提出了YOLOv3算法,采用残差网络模型Darknet-53网络结构代替了YOLOv2的Darknet-19,通过53个卷积层和5个最大池化层来提取特征,使用批量归一化和dropout去除操作来防止过拟合,损失函数使用logistic代替了softmax等等。YOLOv3预检测系统采用了多尺度训练,使用分类器多次执行检测任务,将模型应用于图像的多个位置和比例,例如输入为416×416像素时会融合13×13、26×26、52×52像素三个特征层。因此YOLOv3适用于小目标检测,其结构图如图6所示。
图6 YOLOv3流程图
在安全帽检测领域研究中,王秋余[36]提出基于YOLO的半监督学习安全帽佩戴识别算法,实现了在保持准确率不变的情况对样本标注与收集工作的简化,并提高了小目标的准确率与模型的泛化能力,适用于施工现场工程需求的实时识别。该模型在一般场景条件视频流的建筑工人与安全帽检测准确率在85.7%至93.7%之间。文献[37]使用虚拟世界图像集对YOLOv3进行训练,所获得的性能比仅使用少量真实图像对现有网络进行微调以适应当前场景要高得多。文献[38]研究了YOLO相关算法,建立基于YOLOv3的最优模型,将深度残差网络技术与基于YOLOv3检测算法的多尺度卷积特征相结合,结合多尺度检测训练,调整训练过程中的损失函数。实验结果表明,在满足检测速度的前提下,提高了安全帽佩戴检测精度。施辉等[39]基于图像金字塔结构改进原模型,融合连接不同层次的特征图,得到3组预测特征图进行预测。在安全帽佩戴检测任务中,检测准确率达到了92.13%,检测速率提高到62帧/s,均高于原模型,准确率相对Faster R-CNN较差,但检测速度大幅提升。林俊等[40]针对未佩戴安全帽单类检测问题,修改了分类器,将输出修改为18维度的张量。基于YOLOv3在ImageNet上的预训练模型,平均检测速度达到了35帧/s,但在重叠目标上会出现漏检现象。杨莉琼等[41]提出一种将YOLOv3与HOG、SVM相结合的安全帽检测方法,该方法对建筑工地上的识别有较高的准确率。文献[42]在目标维度聚类、多尺度检测、密集连接三个方面优化网络结构并提出基于OpenPose算法施工人员姿态估计辅助的安全帽佩戴检测方法,在干扰测试集中仍取得90.2%的准确率和86.8%的召回率。但人体姿态估计模型检测时间相对较长是作者之后需要解决的问题。文献[43]以YOLOv3全回归深度神经网络架构为基础,利用Densenet在模型参数和技术成本上的优势,代替YOLOv3网络的主干进行特征提取,形成YOLO-Densebackbone卷积神经网络,改进的算法检测准确率相对于原算法提高了2.44%。文献[44]使用Kalman滤波和Hungarian匹配算法跟踪人员轨迹,配合YOLOv3实现安全帽检测,获得了18帧/s的检测速度和89%的准确率。文献[45]提出了一种基于YOLOv3模型的新型自动实时检测方法。实验结果表明,该方法能够实时检测未正确佩戴头盔行为,且漏检率低。
3.4 SSD
由于YOLO在定位精度上存在不足,提出SSD(Single Shot MultiBoxDetector)算法[46],采用VGG16作为基础模型,增加了卷积层来获取更多的特征图,在此基础上提出了特征金字塔结构,算法流程如图7所示,输入的图片经过CNN提取特征,抽取特征图后生成锚框(default box),将生成的所有锚框都集合起来,置入到极大值抑制中,最后输出结果。
图7 SSD流程图
在安全帽检测领域研究中,文献[47]采用谷歌发布的Inception模块来替代原SSD中额外的VGG16层,同时改进了SSD的输出层,提高了SSD对视频帧中小目标的识别性能。文献[48]分别训练了基于SSD的检测模型,首先通过人脸识别检测出现的人,再对行人区域进行安全帽检测。这种检测方法在检测准确率与速度上都有很好的效果,使系统更具可靠性和实时性。李小伟[49]将SSD算法和Mobilenet网络融合来获得更加高效的目标检测网络,取得了mAP为89.4%的成绩。文献[50]为了更好地检测小尺度的安全帽,将提出的逆向显著检测(RPA)集成到SSD框架中,将上下文信息有选择地传播回底层。实验结果表明,该模型在不同的输入条件下均能获得良好的性能。文献[51]提出了改进的Mobilenet-SSD模型作为目标检测模型,并对训练后的模型进行了评价,保证了模型的泛化。文献[52]提出了一种有效的安全帽佩戴检测系统。该系统基于SSD和一种新型的安全帽精密检测模块,并建立了一个适用于电站场景下的安全帽磨损检测的图像数据集。结果表明,该系统在检测安全帽方面明显优于原始的SSD检测器。并且检测速度能达到21帧/s。
3.5 RetinaNet
文献[53]深入研究了现有的基于RCNN的两阶段检测器与YOLO、SDD等单阶段检测器,发现类别不平衡是影响检测效果的深层原因。对于单阶段检测器,这会导致分类器容易把生成的所有bbox归类为背景,而原有的损失函数交叉熵损失(CE)容易导致分类器训练失败,检测准确率较差。而两阶段检测器检测效果更好则是因为RPN的锚点会进行二分类,相对提高了准确率,进而提高了检测精度。可以将原先训练回归任务惯用的交叉熵误差:
CE(pt)=-αtlog(pt)
(6)
改为FL(focal loss)来解决类别不平衡的问题。其中:
FL(pt)=-αt(1-pt)γlog(pt)
(7)
相比于原交叉熵误差增加了权重系数,使得类别少的检测部分权重大幅提升,进而提高了检测精度。
RetinaNet本质上是Resnet+FPN[54]+两个FCN[55]子网络。RetinaNet的流程图如图8所示。主干网络作者使用ResNet-50与ResNet-101。同时使用FPN来强化ResNet中的多尺度特征,获得具有较强尺度和信息的特征图。最后在特征图集合上,分别使用了两个FCN子网络来完成目标框类别分类与位置回归任务。
图8 Retinanet流程图
在安全帽检测领域研究中,文献[56]使用RetinaNet作为检测算法,对快速移动物体的安全帽佩戴情况进行检测,在测试集上实现了72.3%的mAP,处理速度为14帧/s。
4 思考和展望
随着近年来随着深度学习的发展,目标检测算法逐渐应用到实际工程,安全帽识别的准确率与检测速度也有一定提升。所介绍的各检测模型在VOC2007及COCO数据集上的检测性能如表1所示。总体来看,在现有的应用于安全帽检测的模型中,Retinanet的mAP最高,Tiny YOLO的检测速度最快,而YOLOv3兼顾了检测准确率与速度,综合性能较高。本节总结了一些亟待解决的问题并讨论了未来安全帽检测算法可能的研究方向。
表1 各目标检测算法的检测性能
4.1 当前存在的问题
(1) 当前检测算法多数基于有监督学习,大量使用手动标记的特征,耗时耗力。且过于依赖训练数据,使用现场安全帽佩戴检测训练集训练出来的算法只针对单一场景,泛化能力较弱。
(2) 准确率与检测速度不能同时满足使用条件,检测精度高的模型检测速度慢,如Retinanet,而检测速度快的模型检测精度低,如Tiny YOLO,无法既快又准地满足工程需求。
(3) 由于安全帽佩戴检测需要对光线、阴天等不同环境适应性强,且不受人员遮挡及姿态影响,但当前的检测模型对小目标、有重叠干扰等复杂场景的识别准确率不够,这导致在实际工程应用上,安全帽佩戴检测效果并不尽如人意。
(4) 深度学习凭借其深层网络结构能够学习到复杂的特征,但如何准确定位目标位置仍是难点,目前普遍采用的矩形框表示方法会包含一定量的背景区域,对施工现场等复杂场景并不完全适用。
4.2 对未来的展望
(1) 无监督学习和半监督学习。手动绘制大量的边界框非常耗时,为了减轻这一负担,可以集成无监督对象发现[57]、多实例学习[58]和深度神经网络预测[59],充分利用图像级监督,将对象类别标签分配到相应的对象区域,细化对象边界。此外,弱注释[60]也有助于通过适当的注释努力实现高质量的检测器。
(2) 深度学习和在线学习的融合。安全帽检测由于数据集不断增长,其实质上是一个在线学习问题。训练时如何避免陷入局部极小值、梯度消失等问题仍值得研究。
(3) 3D对象检测。随着三维传感器(激光雷达)的应用,可以利用额外的深度信息更好地理解二维图像,并将图像级知识扩展到现实世界。多视图表示[61]和三维候选网络[62]能获得更好的边界结果。文献[63]构建了一种新的3D目标检测算法(DSGN),检测精度要高于其他模型10%以上。
(4) 记忆时间信息。跨帧的时间信息对于分析不同对象的行为起着重要的作用,使模型不仅包含当前时间步长输入信息(帧),还包含以前时间步长(帧)的激活值。可以使用时空管[64]、光流法[65]和LSTM[66],从根本上对连续帧之间的对象关联进行建模。
5 结 语
本文对基于深度学习的目标检测算法在安全帽佩戴检测领域的研究情况进行了详细的综述,首先介绍了传统的基于传感器及基于图像处理的安全帽检测方法近年来发展情况,之后介绍了两阶段检测(R-CNN、faster R-CNN、R-FCN)以及单阶段检测(YOLO、YOLOv2、YOLOv3、SSD、Retinanet)的算法流程和研究发展情况,最后对现阶段检测算法亟待解决的问题加以总结,并提出了几个未来有希望发展的方向。这篇综述对深度学习在安全帽检测领域的应用和发展具有一定意义。