基于深度级联模型工业安全帽检测算法
2022-02-12朱强强彭小宝殷志坚温海桥黄春华
杨 贞,朱强强,彭小宝,殷志坚,温海桥,黄春华
(1.江西科技师范大学通信与电子学院,江西 南昌 330013; 2.防城港市气象局,广西 防城港 538001)
0 引 言
随着工业化进程的日益加剧,在日常生产中,如工厂车间、建筑工地等复杂环境,存在着威胁人身安全隐患因素,而安全帽作为一种重要防护工具,在施工场景中必须正确佩戴。统计表明,在作业现场发生的伤亡事故中(尤其是物体打击和高处坠落)正确佩戴安全帽,可以有效减轻事故造成的后果,因此,检测施工现场工人是否正确佩戴安全帽具有重大意义[1]。然而,由于施工现场场景复杂,工人姿态变化性大,安全检查人员难以观察且易疲惫等因素,无法实时监测施工人员是否正确佩戴安全帽。考虑如今工地现场大多已安装监控摄像头,因此,利用计算机视觉方法,尤其是目标检测技术,实时分析施工场景视频,可以有效发现未戴安全帽工人。
目标检测技术是计算机视觉和机器学习重要研究方向,广泛应用于智能化交通系统[2]、智能视频监控[3]、工业检测[4]、航空航天[5]等诸多领域,能有效减少对人力资本的消耗,具有重要的现实意义。因此,目标检测成为了近年来计算机视觉理论和应用的研究热点,也是智能监控系统的核心技术。而安全帽检测又是目标检测技术应用的一个具体方向,因此,利用计算机视觉和机器学习方法检测工业场景施工人员是否佩戴安全帽具有重要应用价值。
当今安全帽检测技术划分为2类:1)基于传统图像特征的安全帽检测;2)基于深度特征的安全帽检测。在传统特征方法中,冯国臣等[6]首先采用混合高斯模型进行前景检测,其次利用像素联通区域属性检测出人体轮廓,最后对检测矩形框进行像素级的统计分析以实现安全帽的自动识别功能。但是上述方法容易受到光线变化和背景混杂等因素的干扰,基于此,刘晓慧等[7]采取肤色检测的方法定位人脸位置,再利用支持向量机(Support Vector Machines, SVM)模型实现安全帽的识别,此方法一定程度上提高了安全帽检测精度,然而仍没有解决光线变化对模型的影响。为此,周艳青等[8]利用局部二值模式(Local Binary Patterns, LBP)直方图统计的方法来提取图像的特征,然后使用反向传播(Back Propagation, BP)人工神经网络进行分类以判别是否佩戴安全帽。由于LBP是纹理特征,可以一定程度降低光线的干扰,但是该特征仅是获取了像素的邻域信息,无法有效描述安全帽的结构特征,因此,安全帽检测的准确率偏低。总之,通过传统特征提取方法很难获取安全帽目标的高层次特征,因此也很难高效地检测工业场景中施工人员是否佩戴安全帽。
在深度特征提取方法中,林俊等[9]通过修改深度网络结构进一步优化YOLO(You Only Look Once)模型[10]以实现安全帽检测,然而,此方法在场景复杂和目标密集的情况下准确率较低。基于此,施辉等[11]利用图像金字塔的多尺度特征和K-means聚类算法以改进YOLOv3网络[12]实现安全帽识别。然而,利用YOLOv3模型直接对安全帽目标进行划分会导致定位信息粗糙、模型难以训练和收敛、泛化能力差等问题。与YOLO模型系列算法不同,吴冬梅等[13]在Faster RCNN基础上,采取特征融合与多尺度检测策略,一定程度上可以取得较好的安全帽检测效果,但Faster RCNN计算量大,实时性不佳,且遮挡和光线变化会导致模型性能较差。
以上基于深度特征的方法虽然可以提取图像高层次特征,但是由于安全帽在大场景图片中所占比例较小,其漏检率和误检率依旧较高。因此,上述方法均无法有效应用于实际任务中。
依据工业现场调查研究表明[14],现如今工业现场的监控图像分辨率为1920×1080甚至更高。由于监控设备的位置和角度等因素,安全帽这一目标在视频中所占比例比较小。因此,对于小目标检测,传统特征和深度特征的提取方法都有较高的局限性。基于此,本文提出一种基于级联网络模型的安全帽检测方法以解决复杂工业场景安全帽精准检测识别的问题。在本文提出的方法中,首先采用YOLOv4[15]检测网络对疑似佩戴安全帽的工作人员进行检测;然后对上阶段检测网络的输出目标图像进一步通过显著性特征进行区分;最后利用分类器判断工作人员是否佩戴安全帽。实验结果表明,与基于深度特征的安全帽检测方法相比,本文提出的级联网络模型,进一步提高了安全帽的检测效果。
1 相关工作
目标检测核心任务是查找图像中是否包含需要检测的物体,并确定物体的位置和类别。但是,通过传统检测算法获取的目标特征对于目标形态变化、光照变化以及背景多样化等因素缺乏鲁棒性,易导致目标检测准确率低和模型泛化能力差,因而难以应用在真实的复杂工业场景中。
基于深度学习One-Stage的目标检测算法主要思想为直接计算物体的类别概率和位置坐标值,不需要获得目标候选框区域,通过网络端到端训练模型就可以得到最终的目标检测结果且速度更快。现如今,One-Stage典型的算法有SSD(Single Shot MultiBox Detector)[16]、YOLO系列和Retina-Net[17]系列等;SSD在特征图上采用卷积核来预测一系列目标框的类型和坐标信息,并使用多尺度特征进行回归以提高目标检测准确率。YOLO系列目标检测算法是基于卷积神经网络的回归方法,目前公认有4个版本:YOLO、YOLOv2[18]、YOLOv3和YOLOv4。
对比了YOLO系列的网络模型,其中YOLOv1检测网络模型包含24个卷积层(用来提取特征)和2个全连接层(用来预测图像位置和类别置信度);同时将输入图像分成网格,每个网格块输出不同的bounding box(包含物体的矩形区域)、每个box的置信度以及物体属于某个类别的概率信息。YOLOv1网络模型有着以下缺陷:1)YOLOv1采用多个下采样层结构,网络模型学习到的目标特征不精细,因此导致目标检测准确率低;2)YOLOv1网络模型训练依赖物体标注数据,因此,对于非常规的物体和比例,YOLOv1检测效果并不理想;3)当物体所占画面比例较小,每个网格将包含多个物体的bounding box输出,而YOLOv1只选择IoU(Intersection over Union)[19]分数最高的bounding box作为物体检测输出,因此YOLOv1很难检测出图像中的小目标。为了解决此问题,YOLOv2检测网络模型使用了批处理、变化图像分辨率和简化网络结构策略解决YOLOv1网络的局限性:1)通过在卷积层后添加batch normalization,以提高网络模型收敛性,同时消除对正则化的依赖;2)改变特征网络的输入分辨率,使得网络适应高分辨率的输入,来缓解YOLOv1特征提取网络的局限性;3)通过卷积层降采样、删除最后池化层以简化网络结构,并在卷积特征图上进行滑窗操作,使得每一个中心可以预测9种不同大小的建议框,以此弥补YOLOv1丢失较多的空间信息。尽管YOLOv2改进了很多YOLOv1结构,使得目标检测速度和准确率也得到了提高,但是其对于部分遮挡的目标依旧存在很高的漏检率。为了解决上述问题,YOLOv3使用逻辑回归(Logistic Regression)的方法给每个bounding box预测一个类别得分,并使用独立的Logistics分类器与二值交叉熵损失函数进行计算,同时YOLOv3还运用多尺度策略将深层特征上采样后与浅层特征融合,得到多个尺度的目标特征。每个尺度对应3种不同大小的anchor,负责预测不同大小的目标:1)尺度1在基础特征网络结构中添加多个卷积层,输出box信息以预测较大目标;2)尺度2在尺度1网络基础上与特征图相加,并通过几层卷积层后输出box信息,负责预测中等大小的目标;3)尺度3与尺度2类似,使用32×32大小的feature map作为输出,负责预测较小目标。总之,YOLOv3在很多检测场景上比YOLOv1和YOLOv2具有优越性,但在施工人员密集场景中,准确检测安全帽还有很大的局限性。总之,基于One-Stage的目标检测算法相比于传统特征能取得更好的目标检测效果,但是对于大场景视频图像中占幅比较低的小目标(如安全帽)检测依旧存在局限性。
大场景视频监控由于场景复杂、图像分辨率高和安全帽目标较小等特点,仅仅将YOLO或RCNN系列网络模型直接训练安全帽目标检测模型,很难获得理想的效果。因此,为了解决上述问题,本文考虑工业场景的复杂性,提出一种深度级联安全帽检测识别网络模型,主要是将目标检测模块和分类模块相结合,以期获得更好的安全帽目标定位效果。
2 级联网络
安全帽检测的主要任务是确定图像中是否有安全帽并定位其位置。目前,由于施工场景复杂、视频图像分辨率较高、安全帽目标尺寸较小等特点,基于深度特征的安全帽检测算法也易导致较高的误检率和漏检率。针对上述问题,本文提出基于深度级联网络模型的安全帽检测算法,此网络模型由2个模块组成:检测网络模块和分类网络模块,在检测网络模块阶段主要实现施工人员的精确定位,有助于下一步安全帽的识别;在分类网络模块阶段主要进行安全帽目标的精细定位,并进一步提取图像中的安全帽轮廓信息,最终判断施工人员是否佩戴安全帽。
2.1 检测网络
工业场景中安全帽检测技术主要预测施工人员是否正确佩戴安全帽,从而进行预警和提醒。施工人员相比于安全帽的图像占比较大,因此更容易提取整幅图像的行人信息特征。依据上下文信息,本文把安全帽检测问题转换为施工人员检测问题。
在进行疑似佩戴安全帽人员的检测中,本方法对比了YOLO系列的网络模型,其中YOLOv4在YOLOv3目标检测网络框架基础上,采用了不同的优化策略,如:主干网络、数据处理、网络训练策略、损失函数等方面,使其更具有较快的检测精度。与YOLOv3网络结构相比,YOLOv4具有以下特点:1)YOLOv4网络结构使用CSPDarknet53[20]作为主干网络,保留了YOLOv3的前端网络部分,同时利用空间金字塔池化(Spatial Pyramid Pooling, SPP)作为Neck的附加模块来扩大网络感受野,因此,能有效分离出重要的目标上下文特征;同时YOLOv4还借鉴了PANet(Path Aggregation Network)[21]中的路径聚合模块,将其由加法改为乘法作为特征提取模块的计算策略,从而提高了模型目标检测准确性;其中YOLOv4主干网络在每一个大残差块上均添加了CSP模块(Cross Stage Partial),从而将底层的特征映射成2个部分:一部分经过密集块和过渡层,另一部分与传统特征映射结合到下一个阶段;除此之外,CSP能够在减少计算量的同时增强网络模型的学习能力,尤其对于小目标物体,YOLOv4网络使用PANet代替FPN(Feature Pyramid Networks)进行参数聚合可以更好地从图像中检测出目标:2)YOLOv4通过引入Mosaic数据增强算法将读取的4张图片随机翻转、缩放和排布等操作拼接成一幅图片,从而可以丰富图像的上下文信息,增强模型的鲁棒性;3)YOLOv4使用Adversarial Training自对抗训练方法,对输入图像进行操作以扩充训练数据集;4)YOLOv4使用Mish函数作为模型的激活函数,并采用DropBlock[22]抑制网络过拟合。
2.2 级联网络SE-ResNet分类网络
级联网络中检测网络模块的输出是施工人员的ROI(Region of Interest)区域,经过尺度变换操作后,将此区域送入分类网络判断工人是否佩戴安全帽。
第二阶段的分类网络模块采用基于SE-ResNet的主干架构以解决深度网络会出现梯度消失和梯度爆炸等问题。本文的残差学习单元示意图如图1所示:ResNet通过恒等连接和残差连接将上下2层连接以加深浅层网络,同时采用跳跃结构以增强浅层网络的影响力从而避免精度衰减。
图1 残差学习单元
此外,为了快速准确地判断识别安全帽,本文在深度残差网络中添加了SE(Squeeze-and-Excitation)[23]注意力机制模块。SE模块包括压缩(Squeeze)和激发(Excitation)2个步骤:1)压缩步骤通过在Feature Map层上执行全局平均池化(Global Average Pooling)得到当前全局压缩特征向量;2)激发步骤通过2层全连接的bottleneck结构得到Feature Map中每个通道的权值,并将加权后的Feature Map作为下一层网络的输入。安全帽识别模型中SE注意力机制模块主要学习通道之间的相关性,自动学习不同通道特征的重要程度,并筛选出针对目标通道的注意力特征以提高安全帽分类的准确率。本文分类网络模型如图2所示。
图2 SE-ResNet分类网络
2.3 深度级联网络安全帽检测算法
本文提出的级联网络模型由2部分组成:YOLOv4检测网络模块和SE-ResNet分类网络模块,检测网络模型的输出作为分类网络模型的输入。1)检测网络和分类网络模块分别实现施工人员检测和安全帽目标识别,安全帽检测网络对输入图像进行特征提取以剔除大量背景信息,对提取到的施工人员特征进行降维,输出施工人员ROI区域;2)将施工人员ROI区域作为SE-ResNet分类网络模型的输入提取安全帽特征,判断其是否佩戴安全帽;3)进一步使用迭代训练策略以优化深度级联网络模型,通过分类网络输出安全帽类别和坐标信息以得到原始图像安全帽的精确信息。
本文提出的安全帽深度级联网络结构如图3所示。检测网络模块:1)使用分层结构,使检测模型可探测不同通道分辨率的特征向量;2)采用SPP模块,能够增加感受野,获取显著的上下文信息;3)挑选不同层的PANet做参数聚合以保证检测模型准确率。分类网络模块采用残差注意力网络:1)使用跳跃式连接传递以保证上下文信息的完整性并简化模型参数;2)添加SE注意力模块以关注图像中头部轮廓信息,通过提取头部信息的特征来优化安全帽分类的精度。通过实验对比,基于深度级联网络模型的安全帽检测方法能够在人员密集和光线阴暗等复杂环境下有着较高的检测率,同时具有较好的鲁棒性和泛化能力。
图3 基于安全帽深度级联网络结构图
2.4 深度级联网络损失函数
本文提出的级联网络模型的损失函数由检测损失函数和分类损失函数2部分组成。由于CIoU在IoU的基础上解决边界框不重合时的问题,同时添加了边界框中心点距离和宽高比的尺度信息,因此,在构造检测网络模型时选取CIoU_Loss[24]作为检测损失函数,其公式如下:
(1)
(2)
(3)
公式(1)中,A和B分别代表预测框和真实框,Actr和Bctr则分别表示预测框和真实框的中心点坐标,p(·)是计算欧氏距离,c为A、B最小包围框的对角线长度,a·v表示长度比的惩罚项,a为一个正数,v则是用来测量长宽比的一致性的参数;公式(2)中,wgt和hgt分别表示真实框的宽和高,w和h则分别代表预测框的宽和高。若真实框和预测框的宽高相似,那么惩罚项v为0,由此可见,惩罚项的目的就是控制预测框的宽高尽可能地与真实框接近。
分类损失函数采取中心损失函数Center-Loss与交叉熵损失函数相结合的方法。中心损失函数可以解决类内间距问题,其公式定义如下:
(4)
公式(4)中:cyi表示第yi个类别的特征中心,xi表示输入全连接层的特征,m表示最小批量的大小。交叉熵损失函数可以表示实际输出与期望输出概率的相近程度,交叉熵损失函数表达式为:
(5)
Lf=Lj+λLc
(6)
L=LCIoU+Lf+φ
(7)
3 实验分析
实验采用Pytorch深度学习框架,在Ubuntu18.04操作系统,CUDA Tookit10.1版本,32 GB内存、显卡为1080Ti、NVIDIA GeForce驱动程序440.100版本的设备环境下训练安全帽级联网络模型。
3.1 数据集
3.1.1 施工人员数据集制作
实验数据集是来自工厂不同位置4个视频监控摄像头拍摄的视频数据。通过采集不同方位、不同角度现场施工人员的图像以丰富数据的多样性,提高模型的泛化能力,从而更好地检测复杂施工现场施工人员目标。制作施工人员数据集由以下3个步骤组成:1)采取每秒一帧的思路对视频数据进行截图保存;2)人工筛选过滤一些没有目标的图片,共收集8400张图片;3)依据Pascal VOC数据集的图像标注标准,将8400张图片使用LabelImg工具进行标注,产生训练所需的xml文件,其中80%为训练集,20%作为测试集。
3.1.2 安全帽数据集制作
安全帽检测数据集通过网络爬虫技术爬取满足工业现场的安全帽图片。为了更好地精准识别安全帽目标,本文通过以下操作制作安全帽数据集:1)人工过滤筛选出不符合分类要求的图片,共收集4000张图像;2)依据Kaggle cat_dog分类数据集格式,将4000张图像进一步细分为yes和no;3)按照8∶2的比例将图片划分为训练和测试数据集;4)通过旋转训练数据集的方法以增强数据,从而更好地识别安全帽目标,提高模型的泛化能力。
3.2 实验结果与分析
为了对比本文提出的深度级联网络方法,本实验分别利用YOLOv3、YOLOv4、SSD检测网络架构实现了安全帽目标检测功能,实验结果表明,本文提出的深度级联网络模型能取得较高的安全帽检测准确度。
3.2.1 安全帽级联网络模型训练策略
训练本文提出的级联网络模型需要2个阶段:1)检测施工人员网络模型;2)安全帽分类模型。在训练施工人员检测网络模型时,动量(momentum)设置为0.9,batch_size为32,初始学习率设置为0.001,而经过10000次迭代后将学习率设置为0.0001,最大迭代次数为15000;除此之外,训练过程中不断对图像进行随机旋转、翻转和尺度变换以扩充数据集。在训练安全帽目标分类网络模型时,batch_size为8,学习率初始化为0.001,本文采取指数衰减的方式对学习率进行迭代递减,衰减系数(decay)设置为0.95,经过500个epoch,训练次数为30000次,最终训练得到安全帽分类网络模型。
为了更公平地对比实验结果,在同样的实验环境配置下,本文通过YOLOv3、YOLOv4、SSD检测网络架构实现了安全帽检测任务,从而定性与定量地与本文提出的级联网络模型进行对比。
3.2.2 实验结果定性和定量分析
实验选取不同场景如:正常、背光、远景和人员密集,分别使用SSD、YOLOv3、YOLOv4网络架构和本文提出的级联网络模型进行安全帽检测实验,实验结果如图4所示。
如图4所示,SSD在正常场景中可以检测到安全帽,但在背光、远景和人员密集条件下误检率极高。而YOLOv3在正常和背光场景中可以正确检测安全帽目标,但是远景和人员密集条件下漏检率依旧很高。相比于YOLOv3,YOLOv4准确率稍高些,但在图4的第一幅图片中,将旁边的工业零件误检为安全帽。与上述安全帽检测网络架构相比,本文提出的安全帽深度级联网络模型有着较高的准确率,尤其在人员密集复杂场景中。因此,深度级联网络模型具备较好的鲁棒性,并能实现在工业复杂场景下安全帽佩戴实时检测。
图4 不同模型在不同环境下的测试结果
本文通过计算安全帽检测识别的准确率来评价不同网络模型的效果,在安全帽数据集分别进行实验评价,定量分析结果如表1所示。其中,级联网络的准确率为86.9%,比YOLOv4提高了2个百分点。
表1 安全帽检测结果
3.2.3 检测网络模块选择实验
本文还进行了另一组对比实验:深度级联网络模型中不同检测模块对安全帽检测效果的影响。其中,实验通过定性分析YOLOv3与YOLOv4检测模块以选取合适的检测网络模块,实验结果如图5所示。
如图5所示,在正常、远景和背光场景下,深度级联网络采用YOLOv3和YOLOv4检测模块都能准确检测到安全帽目标,但是在人员密集复杂场景下,使用YOLOv3检测模块比YOLOv4检测模块的漏检率高。因此,本文提出的安全帽深度级联网络模型采用YOLOv4主干模型作为检测网络模块。
图5 深度级联网络模型中不同检测模块的实验结果
4 结束语
本文针对工业场景下的安全帽难以检测的问题,提出了基于深度级联网络模型的安全帽检测识别方法,克服了单一网络模型在高分辨率监控图像的局限性。具体来说,本文首先采用检测网络模块对施工人员ROI区域进行提取,进一步将上一模块的输出ROI区域经尺度变换后输入分类网络进行判断以识别其是否佩戴安全帽,最后映射原始图像。实验结果表明,基于深度级联网络安全帽检测模型准确率比YOLOv4网络模型提高了2个百分点,同时也能够解决工业复杂场景下安全帽实时检测的问题,但在人员密集情况下也会出现漏检的情况,如何更加有效解决这一问题,也是本文下一步研究的重点。