APP下载

基于残差结构的SSD口罩检测

2022-01-09董艳花张树美赵俊莉

计算机技术与发展 2021年12期
关键词:残差特征提取人脸

董艳花,张树美,赵俊莉

(青岛大学,山东 青岛 266071)

0 引 言

2019年12月以来[1],全球爆发了新型冠状病毒肺炎(COVID-19)疫情,由于该病毒可以通过接触或者空气中的飞沫、气溶胶等载体进行传播,具有极强的传染性,所以在国家卫生健康委员会发布的《新型冠状病毒感染肺炎预防指南》的强调下,人们外出时需通过正确佩戴口罩、勤洗手等措施进行有效防护,从而降低被病毒传染的机率[2]。而且专家们预估此病毒在短时间内不会消亡,也许会长期伴随人类生存,在有效的疫苗批量生产之前,尤其在如今出现“环境传人”的情况下,为了进一步防范病毒传播,佩戴口罩外出公共场所是每个人应尽的义务,需要个人自觉遵守,也需要一些设备进行强有力的监督和管理人们是否佩戴口罩,所以目前对有口罩遮挡的人脸进行口罩检测的研究迫在眉睫。

近年来随着深度学习和神经网络的快速发展,虽然还没有专门针对口罩检测的算法,但基于深度学习的目标检测方法在医学影像检测、遥感图像检测、车辆检测及文本检测等领域都有着广泛应用[3-10]。目前基于深度学习的目标检测方法主要包含两类。其中Two-stage是先由算法生成一系列作为样本的候选框,再通过卷积神经网络进行样本分类。例如,Girshick等人[11]为了解决特征提取重复计算的问题,提出一种基于快速区域的卷积神经网络(fast region-based convolutional network,Fast R-CNN)方法,巧妙地将目标识别与定位放在同一个CNN中构成Multi-task模型,相比于R-CNN,Fast R-CNN不仅提高了训练和测试速度,同时提高了检测精度。随后针对基于深度学习的目标检测框架能不能把潜在候选区域的提取纳入CNN框架内这一问题,Ren等人[12]提出Region Proposal Network,将潜在的候选区域提取纳入CNN框架内,与检测网络共享整张图片的卷积特征,节约计算成本,且解决Fast R-CNN算法生成正负样本候选框速度慢的问题,同时避免候选框提取过多导致算法准确率下降的问题。虽然Two-stage目标检测算法有较高的检测率,但其检测速度却很低,所以目前针对另一类目标检测算法One-stage的研究得到广泛关注,该类算法直接将目标边框定位的问题转化为回归问题处理,不需要生成候选框阶段,比较经典的算法有Redmon等人[13]提出的YOLO(you only look once)目标检测算法,可以一次性预测多个回归框位置和类别,极大地简化了目标检测的流程,将检测速度提升到了58.5帧的实时检测水平。但由于丢弃了候选区域生成这一步骤,导致检测精度不是很高,为了兼顾检测精度和速度,Liu等人[14]提出了基于全卷积的单一网络SSD(single shot multibox detector)的目标检测算法,用不同尺度和长宽比进行抽样,并利用CNN提取不同尺度的特征图后直接进行类别判定和位置回归,减少了训练参数,提高了检测速度并解决多尺度检测问题,使得SSD成为目前目标检测的常用方法。但SSD对小目标的检测效率很低,主要由于SSD前几层的特征图较大,语义信息却不够,后面层的语义信息足够,却因经过太多的池化层,造成后面的特征图太小,而人脸检测属于密集小目标检测,需要足够大的特征图来提供更加精细的人脸特征,并进行更加密集的采样,同时需要足够的语义信息来与背景区分开,才能实现高效的人脸检测。针对该问题,杨少鹏等人[15]提出一种基于特征图融合的小尺寸人脸检测方法,通过合理选择不同的待检测特征图,检测不同大小的人脸,然后将较深的特征图和较浅的特征图进行融合,合理地引入上下文信息,从而提高小尺寸人脸的检测精度。

通过上述对目标检测相关算法的研究,发现SSD网络在目标检测精度和速度上都优于Faster R-CNN和YOLO。因此,文中利用SSD进行人脸佩戴口罩的检测。但SSD网络较低的特征层需要同时学习局部信息和高层信息,这种双重任务会增加训练学习的难度,降低检测精度。所以为学习高层的有效特征,文中利用残差网络“跳线”的特征对SSD进行改进,提出了一种基于深度残差的SSD网络,将局部信息和高层信息两种学习任务加以区分,对整张人脸图像进行特征学习,实现快速精准的口罩检测。

1 基于残差结构的SSD口罩检测

传统SSD是一种以VGGNet为基础网络的端到端的目标检测神经网络,其借鉴了Faster-RCNN的多尺度滑框和YOLO网格离散化的思想,在不同层的特征图上进行不同尺度目标的预测,在PASCALVOC数据集上达到了与Faster RCNN一致的检测精度(77.2%);比YOLO的检测精度高13.8%;又通过神经网络的各层特征之间的上下层的连接关系,对图片仅进行一次前向传播提取特征,就可以快速准确地检测多个不同尺度的目标,达到YOLO的检测速度,其网络结构如图1所示。

图1 SSD网络结构

通过图1可以发现,SSD将VGG16的最后两层全连接改成3×3和1×1的卷积层进行特征提取,即Conv6层和Conv7层。在检测时使用Conv4_3,Conv7,Conv8_2,Conv9_2,Conv10_2,Conv11_2这些大小不同的特征层同时进行Softmax分类和位置回归,并对这6个特征图设置不同的尺度或者不同的长宽比进行预测,预测的边界框都是以先验框为基准,在一定程度上减少了训练难度。但SSD在低层特征提取时需要维护低层局部信息,又要学习高层次的抽象信息,将会引发SSD双重任务学习问题,进而增加该网络模型的训练学习难度,导致其检测识别口罩的精度出现退化。而He等人[16]提出的深度残差网络,通过“跳线”的方式解决了浅层网络无法提高网络的识别精度及网络加深时出现梯度消失或爆炸等问题。该网络一般由一系列残差块组成,残差块包含直接映射部分和残差部分。假设一般的卷积神经网络将输入的x学习到的特征记为H(x),而残差网络希望学习的残差为F(x)=H(x)-x,所以原始的学习特征是H(x)=F(x)+x。该网络通过在2个或3个卷积层之间添加“跳线”的方式实现F(x)+x,这样可以学习到相邻层网络的残差,并将低层特征映射到叠加层与高层特征相加作为输出,这样就避免了在层层映射过程中,由于权重过小导致梯度消失的现象,形成的双分支或三分支结构可以有效提升网络训练速度,其结构如图2所示。

图2 残差块结构

SSD利用多尺度的思想提高了检测精度和速度,成为目前最常用的目标检测网络,但该网络同时存在双重任务学习导致检测精度退化的问题。所以该文受残差网络的启发,对SSD进行改进,提出一种基于残差结构的SSD网络(residual single shot multibox detector,ReSSD),实现人脸口罩检测。其网络结构如图3所示。ReSSD整个网络包含特征提取及检测网络、残差块、分类定位层和非最大值抑制(NMS)四部分。

图3 ReSSD口罩检测网络

因为经典SSD使用VGGNet多层卷积层来检测目标会导致图像分辨率显著降低,但无法准确检测到图像中的小目标,所以ReSSD网络先以4个3×3的卷积做串联进行特征提取,防止图像分辨率下降,并在前三个卷积层后分别添加2×2且strid=2的最大池化层进行下采样,实现人脸口罩图像降维、冗余信息的去除,然后输出一个特征图,用来检测图像中的小目标,再通过增加5个3×3的卷积做特征提取,分别输出5个特征图。由于6个不同尺度的特征图包含不同的语义特征和位置敏感性,所以ReSSD网络利用6层不同大小的特征图做口罩检测,保证了主干网络能充分提取特征的能力,然后在6个特征图进行分类定位前添加残差块,使特征提取网络和分类定位层进行分离,进而使得进入分类定位层的卷积特征更加抽象,能有效避免网络退化现象,解决深层网络训练时梯度消失或梯度爆炸的问题,并维护了特征提取网络的稳定性,促使ReSSD网络的检测精度得到一定的提升。其残差单元结构如图4所示。

图4 残差单元结构

为了防止分类定位层的梯度直接倒流回特征提取网络,图4的残差单元结构中每个卷积层后都添加了一个BN层和ReLU非线性激活函数,并利用两个1×1的卷积用来改变卷积特征图的通道数。和3个连续的3×3的卷积相比,该结构可以节省网络参数,减少计算量,提高ReSSD人脸口罩的检测速度。

为提高ReSSD网络的训练速度和检测效率,文中优化了经典的SSD位置误差和置信度误差损失函数,利用交叉熵损失函数解决戴口罩和未戴口罩的二分类问题,并利用smooth L1 loss损失函数解决口罩位置的回归问题,然后将分类和位置回归做加权计算,并将损失平衡权值参数λ设为0.2,实现人脸佩戴口罩特征和人脸未戴口罩特征的定位和分类。总的损失函数表示为:

(1)

最后ReSSD网络经过定位和分类层后,同一张人脸口罩图片或人脸图片会产生大量存在重叠的预测边框,每个预测框都有一个置信度得分,通过引入非极大值抑制并设定预测框和标注框的交叠率(intersection-over-union,IoU)阈值为0.5进行匹配,可以准确定位到检测目标的位置,具体流程如下:(1)将每个预测框按照置信度得分从大到小排序,选中置信度最高的预测框;(2)遍历其余的预测框,如果和当前置信度最高的预测框的IoU小于设定的阈值,便将其从预测框列表中删除;(3)从未处理的框中继续选择一个得分置信度最高的预测框,重复操作上述过程,直到没有满足条件的预测框为止。NMS该流程实现在众多预测框中去除多余框,从而找到人脸口罩的最佳位置。非最大抑制示例图如图5所示,对输出的3个预测框进行排序{0.758,0.786,0.931},以0.931作为检测到的人脸口罩框,计算其余的框与该框的IoU,从而排除0.758和0.786两个预测框,得到右图最终的口罩检测结果。

图5 非极大值抑制示例图

2 实验结果与分析

2.1 实验数据集

由于今年全球新型冠状病毒肆无忌惮地传播,人们出行必须佩戴口罩进行防护,为以后国内外人员研究人脸口罩提供便利,武汉大学国家多媒体软件工程技术研究中心经网络爬取,整理清洗和标注处理等过程,制作了真实口罩人脸识别数据集RMFD。该数据集包含525人的5千张口罩人脸和9万张不戴口罩人脸,分别存放在各自名字的文件夹下。文中采用RMFD,选择其中120人对应的戴口罩和不戴口罩图片,其中不戴口罩的图片相对充足,但图像尺寸不统一或姿态多样性不利于实验的模型训练,且戴口罩的数据相对较少,所以需要对这120人的人脸数据进行批量数据增强,通过水平翻转、随机裁剪、多尺度及颜色渲染等方式,最后分别得到每人300张无口罩遮挡图片和300张戴口罩图片用于实验,从而提高人脸口罩识别的精度和泛化能力。选择数据集的80%做训练集,剩余20%做测试集,数据增强示例图如图6所示。

图6 数据增强

文中所有算法均在Windows10 64位操作系统下基于Tensorflow深度学习框架用Python语言编写,另外使用CUDA10.0版本的GPU加速器,在训练模型时均采用随机梯度下降(stochastic gradient descent,SGD)优化模型。

2.2 实验结果分析

(1)ReSSD口罩检测结果分析。

文中使用目标检测中的平均精度AP(average precision)、平均精度均值mAP(mean average precision)及每秒运行帧率FPS(frame per second)来客观评价ReSSD对口罩检测的效果。其中mAP是目标检测中最常见的评价指标,mAP的值是由准确率和召回率(precision-recall,p-r)的相关曲线来决定的,p-r曲线包围的面积兼顾了p和r两方面因素,能全面客观地评价某类检测器的精度表现。该指标就是多类别检测下对AP取平均值,上述指标公式为:

(2)

(3)

(4)

其中,tp是正确检测到的目标数量,fp是错误检测到的目标数量,fn是漏检的目标数量。文中根据正确检测正样本的检测率和被错误检测到的正样本数量的关系绘制出了ROC曲线图,用来表示ReSSD和SSD分别对口罩检测的性能,如图7所示,其中横坐标由被错误检测的正样本数量表示,纵坐标由正确检测正样本的检测率表示。

图7 ROC曲线

由图7可知,被错误检测的正样本数量低于100时,ReSSD和SSD对口罩的检测效率不相上下,而样本数在100~500之间时,ReSSD和SSD口罩检测率都持续增长,但ReSSD均明显优于SSD,当样本数达到500时,ReSSD和SSD的口罩检测率趋于平稳,但ReSSD检测率达到0.9以上,而SSD检测率在0.8附近。综上所述,ReSSD对口罩的检测性能相比于SSD对口罩检测的性能更优。

基于平均检测精度、平均精度均值及运行帧率评价指标,将提出的ReSSD网络进行实验和评估,设置IoU为0.4,对输入260×260图像进行模型训练。为对比分析,对SSD在相同数据集下也进行实验,经迭代50 000次后的检测效果对比如表1所示。

表1 ReSSD与SSD检测效果对比 %

由表1可知,加入残差结构的ReSSD的确能提升传统SSD模型对口罩的检测精度及速度。其中ReSSD对没戴口罩的检测AP比SSD提高2.7%,对戴口罩的检测AP比SSD提高12.1%,mAP也提高了7.4%,这主要得益于深度残差结构比普通的卷积结构具有一定的优势。由于深度残差结构使用“跳线”连接,使ReSSD网络中比较靠前的特征图能够学习局部特征传输给下一层级的特征图,也能学习高级特征用于检测,该“跳线”方式能够将网络的高一级特征和低一级特征进行简单的融合,使网络训练学习时不会造成梯度消失,从而使学习到的参数更加有效,促进ReSSD在口罩检测精度上的提升。从运行帧率的对比也能发现,ReSSD比SSD提高了1.4%,表明ReSSD在网络结构上虽比SSD复杂,但并没有影响其检测速度,意味着ReSSD网络比SSD更具优越性。

为更加直观地感受ReSSD对口罩识别的有效性,利用图8展示了ReSSD口罩检测识别的示例图,其中(a)(b)(c)分别是同一人的人脸图片、人脸口罩图片和非口罩遮挡的人脸图片及其检测效果,并给出戴口罩和没戴口罩的识别准确度。可以看出,ReSSD不仅可以高效地识别人戴没戴口罩,而且针对非口罩遮挡人脸也可以有效识别出没戴口罩。

图8 人脸口罩检测识别示例图

(2)ReSSD在自然场景下的口罩检测实验。

为了验证ReSSD的泛化能力及实用性,文中在自然场景下进行口罩检测的实验,通过网络爬取自然场景下的人脸图片,将其尺寸统一裁剪为500×400,实验结果如图9所示。

由图9可知,在人脸图像存在倾斜或不同光照影响下,ReSSD对人脸是否佩戴口罩均能够高效率地检测出来,表明该方法不仅仅在测试数据集下可以获得显著的检测效果,在自然环境下仍可以获得有效的检测结果,体现了ReSSD较强的泛化能力。

(a)正面人脸口罩检测

(b)无口罩遮挡人脸检测

(c)暗光下人脸口罩检测图9 自然环境下口罩检测效果图

3 结束语

通过改进SSD目标检测网络,提出一种基于残差结构的SSD网络用来检测人脸口罩佩戴情况。该方法通过添加残差块,使特征提取网络和分类定位层进行分离,有效地解决SSD局部信息和高层信息学习的双重任务及深层网络训练时梯度消失或梯度爆炸等问题,同时维护了特征提取网络的稳定性。实验结果表明,残差结构网络在人脸戴口罩和没戴口罩的情况下能够有效检测,平均检测精度达到92.3%,运行帧率为39.2%,且非口罩物体遮挡嘴部情况下,该网络同样能高效地识别出该人脸未戴口罩,证明了该网络在检测口罩上的优越性。同时,该网络在自然场景下进行口罩检测也获得了显著效果,证明了该网络的有效性。但是人脸图像存在严重倾斜或光线遮挡时,该网络会出现漏检或错检的情况,所以未来仍需加强对网络的性能优化,提高其检测精度。

猜你喜欢

残差特征提取人脸
同步定位与建图特征提取和匹配算法研究
多级计分测验中基于残差统计量的被试拟合研究*
基于残差-注意力和LSTM的心律失常心拍分类方法研究
用于处理不努力作答的标准化残差系列方法和混合多层模型法的比较*
融合上下文的残差门卷积实体抽取
玻璃窗上的人脸
智力考场:有趣的图片测试
基于MED—MOMEDA的风电齿轮箱复合故障特征提取研究
基于曲率局部二值模式的深度图像手势特征提取
“领家系”可爱脸VS“高冷系”美人脸