基于改进EfficientDet算法的安全帽佩戴检测

2023-02-17 02:00李政谦潘岚川李志强
计算机应用与软件 2023年1期
关键词:安全帽置信度网络结构

李政谦 潘 健,2 潘岚川,2 李志强

1(北京华电天仁电力控制技术有限公司 北京 100039) 2(华北电力大学控制与计算机工程学院 北京 102206)

0 引 言

研究表明,在建筑工地及巡检现场中,有接近90%的脑损伤是因为没有正确地佩戴安全帽引起[1],有必要对相关人员的安全帽佩戴进行检测,降低相关事故发生率。

目标检测需要对图片上判断是否存在检测目标,并获得目标数量,标记目标位置。对于安全帽佩戴检测算法,还要求实时识别动态视频并进行跟踪;对不同环境适应性强,且不受人员遮挡及姿态影响。

近年来,研究人员对安全帽佩戴检测做了很多具有创新性的研究工作。基于传感器的检测原理主要通过定位技术来获得目标位置,提供给系统进行评价[2-5]。由于定位精度和健康隐患问题,传感器识别技术很难在现场落地。对于通过图形处理进行安全帽检测,主要分为对安全帽的形状特征[6]、颜色特征[7-9]、边缘特征[10]、特征表示和分类器相结合[11]等四类。但手动构建大量的特征,检测速度慢、准确率低等问题使得其不适用于复杂性较高的施工及巡检现场。

由于传统目标检测算法存在以上缺点,无法达到安全帽佩戴检测实际需求,基于深度学习的检测算法依靠其网络简单、检测速度快准确性高等特点超过传统检测算法,成为当前安全帽佩戴检测方面的主流算法。其可分为基于分类的目标检测算法和基于回归的目标检测算法。基于分类的目标检测算法也称为两阶段目标检测(two-stage),首先针对图像中目标物体位置,预先提出候选区域,然后微调候选区并输出检测结果。2014年Girshick等[12]提出的R-CNN(Regions with CNN features)是将卷积神经网络(CNN)用于目标检测的开端,之后研究人员在此基础上研究出了Fast R-CNN[13]、Faster R-CNN[14]、FPN[15]、R-FCN[16]、MASK R-CNN[17]等检测算法,大幅提高了检测精度及检测速度。由于两阶段检测存在提取候选区域的过程,检测速度难以满足部分现场需求,因此研究人员开发出单阶段(one-stage)算法,将整个检测过程简化为一次端对端的检测。Redmon等[18]提出Yolo(You Only Look Once)算法无疑是此中佼佼者,之后其又将此升级为Yolo9000(Yolov2)[19]、Yolov3[20]等版本,进一步在保证实时性的同时提高检测精度。研究人员也通过修改网络结构、损失函数、特征提取等方式研究出了RetinaNet[21]、M2Det[22]、ATSS[23]、EfficientDet[24]等等。

在实际工程中,2018年,Fu等[25]使用Faster R-CNN+ZFNet的组合搭建了安全帽检测系统,该系统能够实时识别监控视频中的人员和安全帽,较原方法提升了检测精度。方明等[26]通过在以YOLOv2为基础的模型中加入密集块,使模型的大小缩减为原来的十分之一,增加了模型的可用性。2019年,Oviedo等[27]使用了EspiNet V2模型,改进了Faster R-CNN的CNN部分,获得了一个6层(4卷积)的简单CNN网络,减少了一定的参数量。该模型能够从低角度和移动摄像机拍摄且存在一定遮挡的情况下获得较高的mAP。刘君等[28]设计了一种改进的YOLO网络结构,将RPN检测算法融入到YOLO算法中,并借鉴R-FCN算法,去掉一个全连接层,在卷积层上进行滑动窗口操作,采用先池化再卷积的方法,以减少图片特征丢失。该模型在准确率与检测速度上都取得满意的结果。Fu等[29]将深度残差网络技术与基于YOLOv3检测算法的多尺度卷积特征相结合,结合多尺度检测训练,调整训练过程中的损失函数。该改进提高了安全帽佩戴检测精度。

虽然研究人员做了很多安全帽检测相关工作,但使用的都是早期检测算法,检测性能与检测效率的综合性能相对较差,不能满足现场与日俱增的使用需求。随着各类新的目标检测算法的推出,我们致力于寻找一个能够在满足现场检测实时性和“应检尽检”即在降低置信度并提高NMS的前提下,进一步提升mAP。

本文所做贡献:1) 通过采集11 823幅网络上的安全帽佩戴图片、86 429幅来自于12个电厂113个监控摄像头的视频获取到的图片建立了安全帽检测数据集,能够充分反映现场实际场景。2) 改进了MBConv卷积块,通过改进卷积块结构,改变激活函数和BN层增大了特征图感受野,提高了信息传输量并避免了小批量样本对训练的影响。3) 改进BIFPN结构,通过改变结构内连线方式提高了信息传输量。4) 损失函数使用GHM-C[30],在抑制负样本的同时增强了训练的稳定性。5) 通过多次实验获得适合本数据集的交并比及置信度阈值。6) 与原模型及其他检测方法进行比较,在能够实现检测实时展示的同时获得较好的检测结果。

1 EfficientDet算法

1.1 EfficientNet整体结构

EfficientDet算法使用改进后的EfficientNet[32]作为主干网络,使用BiFPN作为特征网络,并使用共享的边界框和类别预测网络。

EfficientNet结构主要借鉴了MnasNet[33],采取了同时优化精度以及计算量的方法,由此产生了初代EfficientNet-B0,其结构如表1所示。

表1 EfficientNet-B0网络结构

EfficientNet作者通过对比得出结论:增大网络宽度、深度或分辨率的任何维度都会提高精度,但对于较大的模型,精度增益会减小。因此作者在EfficientNet-B0网络结构的基础上进行深度、宽度和分辨率的增强来获得检测性能更强的模型,但同时为了更高的准确率和效率,很有必要去平衡提升网络中深度、宽度和分辨率的所有维度。由此其提出了一个新的复合缩放方法:使用一个复合系数φ来统一缩放网络宽度、深度和分辨率,算法见式(1)。

(1)

式中:d代表模型深度;w代表模型宽度;r代表输入图片分辨率。

在获得初始的网络结构后及计算公式后,缩放卷积网络将会使得整体计算量近似增加(α·β2·γ2)φ倍,固定φ为1,则计算量为原来的2倍,为了大幅降低计算量,此网络选择先在这样一个小模型上做网格搜索,得到了最佳系数为α=1.2,β=1.1,γ=1.15。之后使用不同的混合系数来放大初代网络分别得到EfficientNet-B1到EfficientNet-B7,各模型的基础模型与B0相同,具体参数如表2所示。

表2 EfficientNet各模型结构

1.2 EfficientDet整体结构

在EfficienDet-D0中增大了B0主干网络的分辨率与通道数,并对各层的输出进行了改进,以使其更适合进行目标检测,改进后的模型结构如表3所示。

表3 EfficienDet-D0网络结构

续表3

之后从修改后的EfficientNet中取了P3-P7的5个比例的特征图作为多尺度特征金字塔BiFPN的输入,其中的BIFPN是借鉴于FPN思想的特征金字塔网络,网络结构如图1所示。

图1 BIFPN网络结构

目标检测的难点在于有效地表示和处理多尺度特征。如图2(a)所示,FPN融合多尺度特征采用自顶向下的方式,但它受到单向的信息流的限制,信息流只能自上而下,一定程度上限制了特征的融合。为了解决此问题,如图2(b)所示,PANet[34]将一些信息流改为自底向上,双向的连接有助于特征融合。BIFPN在PANet基础上首先去掉没有进行融合的只有单一输入的节点,之后同一层中增加从原始节点到输出节点的连接来增加信息的传递量。在各EfficienDet模型中通过重复堆叠BIFPN来获得更高级的特征融合方式。

(a) FPN结构示意图 (b) PANet结构示意图图2 FPN与PANet结构示意图

BiFPN对于不同尺度特征融合采用的是加权和,而不是直接相加加权的策略来为不同的特征图分配不同的权重,BIFPN选择了快速正则化融合作为加权策略,这种方法简单地将值进行归一化,使得上限为1,合理地控制了参数的上限,与基于softmax的方法相比,大幅降低了计算复杂度。

以EfficientNet中的复合尺度缩放方法为基础,对检测网络中的各个部分进行复合尺度缩放。其中BIFPN宽度与深度计算公式为:

Wbifpn=64·(1.35φ),Dbifpn=2+φ

(2)

预测网络深度计算公式为:

Dbox=Dclass=3+φ/3>

(3)

输入分辨率为:

Rinput=512+φ·128

(4)

式中:φ与EfficientNet处相同。

在EfficientDet各模型中使用了对应的改进后的EfficientNet模型作为主干网络,其特征融合层BIFPN的输入为EfficientNetP3-P7层的输出,整体结构如表4所示。

表4 EfficientDet各模型结构

其中D7只增加了图片输入尺寸,未改变其他参数。整体网络结构图如图3所示。

图3 EfficientDet-D1结构图

图3中包含3层BIFPN结构,即为EfficientDet-D1网络结构,当模型改变时,对应表4增减相应的BIFPN模型堆叠即可获得对应模型。

1.3 基础模型选择

网络有8个系数即存在D0-D7等8个由浅入深的模型,其在自有安全帽数据集上的表现如表5所示。

表5 EfficientDet各模型在自有数据集检测结果

由表5可以看出,模型系数由小到大其mAP不断提升,但帧速率不断下降,为满足现场应用实时性的需求,我们需要选择帧速率大于24帧每秒的模型,因此只能在D0与D1模型中选择,因此我们选择了mAP更高的D1模型。

2 改进EfficientDet-D1算法

2.1 改进MBConv卷积块

EfficientNet模型的内部是通过多个MBConv卷积块实现的,我们对MBConv卷积块做了以下改进:

首先我们在卷积块内增加了3×3的卷积核,同时对步长为2的depthwise_conv2d改步长为1,并在其后增加了一层空洞卷积,能够扩大模型的感受野,更有利于小目标的检测。

之后我们选择Mish激活函数替代网络中的Swish激活函数,Mish激活函数计算公式为:

f(x)=x·tanh(softplus(x))=x·tanh(ln(1+ex))

(5)

Mish激活函数有一定的负值会获得更好的梯度流,而没有最大值的限制避免了数值封顶而导致的饱和,同时平滑的激活函数允许更多信息深入神经网络,从而得到更优的准确性和泛化,因此我们选择其来代替模型中的Swish激活函数。

最后我们采用CBN(Cross-Iteration Batch Normalization)代替BN层,这样能够在较低GPU的情况下仍取得很高的检测成绩,避免batch_size过小而影响模型训练效果。

改进后的MBConv结构如图4所示。

图4 改进MBConv卷积块

2.2 Cross-BIFPN网络结构

由BIFPN在PANet基础上首先去掉没有进行融合的只有单一输入的节点,之后同一层中增加从原始节点到输出节点的短接并堆叠FPN结构。我们认为输入越多的节点所拥有的信息量越多,由表4可知在D1模型下拥有3层BIFPN,我们在增加中间三层节点跨接线并去掉堆叠的第二层BIFPN连线,以保证更多的有效信息得到传输的同时尽量减少所需计算量,我们称之为Cross-BIFPN网络。效果图如图5所示。

图5 使用Cross-BIFPN后的网络结构图

2.3 损失函数

我们选择GHM-C(Gradient Harmonizing mechanism)损失函数来替换EfficientDet算法中使用了Focal loss损失函数,公式如下:

FL(p)=-α(1-p)γlnp

(6)

该损失函数在原有的基础上加了α,降低了大量简单负样本在训练中所占的权重,其中γ>0使得减少易分类样本的损失,使得更关注于困难的、错分的样本。

我们选择的GHM-C损失函数同样是解决梯度分布上样本数量和难易不均衡的问题,将交叉熵损失函数产生的梯度分布标准化为梯度模长。在二分类交叉熵损失函数:

(7)

(8)

定义梯度模:

(9)

根据样本梯度模长分布的比例,进行相应的正则化,使得各种类型的样本对模型参数更新有更均衡的贡献,进而让模型训练更加高效可靠。

(10)

由此得出分类的损失函数GHM-C的计算公式:

(11)

GHM-C不仅能抑制简单样本,还能抑制一些离群样本,这可以使得模型训练更具稳定性。因此我们选用GHM-C替代Focal Loss以获得更稳定的训练结果。

2.4 置信度与交并比

由于现场重视安全生产,对未正确佩戴安全帽容忍度低,因此检测模型需要尽可能地检测出违规样本,我们从置信度与交并比两方面入手。

置信度是模型检验目标是哪一类物体概率,而置信度阈值是检测结果能否正常显示的值,高于该阈值则在图像中显示,这个阈值通常设置为0.5,因为我们需要得到更多的检测结果,因此需要在一定范围内调低置信度阈值来达到目标。

获得当前检测框与已采纳的检测框的重叠度交并比(IOU)阈值[35-37],如果大于这个阈值说明检测的是同一个物体,则不予采纳,低于这个阈值就会采纳置信度最高的那个。因此我们需要在一定范围内调高交并比阈值以提高目标重叠度较高时的检测效果。

我们选择置信度[0.3,0.5],交并比[0.3,0.7],以在安全帽数据集上训练完成的EfficientDet-D1模型作为检测模型,经过实验得知,在本数据集中,使用EfficientDet-D1模型在置信度低于0.42,交并比高于0.59后mAP会快速降低,我们认为是置信度的降低和交并比的提高会导致很多重复目标的检测框出现,进而降低了mAP。另外在置信度阈值分别等于0.48、0.47、0.46,交并比等于0.53、0.52、0.53等三种情况时mAP达到最高85.8。为了达到应检尽检的目标,我们选择置信度阈值等于0.46,交并比等于0.53。

3 实验结果分析

3.1 数据集

本实验数据集选用自有的安全帽佩戴检测数据集,此数据集包括11 823幅网络上的安全帽佩戴图片,86 429幅来自于12个电厂113个监控摄像头的视频获取到的图片。所有图片包括早晨、中午、傍晚、夜晚全时间段,晴天、阴天、雨天、雪天等多天气条件,巡检及施工现场、门禁进出等多场景,在安全帽佩戴检测方面有足够的代表性。

3.2 评价指标

(1) 检测速度:每秒能够检测的图片数量。

(2) 平均准确率均值:mAP。

(12)

式中:TP是预测正确的正样本的数量;FP是将负样本预测成正样本的数量;P是检测准确率;AP是平均准确率

3.3 模型训练

本文实验仿真在PyTorch框架下进行,训练及测试的计算机硬件配置CPU为i9- 9900X处理器,32 GB内存,GPU为Nvidia GeForce GTX 1080Ti,CUDA版本号为10.2.120,操作系统为Ubuntu 19.04。

从数据集中随机选取78 427幅图片作为训练集,9 825幅图片作为测试集,最后10 000幅作为验证集。我们采用Mosaic方式进行图像增广。

为了验证每一项改进的效果,我们将原EfficientDet-D1模型(表中简称D1)搭配单个改进进行训练,训练中每一批次包含32幅图片,优化器选择adamW[38],初始学习率为0.1,在完成3代训练后调整学习率至0.000 1,连续50代未获得更优模型则在当前学习率乘以系数0.3得到新的学习率,训练共迭代1 000代。

如图6所示,损失函数前期下降较快,迭代到160次时逐渐稳定但时有波动,迭代到300次后基本平稳在0.13附近。

图6 损失函数曲线图

3.4 性能对比

我们选择了以下主流的和最新的方法与我们的改进方法进行对比:

YOLOV3:Redmon等[20]在2018年提出的,目前工业上部署最广泛的目标检测算法。

Faster-RCNN:Ren等[14]在2015年提出的两阶段检测器,主流的目标检测算法。

MASK RCNN:He等[17]2017年提出的Faster-RCNN的改进版本,精度高但速度相对较慢。

M2Det:Zhao等[22]2019年提出的单阶段检测器,其多尺度版本在COCO数据集中表现为同类型检测器最好,达到44.2%的mAP。

Cascade-RetinaNet:Zhang等[39]2019年提出的多阶段目标检测器,通过维持不同阶段中特征的一致性,提高了Retinanet[21]在COCO数据集上的性能。

CornerNet:Law等[40]在2018年提出的一种单阶段、无锚框,通过两组heat maps进行预测的检测器,得到了很好的检测效果。

NAS-FCOS:Wang等[41]根据谷歌提出的NAS-FPN自动搜索网络进行了优化,在获得最优结构的同时,大幅降低了最优架构的搜索时间。

经过训练后使用10 000幅图片的验证集进行验证,得到的结果如表6所示。

表6 改进算法在安全帽检测训练集上的训练结果

通过实验结果可以看出,实验的模型中表现最好的是NAS-FCOS,但该模型速度缓慢,无法保证现场监控的实时性,用户体验较差;次优的结果是我们的改进模型,该改进模型既能提高检测性能,又能在检测速度上保证现场需求。

具体检测结果我们对比了工业上最广泛部署的YOLOv3、efficientdet-D1原模型与我们的改进模型,如图7所示,在同一幅图片的检测结果发现,图7(a)中由于有光线问题,人员①在YOLOV3中无法被正确识别,误判断为未佩戴安全帽,同时YOLOV3对左侧有一定遮挡的未佩戴安全帽人员②和右侧半入镜的佩戴安全帽人员③未能进行有效识别。在(b)中使用EfficientDet-D1原模型检测,已经能够正确识别人员①与人员②的安全帽佩戴情况,但仍然无法识别半入镜人员③,而图7(c)中对这些目标都可以有效识别。

(a) Yolov3检测结果

(b) EfficientDet-D1检测结果

(c) 改进模型检测结果图7 各模型在验证集上的检测结果

在实际视频检测中,由于我们的模型有较高的mAP,且修改了置信度阈值,能够更早地发现目标,其相较于原EfficientDet-D1模型提前了7帧,相较于Yolov3提前了23帧。图8与图9是本文改进模型与原模型视频截图对比,每两幅图像间隔3帧。

(a) 第一帧 (b) 第四帧

(c) 第七帧 (d) 第十帧图8 EfficientDet-D1检测结果

(a) 第一帧 (b) 第四帧

(c) 第七帧 (d) 第十帧图9 改进模型检测结果

由以上结果可见,我们的调整对于模型的mAP有了1.5百分点的提升,相对于主流算法YOLOV3有5.9百分点的提升,对遮挡、光线、入镜不全等问题有了很大改进。检测速度尽管略低于原模型与YOLOV3,但仍然符合实时性要求,且有一定余量,在实际检测中能够更早地发现异常目标,适合在现场落地实施。

4 结 语

本文在数据集建立、模型选择、超参数调整、沟通交流现场实际需求上做了大量工作,并在此基础上提出了改进的EfficientDet-D1算法。通过改进MBConv卷积块、堆叠特征网络BIFPN并修改其网络结构获得了能够传递更多有效信息的Cross-BIFPN网络,并使用改变激活函数、损失函数、调整置信度与交并比等方法提高改进算法的性能。经过自有安全帽佩戴检测数据集验证,本改进方法在保证检测实时性的同时,提高了mAP,并且能够满足现场对于未正确佩戴安全帽容忍程度低的需求,做到应检尽检,有助于目标检测系统在施工现场的大范围应用,对现场安全生产的有序开展、降低因未正确佩戴安全帽带来的安全风险有重要意义。

在后续的工作中,我们要将本算法在实际工程中落地,查看实际检测效果并优化模型参数、改进网络结构以获得更高的检测精度。精简本算法骨干网络EfficientNet的计算量以获得更高的帧速率也是主要的研究任务。

猜你喜欢
安全帽置信度网络结构
小小安全帽,生命保护伞
一种基于定位置信度预测的二阶段目标检测方法
硼铝复合材料硼含量置信度临界安全分析研究
爆笑四格
正负关联规则两级置信度阈值设置方法
危险
基于互信息的贝叶斯网络结构学习
知识网络结构维对于创新绩效的作用机制——远程创新搜寻的中介作用
沪港通下A+ H股票网络结构演化的实证分析
复杂网络结构比对算法研究进展