石家玮,杨莉琼,方艳红,杜义祥,李明骏
(1.西南科技大学 信息工程学院,四川 绵阳 621002;2.西南科技大学 土木工程与建筑学院,四川 绵阳 621002;3.四川振通检测股份有限公司 研发部,四川 绵阳 621002)
深度学习由卷积网络(CNN)计算特征,能够表达更高级别的语义特征,卷积网络中不同层具有不同的特征尺度,有助于从单一输入尺度上计算特征[1,2]。Girshick等提出基于候选区域(region proposal)的区域卷积神经网络算法R-CNN[3]、Fast R-CNN[4]和Faster R-CNN[5],检测精度和速度得到了很大提升;Redmon J等提出单阶段(one-stage)的YOLO系列算法网络[6-9],进一步优化了网络结构,使深度卷积网络在目标识别精度和速度上都有了较大提升。相关学者也将其运用到安全帽检测项目上[10-13],提高了安全帽检测的识别准确率和识别速度。
施工场地下的安全帽检测环境复杂,除了在施工场地入口处的安全帽佩戴检测,对施工人员的安全帽佩戴实时监测需要对距离较远、图像较小的目标具有良好的检测效果,而现有方法存在的对于小目标识别存在漏检、标签重写等问题,同时对于检测环境具有不同要求,不能完全适应施工场地的安全帽检测工作。
为解决以上问题,本文提出基于改进YOLOv4算法以适应安全帽检测所在的施工场地等复杂环境。在自建安全帽数据集上,在深度模型训练阶段,针对漏检问题对特征金字塔结构进行修改,提高算法对32*32尺寸小目标的识别率,但同时带来了模型训练时间增加问题和锚框数量不匹配的问题,为此开展了3方面的工作:合并卷积网络中的BN层和卷积层,减少前向推理时间,提高模型训练速度;利用K-means聚类算法计算基于自建安全帽数据集的先验框坐标,通过增加锚框数提高图像训练时锚框的匹配度使模型更快收敛;针对检测中的标签重写问题,采用柔性非极大值抑制算法(Soft-NMS)对同一区域内多个预测框进行置信度权重修改,平衡相互重叠检测框的置信度。
YOLOv4进行了一系列改进,输入端采用马赛克数据增强(mosaic data enhancement)[14]的方法,有效提高了模型对不同尺寸目标的识别效果。网络结构中的特征金字塔(feature pyramid networks,FPN)[15]结构通过对图像进行卷积采样操作得到不同尺度的特征图像,其中浅层网络更关注细节信息,而深层网络则更关注语义信息。强语义信息能够提高检测性能,而深层次特征则能够提高更鲁棒的信息。但多次的降采样和上采样操作使得深层网络的定位信息存在误差,同时过大的下采样率也弱化了小目标的图像特征,而工地施工的安全帽检测预警任务需要对较远距离的识别目标进行识别,对小目标特征识别的要求更高。
借鉴多尺度特征融合的思路,为提高网络模型中低层特征图中的细节语义信息,使小目标能够在图像特征中得到有效训练,改进的YOLOv4算法网络在原有的3个特征尺度层上增加104*104的底层特征层,同时采用框架FPN+PAN(path aggregation network)[16]的结构,添加一个自底向上的特征金字塔,作为输出与前四层特征尺度融合,应用双线性插值将高层特征做2倍上采样,再将其和对应经过1*1卷积核的前一层特征层结合,将低分辨率、高语义信息的高层特征和高分辨率、低语义信息的低层特征进行自上而下的侧边连接,从而所有尺度下的特征都有丰富的语义信息,使得改进后的YOLOv4网络能够检测到更加细粒度的特征。
改进后的特征提取层结构如图1所示。
图1 改进后的特征金字塔结构
输入图像经过卷积网络后,通过改进后的52*52、26*26、13*13、104*104这4个特征尺度进行训练,再通过上采样将4个特征层输出进行特征融合:在79层后经过3*3的卷积核进行卷积操作得到13*13的预测结果,下采样倍数高,特征图具有较大的感受野,适合检测图像中尺寸较大的对象;将输出结果通过上采样与61层的结果进行张量拼接(Concat),再经过卷积操作后26*26的预测结果,这一层特征尺度具有中等尺度的感受野,适用于检测中等尺度的对象;而52*52和新增的104*104特征尺度具有较小尺度的感受野,能够对于小目标具有好的检测效果。
图片在输入到CSPDarknet53网络后,YOLO将其划分为S*S个不同尺度的网格(grid cell),如果物体的中心落在某个网格内,则这个网格就负责相应检测该物体。通过网络每个网格生成B个边界框(bounding box)及其对应的坐标偏移量、物体置信度和类别置信度对每个锚框分别进行拟合,最后通过极大值抑制筛选后得到检测结果和预测类别。损失函数如式(1)所示
(1)
其中,Lconf为目标置信度差,通过交叉熵来表示;Lclass为分类误差;Llocation为位置损失函数,表示中心坐标误差和宽高坐标误差之和;Iij表示第i个网格的第j个锚框是否负责预测该目标;Ci表示参数置信度;λcoord为坐标系数;λobj和λnoobj表示目标存在或不存在时的置信度。
传统的滑窗法和基于候选区域的目标检测方法,分类器只能得到图像的局部信息,YOLO在训练和测试时能得到整张图片的信息。物体中心落在划分的S*S个网格中,通过预测框与锚框计算其交并比(IoU)和相应的置信度得分,就能得到对该目标的位置和类别进行预测。但在13*13、26*26和52*52这3个特征尺度中,小目标在每一个网格中所占像素比例较小,锚框和真实框(ground truth)交并比较低,从而导致置信度Ci较小,在训练过程中的图像特征更容易被忽略。如图2所示,在低尺度的特征图下右边框中的物体中心更容易被锚框匹配到,而较小的安全帽目标则容易被检测为背景而忽略。而在改进后的高尺度下的小目标中心则更容易在相应网格中被锚框匹配,网格中小目标所占像素比例得到提升,边界框能够更好地拟合物体的真实框。
图2 不同尺度特征
通过提高图像中小目标的真实框与锚框的交并比,使得从新特征尺度层输出的边界框信息不仅融合了小目标细致的语义信息,还囊括了小目标丰富的位置信息,使改进后的卷积网络在应对多尺度目标识别任务中的检测性能更加均衡。
增加特征提取层使得网络前向推理中增加了运算量,影响了模型的性能,占用更多显存和内存空间的问题,本文采取将BN层与卷积层合并的方法,提升模型运行速度,在CSPDarknet53网络上进行改进,提升网络前向推断性能。
在基础网络CSPDarknet53中,卷积层、BN(batch normalization)[17]层和Leaky-Relu层共同构成了DarknetConv2 d_BN_Leaky(DBL)作为YOLOv4的基本组件Convolutional层。BN层可以解决在训练过程时中间数据分布发生改变造成的梯度消失和过拟合的问题,加速网络收敛。图像数据输入卷积网络后,通常将BN层放在卷积层和全连接层之后,在非线性处理之前。DBL结构如图3所示。
图3 DBL结构
对于卷积层中输入的图像数据,应用式(2)将维度转换为标准高斯分布(均值为0,方差为1),其中x(k)为数据值,E[x(k)]为均值
(2)
再通过γ进行缩放和移位(scale&shift)处理,使其能工作再激活的非线性区域,网络训练中得到β为偏移值,γ为缩放因子,添加极小的ε值防止在求平方根计算中得到值趋于无穷大
(3)
BN层对数据的运算和处理如下
(4)
(5)
(6)
(7)
假定输入到BN层的mini-batch中的数据值为A=(x1,x2,…,xm), 得到的学习参数为γ,β;通过运算获得mini-batch中数据的平均值和方差,再通过标准化、缩放和移位处理得到输出,并用每个mini-batch中计算得到的均值和方差来替代整体训练集的均值和方差值。数据经过卷积层和BN层后得到的输出过程为
(8)
(9)
X为输入图像数据,W为卷积权重,B为卷积偏置,W*X+B为卷积层的矩阵运算。在卷积层和BN层中,通过权重矩阵和特征向量的乘积加上偏置,得到输出的特征值,如式(10)所示
(10)
将这两层的计算进行合并,通过计算一次权重矩阵和卷积偏置作为输入参数
WCN=WBN·Wconv
(11)
bCN=WBN·bconv+bBN
(12)
将两式稍作变化,得到新的卷积层的权重和偏置项
(13)
(14)
在输入数据后通过这些新权重和偏置项进行卷积将得到与原始卷积加批量归一化相同的结果,此时删除BN层,将得到的输出值用Leaky-Relu函数激活,进入网络的下一层。通过实验,此方法改进后删除BN层,将其与卷积层合并,在没有损失性能的前提下提升了网络前向推理速度,同时提升了模型的检测速率。
改进后的CSPDarknet53网络结构如图4所示,其中CSP(cross stage partial)结构可以减少计算量并且增强梯度表现,每个CSP模块前面都有一个大小为3*3,步长为2的卷积核,起到下采样的作用;而进行改进合并后的CBL模块降低了计算瓶颈,减少网络优化中的梯度信息重复;新增的特征提取层在第四尺度上针对图像细节信息进行进一步提取分析,通过张量拼接和卷积操作得到新的特征层,使得改进后的网络结构增强了卷积网络对图像特征的学习能力,使其轻量化的同时保持了准确性。
图4 改进后的CSPDarknet53网络结构
YOLOv4中预设的9个先验框通过公共数据集聚类生成,所确定的先验框维度所对应的尺度不适用于本文所用到的自建安全帽数据集。合适的先验框维度能更好地匹配识别目标的尺寸,从而做出更好的预测,反之若先验框维度和被检测物体尺度不一致,则会导致大量漏检的情况。通过修改特征提取层以增加对32*32尺寸目标的识别率,在4个特征尺度上应相应优化增加为12个先验框(Anchor Box),使用k-means聚类算法[18]对训练集中所有样本的真实框重新聚类计算,得到具有代表性形状的宽高(维度聚类)。如式(15)所示,选择初始的k个类别中心μi,对于每个样本,将其标记为距离类别中心最近的类别,其中argmin表示使类别函数取最小值时的变量值
(15)
再将每个类别中心更新为隶属于该类别的所有样本的均值
(16)
最终选取精确度(Accuracy)为83.59%的12个先验框:(20,25), (32,37), (42,52), (55,67), (72,84), (86,109), (109,137), (140,171), (192,231), (264,322), (379,466), (653,825),其中前面6个尺度较小的先验框分别分配给52*52和104*104两个具有较小感受野的特征图,以提升对较小目标的检测能力;后面6个尺度较大的先验框则分配给26*26、13*13两个具有较大感受野的特征图,用于对尺度中等及较大目标的检测。
安全帽检测检测的最后阶段会在一定区域内生成一系列的检测框,并匹配相应的置信度分数。这些检测框大都是对于同一目标不同置信度分数的检测,导致带检测目标周围会出现密集的检测框,造成与目标相关的多个检测框不同程度的重叠。非极大值抑制算法(non-maximum suppression,NMS)[19]可通过计算实现检测款筛选,以得分高的检测框作为基础,对不同类别检测框设置不同的交并比阈值来筛选同一目标的标签重叠问题,实现最优检测。但保留最高得分检测框,删除其它框和重合度过大的检测框容易对两个重叠面积较大的目标实现漏判,降低了算法的检测精度和准确率,特别是降低了对于重叠机率较大的小目标识别。NMS筛选示意和IoU计算方法如图5所示。
图5 NMS和IoU算法
本文利用柔性非极大值抑制算法优化解决这一问题,在进行非极大值抑制时同时考虑得分和重叠度,计算区域内最佳框同其它框的交并比,并为其置信度添加衰减因子,从而降低其置信度而非直接清零。其计算公式如下
(17)
式中:Si是相邻候选框的置信度得分,M是得分最高的候选框,bi是待操作候选框;Ni是重叠阈值;当bi与M的交并比越高,待操作候选框bi的置信度Si衰减程度越高,以此平衡相互重叠检测框的置信度,既保留区域内置信度较高的检测框,又删除了同一目标重叠的检测框,从而提高检测目标遮挡情况下的准确率。
实验环境配置:操作系统为Ubuntu16.04,软件版本为:CUDA(computer unified device architecture)10.0、CUDNN(computer unified device neural network library)7.6.3、OpenCv3.4.2;硬件配置为32 G内存、Intel-i7处理器、Nvidia GeForce GTX 1080Ti 显卡,调用GPU加速训练。
安全帽检测领域目前没有公开的图像数据集,本文通过网络图片筛选、工地现场拍摄等方式收集各个施工场地、工地入口等场景下佩戴和未佩戴的施工人员图片自制安全帽数据集,共4895张。所采集数据集对提取场景复杂度、人员密集度及检测距离远近等相关特征具有良好表现。正样本中佩戴安全帽人员图片2563张,主要场景为施工场地入口、建筑物附近等,其中包含低于32*32尺寸目标图片1153张;负样本中包括未佩戴安全帽人员,多种噪声图片等,如手拿安全帽、佩戴草帽或其它帽子的人员等图片2332张,包含低于32*32尺寸目标图片1212张。
该数据集所采集的正负样本图片除施工场地外,还包含各种不同背景、不同质量和分辨率的图片,丰富的数据集特征更好地提高了模型的泛化能力,较好地反映了施工场地的复杂性和安全帽检测的多样性,样本图片如图6所示。
图6 样本图片
使用标注工具labelImg对图像进行标注,划定头部区域为样本,同时采集人体面部信息和安全帽佩戴信息作为正样本,采集人体面部、错误佩戴安全帽等复杂情景为负样本,制作本文所需要的安全帽佩戴数据集。
标注过程如图7所示,将图片内容分为佩戴安全帽与未佩戴两类,主要标注不同尺度大小、不同环境下的图像特征,提高模型泛化能力。通过手动对目标进行框选,使网络学习的模型具有更丰富的特征信息。标注后生成的xml文件包含图像目标的位置信息以及类别信息,标注分类为佩戴(Wear)和未佩戴(Not Wear),再将xml文件转化为YOLO算法模型训练所需要的txt文件。
图7 LabelImg标注界面
修改特征层后,YOLOv4的整体Backbone基础结构没有变化,所以仍然可以基于迁徙学习的方法,采用预训练权重YOLOv4.conv.137作为基础特征提取网络进行模型训练。选取自建安全帽数据集中90%样本为训练集,10%样本为测试集,再从样本集中选取20%作为验证集。批处理大小(batch size)设为32,子分区(subdivision)设为8,初始阶段学习率(learning rate)设为0.001,衰减系数(decay)为0.0005,每训练100次保存权重,为防止模型过拟合,每迭代10 000次学习率下降0.1,学习率衰减步长(Step)设置为40,训练24 000次后批loss值稳定在0.1到0.15,迭代停止,保留最后权重。Loss值下降和Avg IOU变化曲线如图8所示,其中图(a)、图(b)横轴表示批次迭代次数;图(a)纵轴表示loss值,图(b)纵轴表示平均IOU比率。
图8 数据变化曲线
模型的损失随着迭代次数的增加而减少,在前8000次迭代里模型拟合较快,损失值下降快,而在迭代次数达到20000后损失值趋于稳定,loss值在0.12上下波动;Avg IOU在0.97左右波动。
在增加特征提取层后,网络的前向推理时间会增加。可通过将BN层与卷积层合并的方式,提升网络前向推理速度,并保持模型的识别性能不受到损失,使整个模型推理训练速度加快。实验结果表明,将卷积层和BN层通过计算一次权重矩阵和卷积偏置作为输入参数的方法能够有效实现预先目标,在不损失性能的前提下,网络前向推理时间减少14.68 s,得到模型速度上的提升。采取改进后的模型与原模型前向推理时间和mAP值对比如表1所示。
表1 合并BN层后性能对比
为提高算法识别度,全面评测本文改进的YOLOv4检测性能,使用自建安全帽数据集先对目标进行安全帽佩戴检测并计算其精确率和召回率。精确率表示针对预测结果而言预测为正的样本中有多少是真正的正样本;而召回率则针对原来的样本而言样本中的正样本有多少被预测正确。在安全帽检测任务中,召回率能够表示在检测过程中有多少目标被正确检测出来,特别是在分辨率较大的尺度中,较小的目标往往会被忽略,从而造成检测精度的下降。其计算公式如下
(18)
(19)
其中,TP(true positive)为将正类预测为正类数,FP(false positive)为将负类预测为负类数,FN(false negative)为将正类预测为负类数。再计算单类目标x的平均准确率(ave-rage precision,AP)和所有类别目标的平均准确率均值(mean average precision,mAP)来对模型性能进行评价。平均准确率将准确率和召回率综合考虑,能够检测算法稳定性,针对单一类别评价模型对于每一类的识别优劣;平均准确均值能够衡量模型在所有类别上的综合性能。其计算公式如下
(20)
(21)
其中, ∑Precisionx为目标精确率之和,APx表示类x的平均精确度,Nx为所有图像中含有类x目标的图像数量;N为所有类别的数目, ∑AP为平均精确率之和。通过计算精确率和召回率,再计算AP和mAP能够很好地对模型提升效果做一个评估。测试图像如图9所示。
图9 正负样本测试效果
选取准确率RP和召回率RR作为评价指标测试模型对正负样本的识别准确率,分别用YOLOv4算法和改进后的算法对采集到的500张测试图片中1263个目标进行检测,分别计算其RP和RR,其中NTP为被正确识别的目标数量,NFP为被错误识别的目标数,NFN为未被识别的目标数量,结果见表2。
从表2中的数据可以看出,改进后的YOLOv4算法对安全帽检测任务中的漏检和错检数量明显下降,准确率RP达到91.8%,相对于原算法提升8.9%,召回率RR达到93.5%,提升9.5%,说明改进后的YOLOv4算法具有更好的准确性和稳定性。
表2 算法改进前后测试样本结果对比
将500张测试图片中低于32*32目标进行统计标注,分别用YOLOv4改进前后算法对不同尺寸目标进行安全帽佩戴检测并计算其平均准确率和平均准确率均值,对佩戴和未佩戴两类检测目标进行测试,检测模型小目标样本检测性能,结果见表3。
表3 算法改进后样本检测对比
通过表3数据分析得出,改进后的YOLOv4算法相较于原算法的mAP提升2.91%,达到83.23%;其中在32*32类目标上在佩戴于未佩戴两类上分别提升10.3%和10.11%,改进后算法对32*32尺寸目标具有更好的检测性能。检测结果如图10所示,未改进的YOLOv4检测出3处佩戴安全帽信息,漏检途中32*32目标4处,平均置信度为71.19%;改进后的YOLOv4算法检测出6处佩戴安全帽信息,漏检1人,识别处32*32目标3处,平均置信度为78.59%,测试表明得到框图数据未发生过拟合。
图10 改进算法前后效果对比
为进一步验证不同的图像特征参数和实验参数对实验结果会造成差异化的影响,同时也得到算法的最优策略,选取以下4种改进策略进行测试,选取mAP和前向推理时间作为比对值测试算法性能。对比实验结果见表4。
表4 不同改进策略测试效果
由表4可知,策略2对比策略1在合并卷积层和BN层后,mAP略微提升0.66%,前向推理时间减少24.55 s,合并BN层和卷积层能够有效提升训练效率,提高模型的性能;策略3增加特征层并合并DBL,前向推理时间对比策略1减少9.44 s,mAP降低8.3%,因为新增特征层无匹配锚框,图像特征无法匹配融合特征,造成错误识别目标过多;策略4为本文所用方案,增加特征层的同时将锚框数增加12个,丰富模型高层次的语义信息,同时通过合并DBL解决了梯度信息增多而导致模型训练时间增加的问题,对比其它方案策略4中模型性能达到最佳。
使用自建安全帽数据集将文献[5]中的Faster RCNN算法、文献[9]的YOLOv4算法和改进后的YOLOv4算法在分割区域内对不同尺寸目标进行安全帽佩戴检测。
表5数据表明,对于自建安全帽数据集的检测的表现,Faster-RCNN算法检测精度较高,但用时较长;而本文改进的YOLOv4算法在检测精度和检测时间上表现最佳,mAP为83.23%,平均每张图片检测时间为0.0798 s;同时在分割区域的不同尺寸目标的检测上,改进的YOLOv4的AP达到21.64%,对小目标检测上领先于其它算法。
表5 不同算法模型检测对比
本文提出了一种改进YOLOv4算法的多尺度特征融合安全帽检测方法,采用改进CSPDarknet53网络的特征提取层,通过FPN+PAN金字塔特征融合结构将特征提取层增加为4层,提升模型对于高分辨率下32*32小目标特征识别度,提高施工场地下安全帽佩戴的检测范围;合并网络中的卷积层和BN层,提高了模型网络前向推理速度,减少前向推理时间;利用K-means聚类算法先验框维度重新聚类,选取更适合自建安全帽数据集的锚框,提高检测过程中锚框和真实框匹配度;采用Soft-NMS解决了对于多目标重叠产生的标签重写问题,实现最优的预测框输出。相较于原算法,本文算法在安全帽的检测任务中mAP提升2.91%,对低于32*32尺寸目标其AP相较于原算法提升6.02%,能够有效提升安全帽佩戴检测范围,满足检测任务实时性和准确性要求,后续考虑在安全帽检测场景如施工入口和施工场地上通过部署多传感器等相关设备进行图像特征的融合以提升对复杂目标的特征信息识别能力,获得更加准确的检测效果。