APP下载

基于改进YOLOv4-tiny的口罩佩戴实时检测算法

2022-04-15曹小喜程凡永王飞州

关键词:池化特征提取人脸

曹小喜,程凡永,王飞州

(安徽工程大学 检测技术与节能装置安徽省重点实验室,安徽 芜湖 241000)

疫情形势依然严峻,由于基因突变产生的新冠病毒的各种变异毒株表现出更强的毒性与传染性,督促民众在商场、车站等公共场所佩戴口罩是降低病毒传染概率的重要举措。目前在公共场所主要通过人工监督的方式对民众佩戴口罩的情况进行检测,这种方式效率低下。因此,开发一套能够对民众口罩佩戴情况进行实时准确监测的口罩佩戴检测系统具有重要意义[1]。

近年来,随着深度神经网络的飞速发展,一大批优秀的目标检测算法纷纷涌现,主要包括两类,一类是以YOLO[2-5]系列和SSD[6]系列为代表的基于回归的一阶段目标检测算法,另一类是以R-CNN[7-9]系列为代表的基于候选区域的两阶段目标检测算法。两阶段方法首先生成一系列可能包含对象的候选区域,然后对每个候选区域进行分类,并根据每个候选区域的特征进行边界框回归。一阶段方法跳过候选区域生成步骤,直接利用卷积神经网络(convolutional neural network, CNN)对整幅图像中所有目标的位置和分类进行回归。

衡量目标检测算法性能的主要指标是检测精度和检测速度,一阶段和二阶段目标检测算法相比,检测精度略低,但检测速度很快,通过轻量化改进能够较容易的在移动设备上实现实时检测。为了实现网络的轻量化,齐榕等[10]将Tiny-YOLOv3的主干特征提取网络替换为MobileNet,减少了模型的参数量和运算量,在测试集上mAP达到了73.3%;钟志峰等[11]将YOLOv4的主干特征提取网络替换成了Mobilenetv3[12],然后将EfficietDet[13]的加权双向特征金字塔Bi-FPN(weighted Bi-directional Feature Pyramid Network)进行简化来替换YOLOv4的特征融合网络,在VOC(Visual Object Classes)2007数据集上 mAP 达到 80.22%,模型大小为 44.75M,比 YOLOv4 减少了 82%;秦伟伟等[14]将YOLOv3的主干特征提取网络替换为MobileNetV2,并融合通道协同注意力模块实现了YOLOv3网络的轻量化;朱杰等[15]通过在YOLOv4-tiny的基础上引入空间金字塔池化和路径聚合策略,增加了网络的感受野,检测准确率mAP达到了90.02%,检测速度为76.8FPS。以上算法虽然实现了轻量化,但是检测精度和检测速度仍然存在比较大的提升空间,在场景更为复杂的人流中,比如在车站、商场等人员密集的公共场所进行口罩佩戴检测需要克服小目标、遮挡目标给目标检测任务带来的困难,对算法的准确度和实时性有更高的要求。

本文针对上述问题,在YOLOv4-tiny[16]的基础上进行改进,提出了一种能够适应密集人群环境下的改进型人脸口罩佩戴实时检测算法。主要改进如下:

(1)针对YOLOv4-tiny主干特征提取网络特征提取不充分的问题,引入融合了通道空间双重注意力机制的CBAM模块(Convolutional Block Attention Module, CBAM)[17],提升网络对通道及空间特征的表达能力,扩大网络对目标特征区域的感知范围。

(2)为了进一步提升模型的特征表达能力,在主干特征提取网络之后引入空间金字塔池化(Spatial Pyramid Pooling, SPP)[18],对输入特征层进行多尺度池化并融合,同时大幅度增强网络的感受野。

(3)在数据增强方面使用Mosaic数据增强,丰富训练图片的背景信息,使得算法能够适应更加复杂的检测场景。

1 YOLOv4-tiny算法原理

YOLOv4-tiny是YOLOv4的轻量化版本,大大减少了参数量,其网络结构如图1所示。与YOLOv4相比,YOLOv4- tiny的主干网络仅由3个CBL(Conv2D_BN_Leaky-ReLU)和3个CSPBlock组成。卷积单元CBL包含卷积层、批归一化层和用作激活函数的Leaky-ReLU。CSPBlock包含四个卷积单元、两个残差结构。CSPBlock整合了CSPNet[19]结构,通过跨阶段的拆分合并策略使梯度路径的数量加倍,从而有效地降低了模型的计算量。YOLOv4-tiny使用特征金字塔(Feature Pyramid Network, PAN)[20]作为特征融合网络,输入图片经过主干特征提取网络的特征提取,取13×13、26×26两个尺度的特征图作为特征金字塔的输入,经过卷积加上采样处理之后进行Concat操作来完成特征融合,然后将输出特征送入YOLO head 进行预测,预测结果包括目标的类别、置信度以及预测框的调整参数。最后通过设置置信度阈值和利用非极大值抑制策略对预测框进行筛选,获得最终的检测结果。

由于YOLOv4-tiny的主干特征提取网络比较简单,特征提取能力有限,其输出的两个尺度的有效特征层经过特征金字塔进行简单的特征融合就送入YOLO head进行预测,这使得YOLOv4-tiny取得了极高的检测速度,每秒钟可以检测443张图片(COCO:443FPS on RTX 2080Ti),轻量化的结构为YOLOv4-tiny带来了优秀的实时检测性能,同时也使得网络整体感受野不强,特征提取和特征融合能力偏弱,导致其在复杂场景下对小目标和遮挡目标进行检测时表现不佳。

图1 YOLOv4-tiny网络结构

2 改进的YOLOv4-tiny算法

针对YOLOv4-tiny的不足之处,本文对其网络结构进行了一些改进和优化,改进后的网络结构如图2所示。从图2中的(a)部分结构可以发现,在主干特征提取网络CSPDarknet53-tiny的基础结构单元CSPBlock中引入融合有空间通道双重注意力机制的CBAM模块来构建本文的CBAM_CSPBlock,本文算法以CBAM_CSPBlock为基础结构单元构建了融合注意力机制的主干特征提取网络CBAM_CSPDarknet53-tiny,提升了模型对关键特征的表达能力;然后,在主干特征提取网络之后引入经过优化的空间金字塔池化模块SPP,具体结构如图2的(b)部分所示,这使得模型能够在不同大小的感受野上获取多尺度空间特征并进行上下文语义信息的融合以获得更加丰富的特征表示,进一步提升了网络的检测精度。接下来将分别介绍本文所引入的各个改进策略的原理及实现思想。

图2 改进后的YOLOv4-tiny模型

2.1 注意力机制

通道注意机制CAM(Channel Attention Module)主要根据不同通道与关键信息之间的相关性建模,对原有特征层进行加权,突出具有关键信息的通道,抑制其余通道,主要关注对最终预测起决定性作用的通道特征,具体结构如图3所示。首先,对输入特征(Input Feature)先在每一个通道的特征图进行全局平均池化(AvgPool)和全局最大池化(MaxPool),得到两个通道特征;然后,将这两个通道特征送入一个多层感知机(MLP)中,这个多层感知机由两个共享权重的全连接层组成,通过这个全连接层得到通道注意力特征(Channel Attention Feature)。

图3 CAM模块结构

空间注意模块SAM(Spatial Attention Module)通过提取空间中每个像素点的关系和相对位置,形成一个具有像素相关度的掩模层。通过相关度计算像素点的权重,保留携带重要信息的像素点,实现特征选择和融合的功能,具体结构如图4所示。首先,对输入特征进行最大池化和平均池化,获得两个空间特征;之后将这两个特征在通道维度拼接,最后再经过一个卷积层得到空间注意力特征(Spatial Attention Feature)。

图4 SAM模块结构

由于空间注意模块SAM忽略了通道域中的信息,通道注意模块CAM则忽略了每个通道上空间信息。而卷积注意力模块CBAM(Convolutional Block Attention Module)将通道注意模块和空间注意模块串联起来,构建了一个融合通道空间双重注意力机制的注意力模型,解决了单一注意力模块的局限性,具体结构如图5所示。对输入特征先后施加CAM和SAM,最后得到同时蕴含通道注意力和空间注意力的输出特征,强化模型对关键特征的表达能力。

图5 CBAM模块结构

2.2 空间金字塔池化

通常情况下,为满足卷积神经网络分类器的固定尺寸输入限制,可以对输入图片进行裁剪、缩放等操作,但这样做往往会使图片失真。空间金字塔池化(Spatial Pyramid Pooling, SPP)可以对任意尺寸或比例的输入图像进行处理而生成固定尺度的特征表示,对于输入图像的大小以及形状的变化具有很好的鲁棒性,其原始结构如图6(a)所示。

受SPP空间金字塔池化思想的启发,本文对传统的SPP模块进行改进,改进后的结构如图6(b)所示。首先利用三个步长为1,卷积核大小分别为5×5、9×9、13×13的池化层对输入特征进行最大池化处理,得到三个不同尺度的局部特征;然后,将所得多尺度局部特征与输入的全局特征进行堆叠以实现特征增强,获得更加丰富的特征表示,进一步提升网络的检测精度。

(a)原始空间金字塔池化

(b)改进后的空间金字塔池化

3 实验与结果分析

3.1 数据集

本文的数据集是从开源数据集WIDER Face、MAFA(Masked face)、RMFD(Real-Word Masked Face Dataset)和利用网络爬虫从互联网下载一些图片中筛选的佩戴口罩的人脸图片和未佩戴口罩的人脸图片,共计8 700张。然后使用标注工具Labelimg将数据集中的图片标注成VOC的数据格式,其中未佩戴口罩的人脸标注为face,佩戴口罩的人脸标注为face_mask。

在数据准备阶段,从标注好的数据集中随机选取10%的数据作为测试集;其余数据按照9:1的比例划分为训练集和测试集。训练过程中运用Mosaic数据增强策略,如图7所示,随机选取四张图片进行等长宽比缩放拼接后送入网络进行训练,可以增加训练样本的多样性,丰富训练图片的背景信息,提升模型的鲁棒性,增强泛化能力。

图7 Mosaic数据增强

3.2 评价指标

本文采用平均准确率(Average Precision, AP)和平均准确率均值(mean Average Precision, mAP)作为算法模型检测准确率的评价指标,使用每秒传输帧数(Frames Per Second, FPS)作为算法模型检测速度的评价指标。

AP和mAP这两个评价指标可以同时评估查准率(Precision, P)和召回率(Recall, R),计算公式分别如式(1)、式(2)所示。

(1)

(2)

在本文中要检测戴口罩的目标face_mask, TP(True Positive)就代表口罩佩戴检测算法将戴口罩的人脸正确识别为face_mask的数量,FP(False Positive)就代表口罩佩戴检测算法将未带口罩的人脸face识别错误识别为戴口罩的人脸face_mask的数量,FN(False Negative)就代表口罩佩戴检测算法将佩戴口罩的人脸face_mask识别为未带口罩的人脸face的数量。以查准率P为纵坐标,以召回率R为横坐标绘制一条P-R曲线,则曲线与坐标轴所为区域的面积就是平均准确率AP,所有类别的平均准确率相加求和再求平均就是平均准确率均值mAP,计算公式如下。

(3)

(4)

3.3 实验设置

本文算法是在Windows 10系统中,使用Python3.6、基于Pytorch1.6深度学习框架构建,在桌面工作站(Inter®CoreTMi9-7900X CPU @ 3.3GHz,NVIDIA GeForce RTX3090)上进行训练,并在个人笔记本电脑(Inter®CoreTMi7-9750H CPU @ 2.6GHz,NVIDIA GeForce RTX2060)上进行测试。模型训练时,网络输入尺寸设为416×416,采用Adam优化器,学习率为1e-3, Batch Size设置为32,使用Mosaic数据增强技术,学习率调整策略为学习率余弦退火衰减,余弦周期为5个epoch,学习率最小值设置为1e-5,总共训练120个epoch。

3.4 实验结果分析

使用本文算法与YOLOv4-tiny对测试集进行检测,检测结果的P-R曲线如图8所示。检测结果示例如图9所示。

在图8中召回率Recall为横坐标,查准率Precision为纵坐标。检测结果的AP值可通过计算P-R曲线与坐标轴所为区域的面积得到。本文算法检测人脸目标face和佩戴口罩的人脸目标face_mask的平均准确率AP分别为85.28%、96.73%,原YOLOv4-tiny检测face与face_mask这两种类别的目标所达到的AP值分别是73.45%和95.03%,相比之下本文算法检测准确率更胜一筹。

(a)本文算法检测face的P-R曲线(b)本文算法检测face_mask的P-R曲线(c)YOLOv4-tiny检测face的P-R曲线(d)YOLOv4-tiny检测face的P-R曲线图8 本文算法和YOLOv4-tiny算法各类目标P-R曲线对比

通过图9中的检测结果图可以更加直观的对比算法的性能。图9中的第一列是两种算法的第一张检测图片结果图,图9(a)中,YOLOv4-tiny漏检了后面那位穿白衬衫的戴口罩男士,相比之下,图9(d)中本文算法成功将其正确检测出来。图9中的第二列是两种算法的第二张检测图片结果图,图9(b)中,YOLOv4-tiny漏检了穿蓝色西装的那位侧脸男士,与之相比,如图9(e)所示,本文算法成功将其正确检测出来。第三张测试图片针对的是密集人流环境中的口罩佩戴检测任务,两中算法的检测结果如图9中第三列所示,在图9(c)中,YOLOv4-tiny的检测结果中存在大量误检,比如前排那个手拿白色提包佩戴口罩的女性属于face_mask类别,却被错误的识别为face类别,而在图9(f)中,本文算法的检测结果均正确,且二者都识别出来的目标,本文算法也拥有更高的置信度。

(a)YOLOv4-tiny算法1(b)YOLOv4-tiny算法2(c)YOLOv4-tiny算法3(d)本文算法1(e)本文算法2(f)本文算法3图9 YOLOv4-tiny算法和本文算法的检测结果对比

表1中所示为本文算法和YOLOv4-tiny以及其他主流目标检测算法的mAP和FPS指标对比情况。对于人脸目标和佩戴口罩的人脸目标,本文算法的AP值分别达到了85.28%和96.73%,相较于YOLOv4-tiny分别提升了11.83%和1.70%,取得了更高的检测精度。在检测速度方面,由于本文算法在主干特征提取网络中引入了卷积快注意力机制CBAM,以及在主干网络之后引入了SPP作为加强特征提取网络,网络规模增大,因此检测速度略低于YOLOv4-tiny,但是仍然能够达到97.75FPS。对于其他非轻量级的目标检测算法,YOLOv4的检测精度与本文算法相差无几,SSD的检测精度低于本文算法,两者的检测速度仅在20FPS左右,难以满足实时性检测需求。而Faster R-CNN的检测速度更低仅为8.53FPS,且检测精度也比本文算法低2%。本文改进的算法检测性能优于其他主流算法。

表1 不同检测算法性能对比

3.5 消融实验

为了验证分析所提改进策略对模型性能提升的具体贡献,设计4组消融实验,如表2所示。1号实验是没有加入任何改进策略的原版YOLOv4-tiny,mAP仅为84.24%;2号实验在YOLOv4-tiny中加入了CBAM,该模块融合了通道、空间两种注意力机制,能够大幅提升网络对细节特征的提取能力,mAP比1号实验提升了3.29%;3号实验在1号实验的基础上加入了SPP,拓宽了网络的感受野,提取并融合多尺度特征,mAP相对于1号实验提高了2.21%;4号实验是将CBAM和SPP同时施加到YOLOv4-tiny基础网络,mAP比1号实验提高了6.77%。综上,本文在YOLOv4-tiny基础上所引进的改进策略是有效的,算法性能有了明显改善。

表2 消融实验结果对比

4 结论

本文针对疫情防控形势下的口罩佩戴检测任务,提出了一种高精度、高实时性的轻量级口罩佩戴检测算法。该算法采用YOLOv4-tiny作为基础模型,在其骨干网络中引入了集成通道、空间双重注意力机制的CBAM模块,并引入SPP模块结合Mosaic数据增强和学习率余弦退火策略对模型进行训练。有效提升了算法的检测性能,mAP达到了91.10%,相对于原始YOLOv4-tiny提升了6.77%,检测速度达到了97.75FPS,能够在口罩佩戴检测任务中实现高精度实时检测。为了能使检测精度能够百尺竿头更进一步,接下来准备研究对损失函数进行改进的方法,与此同时将尝试结合路径聚合策略对特征融合网络进行优化升级。

猜你喜欢

池化特征提取人脸
同步定位与建图特征提取和匹配算法研究
基于高斯函数的池化算法
卷积神经网络中的自适应加权池化
有特点的人脸
玻璃窗上的人脸
用于手写汉字识别的文本分割方法
基于MED—MOMEDA的风电齿轮箱复合故障特征提取研究
基于曲率局部二值模式的深度图像手势特征提取
“领家系”可爱脸VS“高冷系”美人脸
长得象人脸的十种动物