基于改进YOLOv5的人脸口罩佩戴检测

2023-10-12 01:10李梦茹肖秦琨韩泽佳
计算机工程与设计 2023年9期
关键词:人脸口罩尺度

李梦茹,肖秦琨,韩泽佳

(1.西安工业大学 兵器科学与技术学院,陕西 西安 710021;2.西安工业大学 电子信息工程学院,陕西 西安 710021)

0 引 言

现阶段,针对人脸口罩佩戴检测任务的算法大多与目标检测算法通用,但是由于口罩佩戴检测环境复杂、目标密集、遮挡以及小尺度目标等问题,使得现有目标检测算法应用效果差强人意。因此许多国内外学者在现有目标检测算法基础上进行了大量研究并取得了大量成果。文献[2]针对口罩检测任务中特征提取不均衡和利用效率不够高的问题,将Max Module结构引入YOLOV4[3]的多尺度融合过程中,提出一种YOLOV4-tiny的轻量化网络,达到口罩佩戴检测的目的。文献[4]将优化的MobileNetv3作为主干网络,利用SPPNet和PANet优化特征提取网络进行人脸口罩佩戴检测。文献[5]在YOLOV3特征提取网络中引入注意力机制,实现了人脸口罩佩戴检测。文献[6]考虑到参数量以及经济适用,提出一种YOLOv5s轻量化算法,使口罩佩戴检测精度达到95%以上。文献[7]运用迁移学习和RetinaNet网络对人脸口罩佩戴检测,验证集下平均检测精度达到86.5%。上述研究均对人脸口罩佩戴情况进行检测,并取得了较好的检测精度。但并没有考虑到人流量较大的商场、车站等更加复杂的应用场景。

现阶段,目标检测算法主要有两类,一类是以Faster R-CNN[8,9]为代表的基于候选区域(region proposal network,RPN)的Two-Stage检测算法。另一类是以YOLO[10,11]系列和SSD系列为代表的基于回归的One-Stage检测算法。其中YOLOv5是目前YOLO系列中最SOTA(state-of-the-art)的目标检测模型,根据模型的深度和宽度不同,该网络分为YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x这4个版本[12],其中YOLOv5s因其最小的网络深度和宽度,使其在保证检测精度的同时具有较好的检测速度。本文考虑了复杂环境下人脸口罩佩戴检测任务中存在的目标密集、遮挡以及小尺度目标等问题,对YOLOv5s网络进行改进与优化,提出了一种复杂环境下基于改进YOLOv5的人脸口罩佩戴检测模型。

1 网络结构

1.1 YOLOv5网络结构

2020年,Ultralytics公司在YOLOv4基础上进行改进,提出了具有更高检测精度的YOLOv5检测算法,其网络结构如图1所示。主要由输入端、主干部分、颈部以及预测4部分组成。

图1 YOLOv5网络结构

其中输入端主要对输入图片进行预处理。主干网络通过Focus与Conv模块实现不同倍数的下采样,得到大小存在差异的特征图,然后将这些不同尺度特征图拼接融合,再与其初始特征相加,在确保速度的同时提升了感受野,便于提取最重要的特征,降低图片信息丢失的可能性,进而提高模型精度。颈部作为YOLOv5多尺度融合模块,主要通过将高底层特征信息进行传递,实现自顶向下、从下到上的简单信息融和,加强了不同尺度特征间的信息传播,同时准确保留了空间维度的信息,有助于高低层特征的互补,对像素进行适当的定位以形成掩模,从而有效解决多尺度问题。预测部分通过损失函数对模型中的分类、定位、置信度损失进行计算,以评判网络误测样本。

1.2 DenseNet网络

DenseNet(densely connected convolutional networks)[13]是密集型网络模型,具有L(L+1)/2个直接连接,其中每层的输入均为前面所有层输出结果的叠加,从而增加参数的重用性,防止过拟合现象的发生。该网络通过Concatnate操作保存复用大量的特征信息,主要由多个Dense block组成,其网络结构如图2所示。

图2 Dense block的结构

其中,X0为第0层的输入特征图,H为每层特征图进行拼接,由批量标准化(BN)、线性整流函数(ReLU)、卷积3种操作对应的非线性转化函数,H1的输入为X0,H2的输入为X0和X1,X1为H1的输出,经l次的非线性转化函数后,最终得到的Xl可表示为

Xl=Hl(Xl-1)=Hl[X0,X1,L,Xl-1]

(1)

DenseNet网络的密集连接(dense connection),在解决梯度消失同时加深网络层数、减少了网络参数。

2 相关工作

YOLOv5检测算法由于检测速度与精度的优势被许多学者关注,并且其各部分技术相较于其它One-Stage算法也比较成熟,加之YOLOv5s本身已具有工程意义,故将其作为本文检测模型的基础网络是可行的。但根据现有研究和应用情况,想提高实际场景下的检测准确率,仍需对YOLOv5s改进。本文针对商场、车站等人流量较大的复杂环境,以YOLOv5s模型为基础,对Backbone、Neck和损失函数几部分进行改进,完成人脸口罩佩戴的实时检测。

2.1 主干网络改进

相比其它检测目标,人脸口罩目标尺度小且所在环境复杂,而原YOLOv5s主干网络主要采用BottleneckCSP模块对目标特征进行提取,由于该操作减少了训练过程中的特征映射,因而对目标特征提取能力有限;并且在卷积和降采样过程中,训练样本中一些重要的特征信息可能会丢失。为此,本文将改进DenseNet网络引入主干部分,形成一种能保证检测任务速度并进一步提高检测精度的CSPDenseNet模块,该模块如图3所示。首先针对DenseNet网络的冗余连接而导致的速度较慢问题,本文采用剪枝策略对模型中贡献不大的卷积层进行裁剪,在不损失目标关键特征信息的情况下实现较小的计算代价,得到较少参数的人脸口罩检测模型的主干网络;然后将CBAM(convolutional block attention module)[14]模块嵌入剪枝后的DenseNet网络,使模型更易聚焦目标关键特征、抑制无关背景特征,提高网络提取口罩特征的能力;最后将该部分与改进后CSP模块结合,形成改进后的主干网络CSPDenseNet网络,将其生成特征送入特征融合网络。

图3左上是CBAM模块网络结构,它是一种针对特征图进行操作的轻量级的卷积注意力模型,它旨在使用注意力机制增加表现力[14],使网络可以“有区别”的对目标进行检测,以达到关注重要特征抑制不必要特征的目的。此外,对于给定的任一中间特征图,都会从通道和空间两个维度依次推断出注意力图,然后通过自适应特征优化将注意力图与输入特征图相乘。通道注意力与空间注意力作为卷积注意力机制的核心,在不同维度上对特征图进行高效融合,使得CBAM提取到更加精炼的特征,从而提升网络的性能。

图3右上是改进后YOLOv5s模型主干的组成之一CSP1_X,它借鉴了CSPNet[15]结构。输入特征图在通道维度被分为两个部分,一部分被保留下来,另一部分则经过多个残差块向后传递,最后将两者在CSPNet结构的末端进行合并。但由于被保留的卷积部分不承担主要的特征提取作用,并且通常包含很多冗余信息,因此本文考虑引入Ghost模块,压缩参数的同时减少了信息冗余,提高重要信息的提取效率,降低了网络中的数据传递量与计算量。

2.2 特征融合网络改进

为了将图像中提取的不同尺度特征合并成一个更具有判别能力的特征,针对不同的应用场景,现有目标检测网络提出了不同的特征融合方式。而YOLOv5s特征融合网络为PANet[16],它是在FPN[17]基础上直接增加了反向的融合路径,将包含较清晰的位置信息的浅层网络与包含丰富语义信息的深层网络充分融合,增强了不同大小目标间的适应性,同时生成3种高级语义信息,以计算损失,从而提取到更加丰富的ROI特征,增强网络中语义信息。

在人脸口罩佩戴检测任务中,存在小尺度目标和目标遮挡等问题,使得目标特征差异小,需要利用更多的目标特征信息。本文针对上述问题对PANet网络进行了改进,增加1个4倍降采样特征图作为特征融合网络的输入,并对不同尺度特征图进行跨级连接,提高不同尺度间信息交流,从而改善模型对小尺度信息的融合能力,以便学习到更多小尺度目标特征,从而提高模型对小目标和遮挡目标的检测能力。改进后PANet网络结构如图4所示。

图4 改进后PANet网络结构

图4中152×152、76×76、38×38、19×19表示对特征图进行4倍、8倍、16倍、32倍下采样后得到的不同尺度特征图,PANet网络通过将这些不同尺度特征图经过自上而下和自下而上的路径增强方式进一步提高特征信息的利用率,增加了网络宽度,提高了网络传输灵活性和专一性,加强了特征金字塔的特征融合能力。

2.3 损失函数改进

模型损失函数是由分类损失(classification loss)、定位损失(localization loss)和目标置信度损失(confidence loss)组成的深度神经网络误测样本评判依据[18]。为提高模型的收敛效果,选择合适的损失函数是至关重要的。YOLOv5模型使用GIoU_Loss[19]计算边界框回归损失,在进行类别预测时,通过多个独立的逻辑(logistic)分类器计算输入属于某一类特定标签的概率,而每个标签所使用二元交叉熵损失函数,使计算更加精简。YOLOv5损失函数GIoU_Loss如式(2)

(2)

GIoU_Loss关注了重叠区域和非重叠区域,很好反应了预测框与真实框的重合度。但对小尺度目标进行检测时,真实值与预测值仍存在较大误差。

针对上述问题,本文在GIoU_Loss的基础上将宽高比与中心点距离作为考虑,选用CIoU_Loss[20]作为改进后边界框回归的损失函数,将预测框与真实框之间的距离最小化,加速模型收敛速度,同时添加影响因子,进一步提升回归精度。改进前后损失函数如图5所示。

图5 改进前后损失函数对比

根据图5对改进后损失函数进行约束,得到CIoU_Loss如式(3)、式(4)

(3)

(4)

其中,α是平衡比例的参数,v是描述预测框和GT框长宽比的比例一致性的参数,其中w、h分别表示预测框宽高,wgt、hgt分别表示GT框宽高。

上述公式描述了CIoU损失函数的计算方式,CIoU_Loss的引入会促使预测框往重叠区域增多的方向进行移动,尤其是IoU=0的时候,CIoU通过使用参数v对w的求偏导数优化损失,偏导数公式如式(5)

(5)

在上式中,为了使函数能够稳定收敛,实际中步长w2+h2一般取1。

损失函数的改进,使得预测框与真实值之间的误差更小,进一步优化网络模型,实现复杂环境下对人脸口罩佩戴的实时准确的检测。

3 改进的YOLOv5模型

3.1 改进YOLOv5网络结构

本文通过对YOLOv5s模型的Backbone、Neck及损失函数3部分改进,得到网络结构如图6所示。将608×608×3大小的输入图像送入Backbone,经过下采样得到不同尺度的特征图,再利用PANet网络以双向融合的方式将不同尺度特征信息充分融合,得到4种不同尺度的新特征图,最后通过1次CSP2_X和1次普通Conv(3×3)对通道进行调整预测,得到152×152、76×76、38×38、19×19大小的4尺度检测网络。具体网络结构参数见表1。其中来源列的-1指输入来自上一层输出。

表1 改进后的网络参数

图6 改进的YOLOv5网络结构

3.2 改进YOLOv5算法实现

本文算法主要是以YOLOv5s为基础,展开本文算法的研究。本文算法的实现流程见表2。

表2 本文算法实现流程

4 实验与结果分析

4.1 数据集

由于目前已开源的口罩检测数据集较少,因此本文从WIDER FACE、MAFA(masked faces)[21]和RMFD(real-world masked face dataset)[22]3种数据集中筛选2600张复杂环境下人脸照片和3364张人脸佩戴口罩照片,此外,收集了新冠疫情以来的各个人流量密集场所照片2211张。将这8175张照片作为本文的数据集,并对其进行手工标注。数据集一共包括3种类别:face_mask、mistake_mask、face。其中face_mask表示正确佩戴口罩,mistake_mask 佩戴口罩但佩戴不规范、face表示未佩戴口罩。对自建数据集进行分析,得到可视化结果,如图7所示。

图7 数据集分析

图7(a)表示数据集类别分类,图7(b)表示物体中心点位置的分布,其中x、y是指中心点的位置,颜色越深代表该点位置目标框的中心点越集中,图7(c)物体大小的分布,其中width、height分别代表图片中物体的宽高。

表3 数据集划分

4.2 Mosaic数据增强

Mosaic数据增强是YOLOv4、YOLOv5独有的数据增强的方式,是在CutMix[23]的基础上提出的一种数据处理方式,其在CutMix的基础上,选用4张图片随机裁剪、排布和缩放进行拼接。本文数据集经过Mosaic数据增强后的图片如图8所示。

图8 Mosaic处理后的图片

以Mosaic数据增强方式对数据预处理,增加了小目标数量,丰富检测数据集,同时提高了网络鲁棒性。而且经过Mosaic数据增强后的网络可以一次性计算4张图片的数据,从而对Mini-batch的需求降低,即batch-size的初始设置值在比较小的情况下也可以保证检测结果的精确度。

4.3 实验环境与结果评价

实验所用设备配置为Nvidia GeForce RTX 2080Ti显卡、Intel(R)Xeon(R)Silver4110CPU处理器,在Ubantu18.04LTS虚拟操作环境上进行实验。模型的搭建、训练和结果的测试均在Pytorch框架下完成。

类似于其它检测算法,衡量本文模型的指标主要有以下几个:

(1)精确率(Precision),即查准率:是预测正确的正样本占所有检出样本的百分比例,是针对预测结果而言的

(6)

式中:TP为检测到的目标类别与真实目标类别一致的样本数量,FP为检测到的目标类别与真实目标类别不一致的样本数量。

(2)召回率(Recall),即查全率:被正确预测的正样本占所有正样本(Ground Truth)的比例,是针对原样本而言的

(7)

FN表示真实目标存在但未被检测出的样本数量。

(3)平均精度(Average Precision,AP):精确率-召回率曲线(P-R曲线)下方的面积即为某一类别的AP值

(8)

式中:N表示所有目标类别的数量。

(4)平均准确率均值(mAP):对每个类别的AP求平均

(9)

(5)为确定人脸口罩佩戴检测是否达到实时检测的检测速率,本文选用FPS (frames per second)作为改进后模型的衡量指标,FPS指的是指目标检测网络每秒能够检测的图片数量(帧数)。

4.4 模型训练

本文对Pytorch框架下修改的网络模型训练时,初始加载的预训练权重是YOLOv5算法在VOC2012数据集上训练得到的,之后通过迁移学习对本文自建数据集进行训练。为保证模型最佳性能,本文将迭代次数设置为200次,batch size为16,初始学习率为0.0005,每5步降低一次,同时以SGD优化器进行优化,图9反映了迭代后网络的CIoU_Loss、Object_Loss以及cls_Loss,可以看出,随着迭代次数的增加,模型的损失值慢慢趋于稳定,达到最优状态。

图9 迭代后网络损失

4.5 实验结果分析

4.5.1 本文算法与其它算法结果对比

为验证本文算法的有效性,将Faster RCNN、SSD、RetinaFace、Attention-RetinaFace、YOLOv5等经典网络与本文算法进行对比,所有实验在相同硬件配置的情况下针对相同的数据集进行测试,所有模型所使用预训练权重均来自该模型在VOC2012数据集上预训练所得。不同算法的实验结果使用mAP@0.5、AP以及FPS这3项评价指标进行评价,具体见表4。

表4 不同算法的性能比较结果

从表4中可以看出,相较于其它算法,本文算法在复杂环境下的检测精度更高,mAP值可达97.8%,对不同标签的AP值也达到95%以上。本文算法虽满足实时性要求,但检测速度仅为32.4帧/s,逊于轻量级SSD算法。不同算法在人脸口罩数据集上的mAP对比结果如图10所示。

图10 不同算法在人脸口罩数据集上的mAP对比

为了更加直观的显示不同算法之间的区别,本文对稀疏人脸、侧面人脸、密集人脸、密集遮挡人脸和小尺度人脸5种情况下的人脸口罩佩戴情况进行了对比分析,本文算法与Faster RCNN、SSD、RetinaFace、Attention-RetinaFace、YOLOv5等算法检测效果对比如图11所示。

图11 不同算法的检测结果对比

从图11可以看出,在稀疏和侧脸场景下,所有算法都可准确识别人脸口罩佩戴情况,但相较而言,本文算法对各类标签的检测准确度更高,基本达到95%以上;在密集人脸口罩佩戴检测场景中,其它算法均存在误检漏检情况,而本文算法中此类情况少有发生,并且从图11密集目标的检测中可明显看出,对已检测出的目标,本文算法具有更高的准确率;在密集遮挡人脸检测场景中可知,本文算法相对其它算法漏检率较低,对于存在较大面积遮挡的人脸口罩佩戴也可以准确识别。同时已检测到的目标检测准确率有明显提升;针对小尺度人脸口罩佩戴情况检测时,明显可知,Faster RCNN、SSD、YOLOv5算法存在严重漏检情况,本文算法与Attention-RetinaFace算法都能较好的检测出人脸口罩目标,但本文算法仍存在少许漏检现象,但对已检测到的目标检测准确率更高,基本达到90%以上。

综上所述,相较于其它检测算法,本文算法在各种场景中的人脸口罩佩戴情况检测中误检漏检率明显降低,检测准确度更高,检测效率更好。

4.5.2 消融实验

为进一步分析改进后模型对YOLOv5模型的影响,通过构建消融实验分析改进后各结构对整个网络的影响,本文将改进的算法分成8组分别进行训练,改进后各部分对模型的影响具体见表5。(其中“√”表示加入该部分,“×”表示不加入该模块)

表5 消融实验结果对比

由表5可知,针对人脸口罩佩戴检测的自建数据集,实验1中的YOLOv5模型的mAP值为95.3%,FPS为45;实验2引入了DenseNet网络,相比于实验1,其mAP值提升了0.6%,但FPS下降了5.8,造成这一变化的主要原因是DenseNet的引入增加了内存的消耗,但是提高了模型对目标关键特征信息的利用率,从而提高了检测精度;实验3主要对改进后DenseNet网络的效果进行了分析,由结果可知,改进后DenseNet网络相较于原DenseNet网络mAP值增加了1.4%,FPS相较于实验2也有所提升,这是因为嵌入CBAM模块的DenseNet网络在提高目标重要特征信息利用效率的同时提升了网络对重要信息的关注,抑制了不必要特征信息,使模型可以准确定位到待检测目标,从而提高了网络的检测精度,此外,ghostconv的引入使得网络的检测速度有所提升;实验4主要对改进后的PANet网络进行有效性分析,实验数据表明,对PANet网络的改进使模型的mAP值增加了1.1%,发生这一变化的原因是改进后的网络对接近原始图像的特征信息进行了考虑,增强了多尺度信息的交流,提高不同尺度信息交互融合效率,对小尺度目标和被遮挡目标检测精度更高。实验5对YOLOv5模型改进损失函数前后mAP值进行了对比,发现改进后模型的mAP值增加了0.3%,主要原因在于改进后的损失函数增加了中心点与宽高比的约束,降低了真实值与预测值之间的误差,从而提升了模型准确率;实验6的mAP值比实验3提高了1%,但FPS值减少了2.5,验证DenseNet模块和PANet模块的改进在略微牺牲检测速度的情况下增强模型的学习能力;实验7在实验3的基础上对损失函数进行了替换,mAP达到96.7%,但FPS降低为39.3;实验8在为本文算法,在实验7的基础上改进了多尺度PANet模块,此模块的改进减慢了检测速度但检测精度提高了1.1%。

通过对消融实验分析发现,随着各模块的叠加,改进的网络性能并没有阶段性的提升,而是在上一个改进的基础上使网络性能小幅度增加,通过对YOLOv5模型的Backbone以及Neck网络的逐步改进,模型的检测性能也随之提升。综上,针对不同场景下的人脸口罩佩戴情况,本文提出的改进策略能够提升模型的检测效果,具有实际意义。

5 结束语

为解决复杂环境下人脸口罩佩戴检测任务,本文以YOLOv5s模型为基础,提出了一种复杂环境下基于改进YOLOv5的人脸口罩佩戴检测模型。实验通过8000多个样本对模型训练结果表明,本文所提网络在达到实时性的同时,有效提升了人脸口罩佩戴检测精度,平均精度均值达到97.8%。但在测试实验中发现,在严重遮挡、人脸模糊以及人脸尺度过小等情况下的检测效果仍存在误检漏检和检测精度低的问题,在后续的研究中,将增加上述情况下的图像数据,并对模型进行优化,减少网络计算量提高人脸口罩佩戴检测精度和速度。

猜你喜欢
人脸口罩尺度
有特点的人脸
财产的五大尺度和五重应对
戴口罩的苦与乐
因为一个口罩,我决定离婚了
雾霾口罩
三国漫——人脸解锁
宇宙的尺度
马面部与人脸相似度惊人
9
长得象人脸的十种动物