伊力哈木·亚尔买买提,白鹏飞
(新疆大学 电气工程学院,新疆 乌鲁木齐 830047)
在目标检测任务中,小目标检测精度低、漏检率高一直是该领域亟待解决的问题。如何克服模型自身缺陷提高小目标检测效率,并应用于施工现场安全设备佩戴检测,是本文的研究意义。
目前,基于深度学习的目标检测方法[1]被广泛应用于安全领域。其中,较为经典的算法主要分为以Faster R-CNN[2]系列为代表的二阶段目标检测算法和以YOLO[3,4]系列为代表的一阶段目标检测算法。相较于一阶段算法,二阶段算法精度较高,对小目标的检测效果较好。而一阶段算法检测速度较快,可以满足显示实时性的需求。因此在满足检测速度的同时提高小目标检测精度,解决实际问题成为重中之重。Yu等[5]和Kisantal等[6]通过数据增强策略提高小目标的检测性能。Liu等提出SSD[7]多尺度特征层的思想,利用较浅层检测小目标。Zhao等[8]提出Cascade R-CNN,利用设置不同Iou的联级结构提升目标检测性能。徐守坤等[9]改进Faster R-CNN算法应用于安全帽检测,提升了远景下小目标的检测效果。Fu等[10]通过上下文建模方法加强小目标细节信息和语义特征利用。Yan等[11]提出一种注意力机制的特征金字塔模型,有效提升了小目标检测能力。相较以上算法,YOLOv4更能兼顾精度和速度满足现实需求。但YOLOv4在复杂背景下对小目标检测效果欠佳,检测网络存在梯度消失问题并且参数运算量较大。
本文为解决上述问题,首先对检测网络特征融和方式进行改进,其次设计CSP_F模块代替普通卷积(CBL*5),最后改进了类别损失函数。
YOLOv4算法主要从输入部分、主干网络、检测部分以及损失函数等诸多方面进行改进。在输入端使用Mosaic数据增强训练网络和GA(genetic algorithm)算法选择最优超参数来提升神经网络的准确率,使得模型在有限的GPU情况下得到更好的预测结果。在YOLOv4的网络结构中,Backbone将DarketNet-53与CSPNet[12]方法结合起来组成新的特征提取网络,并且加入SPP[13]模块。CSPDarknet53作为主干提取网络,通过将DarkNet中的基础卷积层划分为两部分,利用梯度变化映射在特征图中,最后跨阶段的合并,这样可以在减少参数量的情况下提取到更丰富全面的深层次特征,从而保证了准确率。CSPDarknet53检测部分在FPN[14]中融入上下文路径聚合网络,组成FPN加PANet[15]结构的特征融合网络。这种结构将底层高分辨率的信息与高层特征语义信息进行反复特征融合再提取。最后用不同层的特征图融合来做预测。输入部分主要引入了新的数据增强方法和训练方式;对于预测部分中所使用的锚框方法和YOLOv3一致,主要改进模型损失函数为CIOU-Loss兼顾长宽比,以及预测框筛选的NMS变为DIOU-NMS。
为了提高小目标的检测性能,解决检测网络存在梯度消失和参数运算量较大的问题。本文改进原模型检测网络特征融合方式,在检测网络引入CAU(channal attention union)和SAU(spatial attention union)模块进行特征间的非线性融合,加强深层次空间和通道细粒化信息利用,增强上下文信息表征,改善小目标的检测性能。其次使用CSP_F(CSPNet-Fusion)模块代替普通卷积块(CBL*5),使网络在利用跨阶段梯度特征融合信息时,有效防止梯度消失并减少参数计算量。最后优化了类别损失函数,使网络支持样本类别的连续数值监督。
随着网络层级的增加,特征图展现出的细节特征信息会不断减少,而语义信息会更为明确。为使网络在推理时兼顾二者特性,提升推理性能。利用特征融合将跨层次的感受野信息进行融合,但检测网络自下而上和自上而下的线性特征叠加融合会引入很多冗余信息,失去对重要信息的关注度。为了关注安全帽和工作服中小目标,需要对其所在区域投入更多注意力资源,抑制其它无用信息,获取更多所需要关注目标的细节信息,提高安全帽和工作服中小目标检测性能。受人类注意力原理[16]启发,在检测网络中设计了CAU权重模块和SAU权重模块分别用于自下而上和自上而下的非线性特征融合,使网络利用有限的资源从大量信息中快速筛选出高价值信息。在融合不同感受野信息的同时充分利用空间和通道信息,提高重要特征利用率,改善网络对安全帽和工作服中小目标挖掘检测性能。
改进检测网络结构如图1所示,本文设计的CAU和SAU两个轻量级通用模块,SAU用于自下而上的特征融合,CAU用于自上而下的特征融合。这样使检测网络在付出极少参数量的情况下,加强特征图谱在空间和通道两个维度的重要信息表征,抑制无用信息。提高网络对安全帽和工作服中小目标检测能力。
图1 改进网络结构
SAU主要突出融合后的空间细节特征,在保留浅层细节特征信息推理时加强网络语义特征理解,SAU的运算如式(1)~式(3)所示
F1=[(F_low⊗1×1 conv)Θ(F_high⊗1×1 conv⊗3×3 deconv)]
(1)
式(1)中,F1表示浅层特征卷积与深层特征反卷积运算后的叠加结果。其中,⊗表示卷积运算,Θ表示特征图的叠加运算,1×1conv和3×3deconv表示1×1的卷积运算和3×3的反卷积运算
F2=σ[Avgpool(F1⊗3×3 conv)Θ
Maxpool(F1⊗3×3 conv)]⊙F1⊗3×3 conv
(2)
式(2)中,F2是F1将中特征图进行空间权重增强后的输出。其中,σ表示sigmiod激活函数,⊙表示逐像素相乘,Avgpool表示全局平均池化操作,Maxpool表示全局最大池化操作
Fout1=F_low+F2
(3)
最终SAU特征输出如式(3)所示。
在自下而上的路径中,再通过通道注意力特证融合方式CAU来关注通道重要特征信息。CAU在特征融合过程中,采用注重浅层特征通道信息的方式来融合高层特征,以达到重要特征信息利用。CAU的运算式如式(4)~式(6)所示
F3=MLP(Avgpool(F_low)⊗1×1 conv)
(4)
式(4)运算中,首先对输入CAU的特征图F_low进行全局平均池化和一次普通卷积,将卷积结果做MLP卷积得到通道权重F3。其中,MLP表示两次普通卷积,第一次输入通道为C/16,输出为C/16,第二次输入通道为C/16,输出通道为C。Avgpool表示全局平均池化,⊗表示卷积运算
F4=(F_high⊗3×3 conv)⊙F3
(5)
式(5)运算中,最后利用得到的通道权重对深层特征进行加权点积运算,用以突出重要细节特征信息。经过通道加权后的特征输出为F4。其中,⊕表示逐像素相加,⊙表示逐像素相乘
Fout2=F4⊕(F_low⊗3×3 conv)
(6)
最终CAU特征输出如式(6)中Fout2所示,其将经过通道加权后的特征输出F4与浅层特征F_low相加,达到对整个浅层特征优化的效果,这样更能高效利用特征信息进行推理。
在检测网络不同阶段分别使用SAU和CAU模块加强目标特征之后进行特征融合。这两种结构可以有效利用重要细节特征信息并抑制自上而下和自下而上两次特征融合带来的特征冗余,改善模型小目标的检测效果,提升网络整体性能。
为了防止检测网络反复融合带来的梯度消失问题和大量参数计算量问题。受CSPNet启发,在检测网络中添加特征融合模块CSP_F卷积结构,通过优化梯度组合方式代替原模型普通卷积(CBL*5),从开始和结束集成特征映射来注重梯度的可变性,融合更丰富的跨阶段梯度信息,使网络能够在减少参数量的同时防止梯度消失。
CSP_F模块的结构如图2所示,其包含两个分支,第一个分支经过深层次的多次卷积,集成大量特征信息。第二个分支只进行一次卷积后与第一个分支叠加来注重梯度可变性,减少梯度推理计算量的同时利用两个分支引入的丰富特征信息。
图2 CSP_F模块
在CSP_F卷积运算中w、h、c分别表示输入特征图谱的宽、高和特征通道数。G表示普通卷积,A表示普通卷积加归一化与激活函数,k表示卷积核大小。“Θ”表示进行特征通道的连接,“⊗”表示卷积计算,“▷”表示运算的顺序连接。CSP_F模块运算过程如式(7)~式(9)所示
(7)
式(7)中,X1表示CSP_F模块的特征输入,X2表示特征图进行第一个分支的运算操作,满足了原网络具备的特征信息表征能力
(8)
式(8)中,X3表示特征图进行第二个分支的一次卷积操作,一次卷积操作节省了大量梯度运算,保留了原始特征信息,提升模型对于非线性特征的表达能力,为跨阶段特征融合提供丰富的浅层特征信息,加强全面的多层次特征信息利用
X4=[(X2ΘX3)▷BN▷Leaky_relu]⊗A3×3×C
(9)
X4表示将两个支路特征信息进行融合,利用跨阶段多尺度特征信息来进行推理计算,既利用不同特征图的梯度信息,又减少了大量的梯度运算,有效减缓检测网络梯度衰退。
YOLOv4的原始的类别损失函数Lcla如式(10)所示,其并没有明确度量难易样本对类别损失的贡献。本文对类别损失进行改进,使类别损失函数即能度量难分类和易分类样本对总损失的贡献值,又能够支持样本类别连续数值的监督
(10)
可以看出,原始的损失函数Lcla只使用了交叉熵[17]度量样本差异性,而忽略了其它潜在特性,本文将对类别损失函数作以改进,改进方法将结合Focalloss[18]函数的优点并支持样本连续数值的监督。
Focalloss只支持0或者1这样的离散类别标签,有效平衡了正负、难易样本的特性,但不能支持样本连续数值的监督,然而,本文使用Q_Focalloss分类-质量联合表示label的值为(0~1)的连续值,既保证Focalloss此前的平衡正负、难易样本的特性,又让其支持连续数值的监督,持续度量样本对总损失的贡献值
(11)
原始的Focalloss如式(11)所示,其中,α为调节系数,pt为类别概率
Q_Focalloss=-|y-σ|β((1-y)log(1-σ)+ylog(σ))
(12)
Q_Focalloss如式(12)所示。其中,β为调节系数,一般取2为最优,σ为预测概率值,y取值为(0~1)。为了解决数据样本不均衡问题,并且能够支持连续数值的输出监督,把Q_Focalloss引入Lcla损失函数,改进后的类别损失函数如式(13)所示
(13)
改进后的损失函数提高了难以检测样本权重,使损失函数既能度量难分类和易分类样本对总损失的贡献值,又能够支持连续数值的监督。
实验在CPU inteli5-6600,16 GB内存,Ubuntu16.04系统下搭建的pytorch环境下进行,显卡型号为GeForce GTX1080TI。
实验使用的数据是在工厂工地采集、网络爬取,共7080张,每张图片里的目标都使用图像标注软件labelImg进行了仔细标注,并进行VOC格式的转换,标注总共分为3种类型:戴安全帽(hat)、不带安全帽(person)和穿工作服(protective_clothing)。训练集包含5210张图片,验证集670张,测试集1600张(其中:模型评估测试集700张,小目标测试集500张)。
为了评价改进后的网络性能表现,本文实验用平均精度(AP)和平均精度均值(mAP)来衡量方法的有效性,计算公式如式(14)所示
(14)
其中,平均准确率AP表示每一个安全设备佩戴类别PR曲线相对于X轴积分面积的大小。mAP表示所有安全设备佩戴类别目标对AP求取均值。
网络最终训练损失变化如图3所示,从最原始的3700左右下降到2左右震荡,直至平缓。模型在训练时的整体走势相对平稳,没有较大的波动,而相对明显的波动发生在大幅下降到趋于平稳的过渡区,但最终也走向平缓震荡,说明网络已经完全收敛。
图3 损失函数变化
3.2.1 损失函数优化分析
本文优化类别损失函数,使其即能度量难分类和易分类样本对总损失的贡献值,又能够支持连续数值的监督。为了展现优化后的性能效果表现,本小节分别对原网络交叉熵类别损失函数(Crossentry)、改进后的交叉熵类别损失函数(Q_Focalloss)及融入焦点调节函数的交叉熵损失(Focalloss)做了对比分析。最终的对比结果如图4所示。3个对比函数式如式(11)、式(13)、式(15)所示
(15)
交叉熵主要用于度量同一个随机变量中真实概率分布与预测概率的两个不同概率分布间的差异性,交叉熵的值越小,模型预测效果就越好。式(15)中,p(c)表示真实概率分布,q(c)表示模型预测概率估计。
为了验证优化类别函数之后的表现,我们使用ROC评价分类器的性能。ROC曲线作为一种反映连续变量信号敏感度和特异性的指标,能够准确反应类别函数内部机理对分类的好坏程度。
利用不同损失函数的ROC曲线对比结果如图4所示。从对比结果图可以看出,融合了Q_Focalloss的损失函数具有较好的响应结果。对目标类别的分类性能相对于其它两种表现较好。
图4 ROC测试曲线
3.2.2 小目标检测性能分析
为验证网络在安全领域的表现性能,利用安全帽和工作服中小目标进行检测,从施工现场选取450张全为小目标的图片,图片中的小目标整体离检测设备较远,分布较散且与背景相融合。测试效果如图5~图8所示,两组测试结果见表1。
图5 原网络小目标检测效果
由图5、图6可以看出,穿戴安全帽和工作服的小目标散落在复杂的场景中与背景相似,而且场景中不乏一些遮挡目标和不同状态行为的目标。改进算法能很好挖掘小目标,对场景中的安全帽小目标以及遮挡情况下的工作服都能准确分类定位,这表明改进算法对复杂场景下的安全帽和工作服小目标有较好的鲁棒性。
图6 改进网络小目标效果
表1展示了改进模型在小目标数据集上的准确率,从测试结果可以看出改进算法在小目标数据集上的准确率有2.17个百分点的提升,说明检测网络特征融合策略的有效性。从最终测试结果和效果图综合结果看出,改进算法对于安全帽和工作服中的小目标有较好表现。
表1 小目标测试结果
3.2.3 CSP_F模块实验分析
CSP_F结构特征融合原理过程如图7所示。首先经过主干网络提取的特征图经过支路一多次卷积归一化运算,得到深层次的特征图。然后支路二经过一次卷积归一化后得的到浅层特征与深层特征做叠加,这样即利用跨阶段特征信息又减少了卷积冗余。
图7 CSP_F特征融合模块
为了验证特征融合结构是否减少参数量并提高推理速度。本节利用原网络和替换成CSP_F模块的改进网络进行测试对比分析,结果见表2。
表2 性能对比
从表2可以看出,用CSP_F替换普通卷积后参数量较原网络有3个百分点的下降,这是因为跨阶段梯度信息减少了原有卷积的计算冗余。与此同时检测速度相对于原算法有2.67个百分点的提升,说明了改进算法的有效性。
3.2.4 不同改进方法性能对比
为了验证改进方法的有效性。本文分别复现了2.1小节提出的跨阶段上下文权重增强机制和2.2小节所提的跨阶段特征融合改进方法,并且与原模型进行了性能分析对比。不同改进模型在数据集上的性能结果见表3。
从表3可以看出,原始YOLOv4算法模型的网络模型的检测工作服安全帽检测准确率为92.26%。使用跨阶段多尺度CAU和SAU上下文权重增强机制之后的网络模型准确率提高了1.29个百分点。这是因为浅层的像素信息和深层的语义特征进行了加强融合,在不丢失原有特征基础上突出了重要细节特征,使网络提高安全帽和工作服中小目标和低分辨率目标的定位分类能力。在原始网络用CSP_F跨阶段梯度特征融合模块代替原有的普通卷积快,算法准确率提高了0.61个百分点,推理速度也有明显提升。这是由于CSP_F模块代替原有普通卷积块,使网络能够优化梯度组合,融合不同分流特征信息,在减少参数量的情况下又能保证推理速度。
表3 不同改进方法性能对比
3.2.5 改进算法在不同环境下的检测效果对比
改进算法在不同环境下的检测效果对比分析如图8所示。可以看出本文提出的改进算法对多目标检测如图8(a)所示,部分遮挡如图8(a)、图8(c)、图8(d),目标间尺寸相差较大效果如图8(d)所示,可以看出模型对远景下的小目标和近景下的大尺寸目标都有很好的效果。夜间目标效果如图8(b)所示,可以看出模型在不同光线影响下仍具有较好鲁棒性。从效果图可以看出本文提出的算法适用不同环境下的工作服安全帽检测,对安全帽和工作服中的小目标和低分辨率目标都有较好的鲁棒性。
图8 改进算法在不同环境下检测效果
3.2.6 不同算法模型性能对比
为验证算法改进的有效性,使用当下主流算法YOLOv3、RetinaNet、SSD300、YOLOv4进行训练测试。并对穿戴工作服、戴安全帽、没有戴安全帽3种穿戴情况做出对比分析。实验从平均精度、平均精度均值两个指标对比评估RetinaNet、YOLOv3、YOLOv4、SSD这4个目标检测网性能表现,网络的检测结果对比见表4。
表4 模型性能对比
从表4可以看出SSD对未带安全帽人员(person)这种小目标不敏感,鲁棒性较差,RetinaNet的平局精度和单个类别目标精度相对较低,不能满足实际场景的实时性。YOLOv3对过大的工作服目标和过小的目标不能较好的挖掘。而本文改进网络无论在单个精度还是平均精度上都要优于其余4种网络。尤为明显的是对安全帽(hat)这种小目标。而对于工作服这种尺寸相差较大的分辨率低目标也有不错的表现,平均精度提高了1.79个百分点。从整体看,改进算法与YOLOv4相同但优于其余3种网络。改进网络整体性能相比于YOLOv4目标检测网络有明显的提升,大大提高了对工作人员头部区域和安全帽区域的定位精度。改善了安全帽和工作服中小目标和较靠后的低分辨率目标检测效果。
本文提出一种基于YOLOv4的改进算法。在检测网络中设计多尺度CAU和SAU上下文特征融合机制,利用多尺度通道和空间信息改善小目标的检测性能;其次设计CSP_F模块代替原模型普通卷积块(CBL*5),防止检测网络特征层反复融合带来的梯度消失和参数运算量大的问题;接着优化了损失函数,使损失函数能够连续度量类别损失对总损失的贡献值。最终结果表明,改进算法在克服检测网络梯度消失同时改善了模型整体性能。接下来,如何在复杂施工环境中进一步提高遮挡和不同光照下的目标检测速率和准确率,将是下一步的研究主题。