1. 引言
自2019年12月以来,新型冠状病毒席卷全球 [1],对人民群众的日常生活乃至生命财产安全都造成了重大影响。尽管当前的防疫措施已逐渐趋于完善,但对人力物力等资源的消耗也是显而易见的。随着计算机视觉和嵌入式系统的迅速发展,两者应用开始结合,并极大方便了人们的生活,例如:人脸抓拍相机、人脸识别考勤机、以及停车场进出口车牌识别系统等等。因此将目标检测网络部署在对应的硬件平台上,并将系统应用在人流量较大的公众场所,就能很好地替代部分人工进行复杂场景下的人脸口罩检测,这种方案能一定程度上提高了人们的出行效率,减少人群聚集,满足国家提出的防疫要求。基于目标检测算法的口罩检测系统如图1所示:
该系统工作流程是先由图像采集设备将实时采集到的图片传入已经部署相应算法的嵌入式平台中,然后将处理后的结果传入显示器,由安排的工作人员进行监管。由于平台算力和成本等综合因素,这一系统落地的关键就在于算法性能的优化。
目标检测 [2] [3] 的发展脉络可以将其划分成为两个周期:传统目标检测算法时期(1988年~2014年)和基于深度学习的目标检测算法时期,且基于深度学习的目标检测算法可以分为两大类,一是以SPPNet、RCNN系列为代表的two-stage检测方法,二则是以SSD和YOLO系列为代表的one-stage检测方法。前者的检测流程主要分为两个阶段:先从图像中通过候选区域最后生成物体的边框。而后者的检测不需要候选区域就能直接得到物体的类别概率和位置坐标值,因此在实时性上相对前者有着较为明显的优势。
经过此次疫情影响,许多学者展开了对人脸佩戴口罩的相关算法展开了研究,文献 [4] 在YOLOv3 [5] 算法的基础上对特征融合部分进行了改进,通过添加浅层特征图形成4尺度检测结构,并引入自上而下和自下而上的多尺度融合结构,进一步利用了特征信息,有效提升了检测精度,但一定程度上也增加了模型参数量。文献 [6] 以SSD [7] 网络为基础,引入特征融合网络有效增强算法对细节信息学习和处理能力,并利用Quality Focal Loss损失函数调节正负样本的权值,实验表明改进后的算法精度得到了小幅提高,但对表征信息较弱的目标检测效果不佳。文献 [8] 设计出基于YOLOv3网络引入SPPNet结构的口罩检测算法,以空间金字塔的网络结构更好地融合特征信息,虽然增大了网络参数导致检测速度受到了一定影响,但网络特征提取与融合能力得到明显提升,同时将跨阶段局部网络引入特征提取部分,一定程度上降低了计算量,且测试的效果Map0.5达到了90%,但损失函数部分未进行改进,实际检测中边界框存在问题。
鉴于当前针对复杂场景下的人脸口罩佩戴检测算法在性能上各有千秋,但为了更好地将生成的网络模型部署在硬件设备上投入于公共服务上,将现有的目标检测网络进行轻量化改进更是当前所需的。本文主要研究内容如下:本研究提出基于YOLOv3的轻量化口罩检测算法。
2. YOLOv3网络
本文主要是对YOLOv3网络进行轻量化改进。其网络结构如图2所示。
Figure 2. Network structure diagram of YOLOv3
图2. YOLOv3网络结构图
YOLOv3使用Darknet-53作为主干特征提取网络提取三个不同尺度的有效特征层,通过构建特征金字塔结构实现不同尺度之间的特征融合并进行特征提取,最后利用多尺度检测进行目标预测。
Darknet-53主要由53个基本单元DBL [9] 构成,其中每个DBL结构都包含了1 × 1和3 × 3的卷积层,批量归一化层,以及Leaky ReLU [10] 激活函数层。与上一代YOLOv2的骨干网络Darknet-19对比,Darknet-53主要做了如下改进:1) 没有采用最大池化层,转而采用步长为2的卷积层进行5次下采样,以此减少因池化造成特征信息的丢失。2) 为了防止过拟合,在每个卷积层之后加入了一个BN层和一个Leaky ReLU激活函数。3) 引入了残差网络。并在网络结构中使用大量的残差块,有效将网络更深层的特征提取出来,同时避免训练中产生梯度消失以及梯度爆炸等问题。
3. 改进的YOLOv3网络
3.1. 轻量化改进
轻量化网络成为近年来许多学者的一个研究热点,轻量化网络顾名思义就是网络的参数量比较少,计算量也相对较小,目前常用的一些减少网络计算量的方法分为以下几种:1) 基于轻量化网络设计:比如EfficientNet系列,Mobilenet系列,Shufflenet系列,Xception [11] 等,使用分组卷积 [12] (Group Convolutional)、1 × 1卷积 [13] 在一定程度上保证网络精度模型模型同时减少了计算量。2) 模型剪枝 [14]:常常用在参数量足够大的网络,在大型网络训练中通常存在计算量的冗余,模型剪枝的原理就是减少网络的冗余部分,进而减少网络的计算量。3) 量化:利用TensorRT量化,一般在GPU上可以提速几倍。4) 知识蒸馏 [15]:利用大模型来帮助小模型学习,提高小模型的精度。
本文提出一种基于YOLOv3改进的轻量级目标检测算法,EfficientNet [16] 网络是2019年由Google团队提出,以MnasNet的基本模块MBConv为搜索空间,搜索出了一个基准网络EfficientNet-B0,并将其作为基准网络探究出EfficientNetB1~B7共7种网络结构。其中EfficientNet-B1网络结构如表1所示。
Table 1. The network structure of EfficientNet-B1
表1. EfficientNet-B1网络结构
EfficientNet-B1网络结构主要是由MBconv结构堆叠而成,其网络结构如图3所示,
Figure 3. Network structure diagram of MBConv
图3. MBConv网络结构图
由上图可以看出,该网络的输入经过主分支的1 × 1的卷积进行升维,后经过BN层加swish激活函数后进行逐通道卷积,所得到的特征经过SE通道注意力机制后通过1 × 1的卷积进行降维处理后经dropout比率为0.2的正则化,当输入与输出的shape相同时,则会出现对应的shortcut连接。
原YOLOv3网络在进行骨干网络特征提取时,需要执行5组残差块,且每组均含有一次步长为2的卷积操作,即Darknet-53进行了连续5次的下采样,其中将后3次下采样结果作为骨干网络的输出部分,传入到网络的特征融合部分中进行后续的特征处理。而EfficientNet-B1将输入图片传入进网络中也进行了5次步距为2的下采样处理,使得特征图的宽高得到了5次压缩。同理本实验将后3次特征图的压缩结果替代为原YOLOv3骨干网络的输出部分传入到网络的特征融合部分。
3.2. 特征金字塔结构的改进
原有的网络特征融合部分是将从骨干网络输入进来的三个不同尺度的特征图通过自下而上的特征金字塔结构进行网络特征融合,将深层的网络信息利用上采样和堆叠对整个金字塔结构语义信息进行增强,后续进行多尺度预测以得到良好的检测效果。原有的特征金字塔结构示意图如图4所示。
Figure 4. The original feature pyramid structure diagram
图4. 原有的特征金字塔结构图
为进一步提升网络性能,实验将注意力机制与特征金字塔结构融合,使网络聚焦于图片的有效区域,而不是关注图片内的所有像素点。注意力机制作为机器学习常见的数据处理方法,能有效的提升网络的聚焦能力,其中SENet [17],ECANet [18] 为常用的通道注意力机制,其网络结构分别如图5,图6所示。
在SENet中输入特征首先会逐通道经过全局均值池化,随后经过两层全连接层,最后经过Sigmoid非线性激活后产生每一通道的权重。这两层FC的作用就是捕获跨通道之间的非线性交互,可以有效降低维度,但降维不可避免会带来副作用,而且不利于捕获通道之间的依赖关系。ECANet在经过SENet的全局均值池化后,考虑到每个通道及其k个近邻,通过一维卷积快速完成通道权重的计算。k代表在一个通道权重的计算过程中参与的近邻数目,其大小影响ECA计算的效率和有效性。为此实验使用自适应函数用来计算k的值。
(1)
其中C为通道数,γ和b分别取2和1。
Figure 5. Network structure diagram of SENet
图5. SENet网络结构图
Figure 6. Network structure diagram of ECANet
图6. ECANet网络结构图
3.3. 边界框损失优化
交并比(IOU)是目标检测中最常用的指标,其作用不仅用来确定正样本和负样本,还可以用来评价预测框和真实框的检测效果。其公式为:
(2)
IOU是体现预测检测框与真实检测框的重合程度,但在网络训练中可能会出现预测框和真实框无重叠部分的情况,导致计算得到的IOU的值为0,影响网络训练中参数后续的学习,而且IOU也无法精确地反映两者的重合度大小。如下图7所示,三种场景下计算出的IOU都相等,但实际预测框的回归效果存在差异,且左边的预测框回归的效果最好,右边的最差。
Figure 7. Comparison diagram of the same IOU
图7. 相同IOU的对比示意图
CIOU作为一个优秀的回归定位损失不仅考虑了两框的重合面积,还将中心点坐标距离和长宽比也加入了定位回归的考虑因素中,使网络在训练时的边界框损失收敛速度和最终生成的模型性能都能得到一定的提高。其公式为:
(3)
上式中bp、bg分别代表了预测框和真实框的中心点,ρ代表的是计算两个中心点间的欧式距离,c代表的是能够同时包含预测框和真实框的最小闭包区域的对角线距离,α为权重函数,v是用来度量宽高比的一致性,两者对应的公式如下:
(4)
(5)
上式的wg,hg,wp,hp分别为真实框的宽高和预测框的宽高。CIOU对应的损失函数公式为:
(6)
3.4. 改进的YOLOv3网络结构
本文提出的改进后的YOLOv3算法如图8所示,以EfficientNet-B1替代原YOLOv3的骨干网络Darknet-53,将后三次下采样的结果40 × 52 × 52,112 × 26 × 26,320 × 13 × 13传入后续的特征网络结构中,通过ECANet和特征金字塔融合结构进一步提高网络模型性能,并采用CIOU作为边界框损失进行模型训练,完成网络反向传播和参数迭代更新。
Figure 8. The improved YOLOv3 network structure diagram
图8. 改进的YOLOv3网络结构图
4. 实验结果分析
4.1. 数据集建立和环境搭建
本文的数据集通过网络爬取的方式获得相应的数据集后经过清洗,筛选后共获得复杂场景下共7607张口罩数据集。采用Labelimg进行数据标注,在Ubuntu18.04的操作系统中进行训练,GPU为Nvidia RTX 3060,显存为12 G,CUDA版本为11.4,深度学习框架为pytorch 1.90。
4.2. 网络评价指标
本实验采取平均精度(Average Precision, AP),平均精度均值(Mean Average Precision, MAP)以及单张图片检测速度(Time)作为网络模型的评价指标。其中AP和MAP对应的公式为:
(7)
(8)
其中,N表示检测目标的类别数,平均精度可以通过P-R曲线,体现对应类别的查准率(Precision)和查全率(Recall)。其公式如下:
(9)
(10)
上式中TP表示正样本被模型预测为正样本的数量,FN表示正样本被预测为负样本的数量,FP表示负样本被模型预测为正样本的数量。
4.3. 实验结果及分析
实验在网络训练中以1:9的比例划分训练集和验证集,采用Adam优化器进行网络优化,共迭代500轮,模型训练时长为9小时,最终生成的AP曲线如下图9所示。
为验证本文算法的有效性,在现有数据集上采用消融实验得到的实验结果如下表2所示。其中,方法1为EfficientNet-B1网络替换原YOLOv3骨干网络Darknet-53后的实验结果,方法2是基于方法1后的特征金字塔结构改进后的实验结果,方法3即为本文算法,即在方法2的基础上对边界框损失进行优化。
由表2可以看出本文算法依次改进的有效性,本文算法模型对比原YOLOv3网络模型性能,在牺牲1.71%的检测精度下,参数量降为原YOLOv3的21%,且检测速度提升3.93倍,很好地平衡了模型的检测精度和实时性。图10为本文算法的实际部分测试图,可以看出本文算法在不同的复杂环境下均能有效检测出口罩的佩戴情况,同时体现了本文改进的可行性。
Table 2. Ablation experiment results
表2. 消融实验结果
为更好地验证本文算法的有效性,在相同的数据集下,与当前主流的SSD,YOLOv4目标检测算法进行检测精度和实时性的对比,实验结果如表3所示。
Table 3. Performance comparison of different algorithms
表3. 不同算法的性能对比
由表3可知,与当前主流目标检测算法相比,本文算法在性能的平衡上仍有着一定的优势,能更好地应用于复杂场景下的实时人脸口罩的检测。
5. 结论
本文提出了基于YOLOv3的轻量级口罩检测算法,以Efficient-B1替代原YOLOv3网络结构复杂的Darknet-53骨干网络,并将特征金字塔结构与ECANet结合,通过自上而下的特征信息融合以及通道注意力机制使网络训练时更加关注样本的有效区域,进一步提升模型性能,最后采用CIOU对原有的边界框损失进行优化。实验结果表明,本文算法与原YOLOv3相比,在降低1.73%检测精度的条件下,模型参数量降低了79%,检测速度提升了3.93倍。与当前主流算法对比,也存在着一定的优势。但本文算法模型仍存在一定的改进空间,如何在不降低检测精度的条件下更好地提升检测速度是下一步的研究重点。