多注意力机制的口罩检测网络

2021-03-31 03:48余阿祥李承润于书仪李洪均
关键词:人脸精度注意力

余阿祥,李承润,于书仪,李洪均,2

(1.南通大学信息科学技术学院,江苏 南通 226019)(2.南京大学计算机软件新技术国家重点实验室,江苏 南京 210023)

新冠肺炎具有极强的传染性[1],可通过呼吸道飞沫、气溶胶和接触传播,病毒能在自然环境下存活 5 d[2],公共场所佩戴口罩成为抑制病毒传播的必要手段. 在国家卫健委发布的《新型冠状病毒感染肺炎预防指南》中明确要求,个人外出前往公共场所、就医和乘坐公共交通工具时需要佩戴口罩. 贯彻落实佩戴口罩的相关规定不仅需要个人自觉遵守,也需要采取一定的手段加以监督.

考虑到口罩检测和目标检测具有很强的相似性,首先对现有的目标检测模型进行研究. Girshick等在2014年提出了R-CNN[3],将神经网络用于目标检测,真正实现了将检测任务转换为分类任务;检测算法的主流也由传统模型转为卷积神经网络模型,检测的平均精度均值得到了巨大的提升. 随后,Girshick等又在2015年相继提出Fast R-CNN[4]和Faster R-CNN[5]. 与R-CNN相比,Fast R-CNN在最后一层卷积层后加了一个 ROI(region of interest)池化层;损失函数使用了多任务损失,将边框回归直接加入到CNN网络中训练. Faster R-CNN创造性地采用卷积网络自行产生建议框,并和目标检测网络共享卷积网络,省去了选择性搜索生成候选框环节,使得算法的速度得到很大的提升,但仍达不到实时检测的效果. Redmon等提出的YOLO算法[6]是首个单阶段目标检测算法,YOLO将目标检测问题看作是一个回归问题,直接从图像像素信息得到边界框的位置和类别概率,速度快,但准确率较低. 随后Liu等提出SSD算法[7],利用不同尺度的特征图进行分类预测和回归预测,在保证准确率的同时,可达到实时检测. 接着,Redmon等又相继推出了YOLOv2[8]、YOLOv3[9],通过不同的改进使得模型精确度得到了更好的提升. 2017年Lin及其团队提出用Focal Loss替换交叉熵损失来提高检测精度[10],很好地改善了单阶段目标检测算法正负样本不均衡问题,使得RetinaNet的精度超越了Faster R-CNN的目标检测算法. 2019年,Tan等人在EfficientNet[11]的基础上,提出了名为EfficientDet[12]的一种新的目标检测系列,EfficientDet采用一种复合缩放的方法来缩放网络的宽度、深度和分辨率,其参数少,所需要的计算资源少,速度快,准确率高.

考虑到佩戴口罩检测需要在自然场景下运用,人与人之间的重叠程度高,人脸区域模糊,本文在 EfficientDet 的基础上加入多尺度注意力机制,以便更好地挖掘戴口罩人脸的特征,进而提高人脸佩戴口罩的检测准确度. 同时,利用柔性非极大抑制的方法消除多余检测框,避免重叠人脸检测框被误删,减小模型的误检率.

1 EfficientDet网络

EfficientDet网络提出一种新的特征加强网络(BiFPN),可实现多尺度特征融合. 图1显示了EfficientDet的总体体系结构. EfficientDet采用EfficientNet作为主干网络,BiFPN作为特征加强网络,从主干网络中获取3-7级{P3,P4,P5,P6,P7}输入特征,并分别应用自上而下和自下而上的双向功能融合,融合的特征被送到分类网络和检测框预测网络,分别生成目标的类和目标检测框.

图1 EfficientDet目标检测网络Fig.1 EfficentDet target detection network

1.1 主干特征提取网络

目标检测算法中常用主干网络有ResNet[13]、VGGNet[14]等. VGGNet主要通过3×3卷积核来提取图像特征,ResNet由若干个卷积模块组成,增加了跳层连接,解决了网络加深引起的网络退化问题,使得网络加深的情况下预测效果依然得到提升. 但网络加深会导致参数增加及训练成本增加. EfficientNet重新思考了在原有网络结构基础上增加模型精度的方法:增加网络的深度、宽度和分辨率. 任一参数的增加都能提高模型精度,但是随着参数的增加,模型的精度增加变得缓慢,于是模型在总参数量不变的情况下,找出了8种不同的缩放模型,分别为EfficientNet-B0~EfficientNet-B7. 下面以EfficientNet-B0为例加以说明.

EfficientNet-B0由1个Stem模块及若干个Block模块组成. Stem模块包含1个3×3步长为2的卷积层、批量标准化层及激活函数层. Block为一种通用模块,如图2所示.

图2 EfficientNet Block内部具体结构Fig.2 The internal structure of EfficientNet Block

EfficientNet-B0总体设计思路是反转残差结构[15]和残差结构,在3×3或5×5网络结构前利用1×1卷积升维,在3×3或5×5网络结构后增加一个关于通道方向的注意力机制,最后通过1×1卷积降维后增加一个残差边.

在每个模块中,对于输入x,对应的输出H(x)可通过残差边的连接建立如下公式:

H(x)=f(x,{wi})+x,

(1)

式中,x为输入向量;wi为权重参数;f(x,{wi})为需要学习的残差映射,对于其余层的连接单元,可由式(2)表示:

f(x,{wi})=w3(δ1(w1(δ1(w0x))))×δ2(w2(Avgpool(δ1(w1(δ1(w0x)))))),

(2)

式中,δ1为Swish激活函数;δ2为Sigmoid激活函数;wi为各部分对应权重参数;Avgpool(·)为全局平均池化操作.

1.2 BiFPN特征增强网络

BiFPN网络将PANet[16]和NAS-FPN[17]融合,其主要思想是有效的双向跨尺度连接和加权特征融合. 首先,删除那些只有1个输入边的节点,得到简化的双向网络. 其次,若原始输入节点与输出节点处于同一级别,则在其间添加一条额外的边. 最后,将每个双向路径视为1个要素网络层,并重复相同的层多次以启用更多高级功能融合. 由于特征融合过程中,每个特征图贡献不同,因此加入了一个可学习的加权平均的权重. 图3为一个BiFPN Layer的结构.

图3 BiFPN Layer具体结构Fig.3 The specific structure of BiFPN Layer

式(3)介绍了如何得到特征图p6_td和p6_out:

(3)

式中,w为权重;ε=0.000 1为最小值以避免数值不稳定;Resize(·)表示将特征图尺寸变换到与本层相对应的尺寸. EfficientNet-B0共有3个BiFPN Layer,该层的输出为下一次BiFPN Layer的输入.

1.3 损失函数

EfficientNet-B0的损失包括分类损失和边界框回归损失. 分类损失使用Focal Loss损失函数[10]在交叉熵损失函数的基础上进行修改,通过调整类别权重α缓解正负样本不平衡问题. 实际检测中,大多数先验框中不包含物体,导致正负样本不平衡,分类的准确性下降. 引入权重α能很好地解决正负样本不均衡问题:

(4)

采用SmoothL1函数作为边界框回归损失来调整检测框的位置[4],其公式为:

(5)

其曲线平滑,易于求导,梯度稳定,可以控制梯度的量级,从而更易训练.

2 多注意力机制的高效网络

2.1 多尺度注意力机制

注意力机制被广泛用于自然语言处理[18]、计算机视觉领域[19]. 在计算机视觉中,注意力机制可提高特征的挖掘能力,进而提高图像分类和目标检测的准确性. 在佩戴口罩检测的任务上,口罩种类多,目标较小,引入注意力机制能提高网络的特征挖掘能力,提升口罩检测的平均精度. 本文在BiFPN模块之前加入注意力机制模块,其结构受SE-Net[20]的启发,如图4所示.

图4 加入多尺度注意力机制的网络口罩佩戴检测模型Fig.4 Netword mask wearing detection model with multi-scale attention mechanism

输入特征图先经过全局平均池化,得到1×1×C向量,经两个全连接层和一个激活函数层得到的向量与输入特征图相乘,将施加注意力机制后的特征图输入到BiFPN特征加强网络进行特征加强. 其过程可由式(6)表示:

f(x)=(δ2(w2δ1((w1(AvgPool(x))))))·x,

(6)

式中,wi为全连接层对应的权重;δ2为Sigmiod激活函数;Avgpool(·)表示全局平均池化;δ1为Swish激活函数;x表示输入特征图;f(x)表示输出特征图.

考虑到高层特征图具有较高的语义信息而缺少像素信息,较低的特征具有较强的像素信息而缺少语义信息,将注意力机制施加在P3、P4、P5这3个特征图.

2.2 柔性非极大抑制

图片经过训练目标检测网络,会在一个物体上产生很多检测框,通常采用非极大抑制(NMS)算法来去除多余的检测框,保留得分最大的框,其原理可由式(7)表示:

(7)

式中,B={b1,…,bN}是初始检验框的列表;S={s1,…,sN}包含相应的检测分数;Nt为NMS阈值;M表示得分最高的检测;iou(M,bi)表示两者对应的iou.

当图片中被检测的物体稠密,物体与物体之间靠得太近或部分重叠时,漏检的可能性就大大增加. 针对这个问题,Bodla等提出了一种柔性非极大抑制[21](soft-NMS). 该算法减小与M重合的检测框的分数,而不是直接删除. 因此,和M相距较远的检测框不会受到影响,和M重叠的检测框会被分到更大的惩罚,其过程如式(8)所示:

(8)

以上公式在重叠方面是不连续的,当重叠达到Nt时,会突然惩罚. 为了使重叠连续,若惩罚函数是连续的,则为理想的状况,否则可能导致检测排名的突然变化. 为了消除这种情况,引入高斯惩罚函数进行修剪:

(9)

式中,D为最终检测框集合;δ为系数.

EfficientDet-D0采用NMS除去多余的检测框,考虑到本实验中存在人脸重叠及人脸相距比较近的情况,将NMS改成soft-NMS.

3 实验仿真与分析

3.1 数据库

本实验数据来源于MAFA dataset[22]和WIDER FACE dataset[23]. 其中,来自MAFA的照片有4 065张,来自WIDER Face的照片有3 894张. 本数据集采用VOC2007格式进行标注,数据集中人脸分别标注为face或face_mask. face表示不戴口罩的人脸,face_mask表示戴口罩的人脸. 将数据集随机划分为训练集、验证集和测试集,其中,训练集有5 508张照片,验证集有612张照片,测试集有1 839张照片.

3.2 实验环境及模型训练

本实验在Windows10操作系统下进行,编程环境为Python3.7. 深度学习框架为TensorFlow1.13.2,Keras2.1.5. 深度学习加速工具为CUDA10.0,cudnn7.4.1.5. 硬件环境主要包括CPU 为Intel(R)Xeon(R)CPU E5-2696 v4 @2.20GHz,GPU为NVIDIA GeForce GTX 1080Ti@11GB,内存(RAM)32GB. 模型采用Adam优化算法进行训练[24],其中lr为0.001,β1为0.9,β2为0.999,epsilon为1e-08. 训练设置为100个epoch. 前50个epoch 训练时冻结主干网络,后50个epoch解冻主干网络;前50个epoch的批量为8,后50个epoch批量为4. 前50个epoch初始学习率为0.001,当连续两个epoch 验证集loss不发生变化时,学习率缩小一半;当连续6个epoch验证集loss不变时,提前终止训练. 后50个epoch初始学习率为0.000 05,学习率衰减方式与前者相同.

主干网络初始化权重采用在ImageNet数据集训练的权重,其余层的初始化方式为“Xavier方法[25]”初始化.

3.3 实验评价指标

本实验采用平均精度(AP)和识别速度作为实验的评价指标来客观评价人脸佩戴口罩算法. AP为单一目标的检测效果,其计算如式(10)所示:

(10)

式中,p(r)表示准确率P(Precision)和召回率R(Recall)之间的曲线. 准确率P和召回率R公式为:

(11)

(12)

式中,TP表示正样本被预测为正样本;FP负样本被预测为正样本;FN表示负样本被预测为负样本.

除了检测准确度,目标检测算法的另外一个重要性能指标是速度,识别速度的常用指标是每秒帧率(frame per second,fps),即每秒内可以处理的图片数量.

3.4 实验结果分析

当IOU阈值设置为0.5时,EfficientDet人脸佩戴检测的平均精度达到了93.1%,本文提出的算法在人脸口罩佩戴检测方面的平均精度达到了93.81%,如表1所示. 表1中,EfficientDet表示不作任何改进,Attention 表示在EfficientDet的基础上单独加入多注意力机制,soft-NMS表示在EfficientDet的基础上单独加入了柔性非极大抑制,Ours为本文提出的算法.

表1 实验结果对比Table 1 Comparison of experimental results

由表1可知,本文提出的模型相较于EfficientDet在人脸佩戴口罩检测方面和识别速度方面均得到了提升,其中人脸佩戴口罩方面平均精度提升了0.71%,识别速度提升了22.9%. 可见本文提出的算法能有效提高人脸口罩佩戴检测的准确度和效率.

此外,单独加入多注意力机制或柔性非极大抑制都能提高口罩佩戴检测的准确率和效率. 单独加入注意力机制时,人脸佩戴口罩检测的平均精度提高了0.64%,说明加入注意力机制能更好地挖掘戴口罩人脸的特征,使得网络模型对于人脸佩戴口罩识别能力有一定的提高. 单独加入柔性非极大抑制,人脸佩戴口罩检测的平均精度提高了0.15%,柔性非极大抑制能避免重叠检测框的误删,避免重叠人脸检测框的误删,从而提高人脸佩戴口罩检测的平均精度.

图5为实验效果图. 由图可知,本文提出的算法能够在复杂环境下区分佩戴口罩的人脸和未佩戴口罩的人脸,有效减少了模型的误检率. 同时,能更好地识别侧脸的情况,在侧脸方面的识别率更高. 该模型面对模糊及小人脸方面具有很好的鲁棒性,能够应对较为复杂的场景.

图5 口罩佩戴检测实际效果图Fig.5 Actual effect diagram of mask wearing test

4 结论

本文通过对EffificientDet目标检测算法的研究,提出了一种改进EffificientDet的口罩佩戴检测模型,将其应用于口罩佩戴检测任务上. 加入了多尺度注意力机制,经实验验证在不同环境下均具有很好的识别效果和鲁棒性. 通过预训练好的EffificientNet主干网络加速模型的训练,并使用soft-NMS代替NMS. 训练后的模型在测试集上对佩戴口罩人脸的检测平均精度达到93.81%,识别速度达到11.80 fps,验证了将多尺度注意力机制运用到目标检测模型来进行人脸口罩佩戴检测的可行性. 未来的研究将在保证准确率的前提下简化主干网络和特征增强网络,提高识别速度,加大训练数据集,进一步提高模型识别准确率.

猜你喜欢
人脸精度注意力
基于不同快速星历的GAMIT解算精度分析
让注意力“飞”回来
热连轧机组粗轧机精度控制
有特点的人脸
一起学画人脸
玻璃窗上的人脸
A Beautiful Way Of Looking At Things
以工匠精神凸显“中国精度”
长得象人脸的十种动物
浅谈ProENGINEER精度设置及应用