2. 中国烟草总公司郑州烟草研究院, 郑州 450000
2. Zhengzhou Tobacco Research Institute, China National Tobacco Corporation, Zhengzhou 450000, China
开放科学(资源服务)标志码(OSID):
新冠疫情爆发对全球产生了重大影响。文献[1]的研究结果表明,医用口罩能够有效遏制新冠病毒的传播。佩戴口罩大幅降低了新冠病毒传播到戴口罩人群的概率,可以有效阻止病毒在人群中的扩散,保障人们的生命安全。目前,新冠疫苗已经开始大面积接种,但是在公共场合佩戴口罩仍必不可少。因此,在公共场合检测人们是否佩戴口罩已经成为一项至关重要的计算机视觉任务。
当前,研究人员对口罩佩戴检测算法做了研究。文献[2]利用HSV+HOG等传统的目标检测算法对口罩佩戴行为进行检测,虽然达到了较高的检测精度,但传统的检测方法时间复杂度较高,鲁棒性差。文献[3]结合深度学习方法设计了一种口罩检测算法;文献[4]对YOLO算法进行改进,设计了新的口罩检测算法,虽然这两种算法均取得了较好的检测效果,但只对口罩是否佩戴的情况进行了检测,没有充分考虑口罩佩戴错误的情况,无法充分满足现实情况下对口罩检测的需求。口罩检测需要准确识别出人脸,并且要判断其是否佩戴口罩、佩戴是否正确。在佩戴口罩的情况下,人脸的大部分特征被遮盖,这为佩戴口罩检测带来了一定的干扰,因此口罩检测对算法的细节特征学习及处理能力有更高的要求。此外,有关口罩佩戴的公开数据集较少且数据不够完善,需要重新建立新数据集。
目标检测技术是实现口罩佩戴检测任务的关键技术,也是计算机视觉方向的研究热点,被广泛应用于各个领域[5-7]。近年来,研究人员先后提出了Fast R-CNN[8]、Faster R-CNN[9]、YOLO[10-12]、SSD[13]等优秀的深度学习目标检测算法。其中SSD算法因其在检测速度与精度上都表现优秀,被众多学者加以研究和应用。文献[14]基于该算法对城市户外广告面板进行检测,文献[15]基于该算法对煤矿井下带式输送机表面异物进行检测,文献[16]基于该算法对野生大熊猫视频进行检测,文献[17]基于该算法对地铁安检图像中的物品进行检测。这些工作针对特定场景对SSD算法做了相应的改进,都取得了不错的检测效果。
在疫情防控条件下,口罩检测任务涉及到的场景复杂多样,如人脸特征被遮挡难以检测、目标尺度不一、小目标检测效果差等,并且正确与错误佩戴口罩特征差异小,对算法的细节特征学习和处理能力要求更高,SSD算法对小目标的检测效果也不理想。针对上述问题,本文对SSD算法进行改进,利用特征金字塔网络(Feature Pyramid Network,FPN)[18]与协调注意力机制[19]增强算法的特征提取和对小目标的检测能力。同时,针对算法正负样本不平衡的问题,对算法的分类分数和IoU分数进行合并表示,将QFL作为新的损失函数,提出一种新的口罩佩戴检测算法。
1 SSD算法SSD是目标检测领域的经典算法之一,目前仍是主流的目标检测算法。SSD的网络结构如图 1所示。SSD网络是基于全卷积网络结构,它将基础网络VGG16[20]的全连接层替换为卷积层,并在VGG16网络末端添加了几个使特征图尺寸逐渐减小的辅助性卷积层,用于提取不同尺度的特征图。SSD以Conv4_3、FC7、Conv8_2、Conv9_2、Conv10_2和Conv11_2层的输出作为不同尺度的特征图进行检测,其相对应特征图的尺寸分别为38×38、19×19、10×10、5×5、3×3和1×1,分别来处理不同大小的对象,提高了预测速度和精度。
![]() |
Download:
|
图 1 SSD网络结构 Fig. 1 SSD network structure |
SSD借鉴了Faster R-CNN算法的Anchor机制,对提取特征图的每个位置上都预设了固定数量的不同长宽比的先验框,网络可以直接在特征图上采样,提取候选框进行预测,在保持实时检测速度的同时,提高了模型的定位准确度。
SSD算法使用损失函数对模型参数进行优化和更新。SSD的损失函数为位置误差(locatization loss)与置信度误差(confidence loss)的加权和,其公式如式(1)所示:
$ L\left(x, c, l, g\right)=\frac{1}{N}\left({L}_{\mathrm{c}\mathrm{o}\mathrm{n}\mathrm{f}}\left(x, c\right)+\alpha {L}_{\mathrm{l}\mathrm{o}\mathrm{c}}\left(x, l, g\right)\right) $ | (1) |
其中:
SSD网络结合来自不同分辨率的多个特征映射的预测,然而,浅层特征图缺乏较强的语义信息,在一定程度上会影响检测性能。深层提取的特征较为抽象,包含的小目标信息有限。因此,在较为复杂的场景中,人脸尺寸大小各异,SSD算法对口罩佩戴的检测效果不理想,特别是小目标人脸。
特征金字塔网络(FPN)是一个自顶向下的网络,通过上采样将包含更多抽象和语义信息的高级特征层引入到低级特征层中,一定程度上弥补了不同特征图之间的语义差异,在基本不增加原有模型计算量的情况下大幅提升了物体检测的性能,其结构如图 2所示。
![]() |
Download:
|
图 2 特征金字塔网络结构 Fig. 2 Structure of feature pyramid network |
为了增强算法对小目标的检测性能,提高算法对细节特征的学习和处理能力,使算法可以更有效地利用细节特征信息,尤其是提高对口罩佩戴错误情况的检测能力,受到FPN网络结构的启发,本文引入CA(Coordinate Attention)模块改进了算法的网络结构。改进后的SSD网络结构如图 3所示。
![]() |
Download:
|
图 3 改进的SSD网络结构 Fig. 3 Improved SSD network structure |
首先利用FPN网络增强算法的特征提取能力,提高算法对小目标的检测性能。本文在Conv4_3、FC7、Conv8_2、Conv9_2层构建出自顶向下的反路径,使用1×1卷积核对特征进行降维,以256个固定通道获得不同尺度的特征映射。之后,通过反卷积操作对高层特征图进行上采样,并通过元素添加的方式,将处理后的特征图与SSD中相应的特征图合并。为了消除上采样的混叠效应,之后并不直接使用合并后的特征图进行检测,而是对合并后的特征图做3×3的卷积运算。由此,构建一个自顶向下的特征金字塔网络,通过上采样将包含更多抽象和语义信息的高级特征层引入到低级特征层中,弥补了不同特征图之间的语义差异,可以提升对小尺度目标的检测的能力。
此外,在佩戴口罩时人脸的部分特征被遮盖,因此口罩检测对算法细节学习和处理的能力要求较高,特别是在口罩佩戴错误与口罩佩戴正确的特征差异较小。为了进一步提高算法对细节的学习和处理能力,在网络中添加了协调注意力CA模块,其模块结构如图 4所示。CA模块通过坐标信息嵌入和坐标注意力生成两个步骤,对通道关系和远程依赖关系进行编码。利用CA模块可以提高模型的感受野,加强对人脸口罩佩戴信息的表达,进一步提高对口罩佩戴检测尤其是口罩佩戴错误检测的准确性。
![]() |
Download:
|
图 4 CA模块结构 Fig. 4 CA module structure |
通过这种设计可以使得浅层特征图具有较强的语义信息,增强了算法的特征提取能力,使算法可以充分利用不同尺度特征图的信息,提高SSD算法在复杂场景下对佩戴口罩目标的检测能力,改善了算法对不同尺度目标的检测能力,提升算法的整体检测精度。
2.2 改进的损失函数SSD预设大量先验框,在训练时会产生更多负样本,正负样本难以平衡。在SSD算法中采用了难例挖掘的策略来保持正负样本比例为1:3,但这种方式忽视了大量简单负样本对模型训练的影响,无法使模型得到充分的训练。对于SSD算法存在这些的问题,需要有针对性地对其进行改进。
在2017年,LIN等[21]提出了Focal Loss函数,其表达式如式(2)所示:
$ {F}_{\mathrm{F}\mathrm{L}}\left({p}_{t}\right)=-{\left(1-{p}_{t}\right)}^{\gamma }\mathrm{l}\mathrm{o}{\mathrm{g}}_a\left({p}_{t}\right) $ | (2) |
其中:
Focal Loss可以通过调制系数控制简单样本的权重,减少了易分类样本在训练中所占的权重,使得模型在训练时更专注于难分类的样本。
虽然Focal Loss可以解决训练过程中正负样本不平衡的问题,但是算法在训练过程中,一部分分类分数低的真正的负样本,由于预测了一个分数极高但不可信的IoU,导致其在极大值抑制时,排到了一个分类分数较低IoU分数高的真正的正样本前面,这样对结果会产生一定的影响。
为解决上述问题,Quality Focal Loss(QFL)[22]函数对FL进行了扩展改进。本文借助QFL的思想,将SSD网络分类预测的分数和IoU分数进行合并表示,即将分类向量在真实框类别处的值表示为其相对应的IoU得分。通过这种方式,便将分类和IoU分数合并为一个变量,如图 5所示。这种方式可以解决算法训练和测试阶段中的不一致性,并以端到端方式进行训练,避免了出现上述影响算法性能的情况。
![]() |
Download:
|
图 5 输出表示 Fig. 5 Output representation |
在改动的同时,借助QFL损失函数对正负样本进行平衡,QFL公式如式(3)所示。这样便可以同时兼顾到对正负样本权重的平衡,使网络得到充分的训练,进一步提升算法对口罩佩戴检测的准确性。
$ {Q}_{\mathrm{Q}\mathrm{F}\mathrm{L}}\left(\sigma \right)=-{\left|y-\sigma \right|}^{\beta }\left(\left(1-y\right)\mathrm{l}\mathrm{o}{\mathrm{g}}_a\left(1-\sigma \right)+\\ \;\;\;\;\;\;\;\;\;\;\;\;\;y\mathrm{l}\mathrm{o}{\mathrm{g}}_a\left(\sigma \right)\right) $ | (3) |
QFL扩展了Focal Loss的2个部分:1)将交叉熵部分
本文的实验基于Pytorch框架,编程语言为python3.7,操作系统为Ubuntu16.04,GPU为NVIDIA Tesla P40,集成开发环境为PyCharm,网络的输入大小为300×300,初始学习率设置为0.000 1,采用StepLR调整策略调整学习率,调整倍数gamma=0.92,调整间隔为step_size=1。
3.1 实验数据集目前有关人脸佩戴口罩的数据集较少,且场景较为单一,普遍缺少口罩佩戴错误的样本,因此本文使用自制数据集,通过网络搜索和个人采集,自制共计2 050张图片的口罩佩戴检测数据集。其中1 600张作为训练集,450张作为测试集,在训练时,随机将训练集中10%的数据作为验证集。
数据集中共包含佩戴口罩、未佩戴口罩以及口罩佩戴错误3种情况,涉及高铁、商场、防疫检查点等不同场景。数据集依照PASCAL VOC数据集格式,使用LabelImg工具进行手工标注。数据集中各个类别的标签数量如表 1所示。
![]() |
下载CSV 表 1 各类别标签数量 Table 1 Number of labels by category |
数据集及标注示例如图 6所示。针对数据集数据量不够高,并且口罩佩戴错误的样本数量相对较少的问题,实验采用裁剪、旋转、色彩变换等随机数据增强方法用来对训练数据进行扩充,数据增强示例如图 7所示。在增加了数据量以及错误佩戴口罩样本的数量的同时,还可以缓解在训练过程中的过拟合现象,提升算法性能以及鲁棒性。数据增强后口罩佩戴数据集的信息如表 2所示。
![]() |
Download:
|
图 6 数据集及标注示例 Fig. 6 Dataset and annotation examples |
![]() |
Download:
|
图 7 原图与变换后图像对比 Fig. 7 Comparison between original image and transformed images |
![]() |
下载CSV 表 2 口罩佩戴数据集 Table 2 Mask wearing datasets |
本文使用平均精度(Average Precision,AP)和平均精度均值(mean Average Precision,mAP)作为口罩检测模型的性能评价指标。AP值从准确率P和召回率R两个指标来衡量模型检测的准确性。准确率表示实际是正类并且被预测为正类的样本占所有预测正样本的比例,如式(4)所示;召回率则表示实际是正类并且被预测为正类的样本占所有实际为正类样本的比例,如式(5)所示:
$ P=\frac{{T}_{\mathrm{T}\mathrm{P}}}{{T}_{\mathrm{T}\mathrm{P}}+{F}_{\mathrm{F}\mathrm{P}}} $ | (4) |
$ R=\frac{{T}_{\mathrm{T}\mathrm{P}}}{{T}_{\mathrm{T}\mathrm{P}}+{F}_{\mathrm{F}\mathrm{N}}} $ | (5) |
其中:TTP表示被检测正确的正样本;FFP表示被检测错误的正样本;FFN表示被检测错误的负样本。
AP由准确率-召回率曲线积分计算。AP的值越高,模型表现越好,其计算公式如式(6)所示。mAP则是各个类别AP的平均值,用来衡量多个目标的平均检测精度,mAP的高低可以体现模型对所有类别检测综合性能的高低。
$ {A}_{\mathrm{A}\mathrm{P}}={\int }_{0}^{1}PR\mathrm{d}R $ | (6) |
训练过程中训练损失随迭代次数的变化如图 8所示。通过对比可以看出,改进后SSD算法在引入QFL损失之后,使口罩佩戴检测模型得到了充分的训练,在训练时的损失变化与原SSD相比,损失的变化下降更快一些,并且更加稳定。
![]() |
Download:
|
图 8 训练损失变化对比 Fig. 8 Comparison of training loss changes |
改进SSD算法检测P-R曲线如图 9所示。从P-R曲线图中可以计算出,佩戴口罩、未佩戴口罩、口罩佩戴错误3种类别的AP值分别达到了96.55%、96.89%、95.39%,最终算法的mAP达到了96.28%。与原SSD算法相比,mAP提升了5.62%。为综合评估本算法的性能,使用本实验中的数据集与其他主流的目标检测算法进行了对比实验,具体实验结果如表 3所示。
![]() |
Download:
|
图 9 各类目标P-R曲线 Fig. 9 P-R curve of various targets |
![]() |
下载CSV 表 3 不同检测算法性能对比 Table 3 Performance comparison of different detection algorithms |
可以看出,对于口罩检测中的3种类别的AP值以及mAP,改进后的算法均高于RetinaNet和Faster-RCNN。相比YOLOv3,改进后的SSD算法佩戴口罩的AP值低于YOLOv3,但是未佩戴口罩和口罩佩戴错误的AP值都高于YOLOv3,mAP值也较优。本文设计增强了算法的特征提取能力,对细节特征处理的更好,对于口罩佩戴的各类情况,尤其是针对口罩佩戴错误的情况,检测效果更好。通过对比进一步证明了算法的有效性。
为验证算法的实时性,运用各算法对测试集的图片进行检测,样本数设置为1,对各算法的检测速率进行对比,实验结果如表 4所示。
![]() |
下载CSV 表 4 不同算法检测速率对比 Table 4 Comparison of detection rates of different algorithms |
本文所设计的算法在提升了检测精度的情况下与原始SSD算法相比,检测速度降低了2.4 frame/s,平均检测速率达到了28.9 frame/s,仍具有良好的实时性。
3.3 检测效果对比实际检测效果对比如图 10所示,其中,图 10(a)为原版SSD的检测效果,图 10(b)为改进后SSD在相同场景中的检测效果。
![]() |
Download:
|
图 10 改进算法的检测效果对比 Fig. 10 Comparison of detection effect of improved algorithm |
原SSD算法在复杂场景中的检测效果并不好,存在漏检和错检的情况,对图中人物侧脸和口罩佩戴错误的情况识别效果不佳。改进SSD算法提升了算法特征提取能力,能更好地处理细节特征,检测效果有较大的提升,图像中目标的漏检数和错检数均有降低,并对口罩佩戴错误的情况进行了正确的识别。
3.4 消融实验为验证改进算法的有效性,对改进了网络结构的算法进行了消融实验。实验分别设置两组对照模型,一组为原始的SSD网络模型,另一组则是引入FPN和CA模块改进后的SSD模型,其余实验设置均相同,实验结果如表 5所示。通过对比可以看出,改进SSD算法3种类别的AP值分别达到了96.25%、94.43%和93.49%,mAP达到了94.72%,相较于原始SSD提升了4.06%。
![]() |
下载CSV 表 5 消融实验结果对比 Table 5 Comparison of ablation experimental results |
此外,本文采用的损失函数,可以通过调节
![]() |
下载CSV
表 6 |
从表 6可以看出,当
为配合疫情防控,本文提出一种基于改进SSD的口罩佩戴检测算法。通过重构特征提取网络,加强了浅层特征图的语义,提升了算法在复杂场景下对不同尺度目标的检测能力,同时将分类预测分数和IoU分数进行合并,在损失函数中引入QFL损失,解决了算法中正负样本不平衡的问题,使模型更容易收敛。实验结果表明,与原始算法相比该算法具有良好准确性,能够满足疫情防控下的实际需求,实现在现实场景下全面准确地对佩戴口罩行为进行检测。下一步将对网络结构进行改进,优化网络参数,提高网络的检测速度,在保持较高检测精度的同时,提升口罩佩戴检测的实时性。
[1] |
LEUNG N H L, CHU D K W, SHIU E Y C, et al. Respiratory virus shedding in exhaled breath and efficacy of face masks[J]. Nature Medicine, 2020, 26(5): 676-680. DOI:10.1038/s41591-020-0843-2 |
[2] |
HE Y M, WANG Z H, GUO S Y, et al. Face mask detection algorithm based on HSV+HOG features and SVM[EB/OL]. [2021-06-10]. https://kns.cnki.net/kcms/detail/14.1357.TH.20210315.0832.002.html.
|
[3] |
JIANG M, FAN X, YAN H. Retina facemask: a face mask detector[EB/OL]. [2021-06-10]. https://arxivpreprintarxiv:2005.03950.
|
[4] |
ABBASI S, ABDI H, AHMADI A. A face-mask detection approach based on YOLO applied for a new collected dataset[C]//Proceedings of the 26th International Conference on Computer Vision and Pattern Recognition. Washington D. C., USA: IEEE Press, 2021: 1-6.
|
[5] |
李文斌, 何冉. 基于深度神经网络的遥感图像飞机目标检测[J]. 计算机工程, 2020, 46(7): 268-276. LI W B, HE R. Aircraft target detection of remote sensing images based on deep neural network[J]. Computer Engineering, 2020, 46(7): 268-276. (in Chinese) |
[6] |
LIU G X, NOUAZE J C, TOUKO MBOUEMBE P L, et al. YOLO-tomato: a robust algorithm for tomato detection based on YOLOv3[J]. Sensors, 2020, 20(7): 2145. DOI:10.3390/s20072145 |
[7] |
程淑红, 周斌. 基于改进CNN的铝轮毂背腔字符识别[J]. 计算机工程, 2019, 45(5): 182-186. CHENG S H, ZHOU B. Recognition of characters in aluminum wheel back cavity based on improved convolution neural network[J]. Computer Engineering, 2019, 45(5): 182-186. (in Chinese) |
[8] |
GIRSHICK R. Fast R-CNN[C]//Proceedings of 2015 IEEE International Conference on Computer Vision. Washington D. C., USA: IEEE Press, 2015: 1440-1448.
|
[9] |
REN S Q, HE K M, GIRSHICK R, et al. Faster R-CNN: towards real-time object detection with region proposal networks[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2017, 39(6): 1137-1149. DOI:10.1109/TPAMI.2016.2577031 |
[10] |
REDMON J, DIVVALA S, GIRSHICK R, et al. You only look once: unified, real-time object detection[C]//Proceedings of 2016 IEEE Conference on Computer Vision and Pattern Recognition. Washington D. C., USA: IEEE Press, 2016: 779-788.
|
[11] |
REDMON J, FARHADI A. YOLO9000: better, faster, stronger[C]//Proceedings of 2017 IEEE Conference on Computer Vision and Pattern Recognition. Washington D. C., USA: IEEE Press, 2017: 6517-6525.
|
[12] |
REDMON J, FARHADI A. YOLOv3: an incremental improvement[EB/OL]. [2021-06-10]. https://arxiv.org/abs/1804.02767.
|
[13] |
LIU W, ANGUELOVD, ERHAN D, et al. SSD: single shot MultiBox detector[C]//Proceedings of 2016 European Conference on Computer Vision. Berlin, Germany: Springer, 2016: 21-37.
|
[14] |
MORERA Á, SÁNCHEZ Á, MORENO A B, et al. SSD vs. YOLO for detection of outdoor urban advertising panels under multiple variabilities[J]. Sensors, 2020, 20(16): 4587. DOI:10.3390/s20164587 |
[15] |
WANG Y B, WANG Y J, DANG L F. Video detection of foreign objects on the surface of belt conveyor underground coal mine based on improved SSD[J]. Journal of Ambient Intelligence and Humanized Computing, 2020, 56: 1-10. |
[16] |
FANG J Z, YANG H Y, CHEN P, et al. A detection algorithm of giant panda in wild video image based on wavelet-SSD network[C]//Proceedings of IEEE International Conference on Systems, Man, and Cybernetics. Washington D. C., USA: IEEE Press, 2020: 3655-3660.
|
[17] |
张震, 李孟洲, 李浩方, 等. 改进SSD算法及其在地铁安检中的应用[J]. 计算机工程, 2021, 47(7): 314-320. ZHANG Z, LI M Z, LI H F, et al. Improved SSD algorithm and its application in subway security detection[J]. Computer Engineering, 2021, 47(7): 314-320. (in Chinese) |
[18] |
LIN T Y, DOLLÁR P, GIRSHICK R, et al. Feature pyramid networks for object detection[C]//Proceedings of IEEE Conference on Computer Vision and Pattern Recognition. Washington D. C., USA: IEEE Press, 2017: 936-944.
|
[19] |
HOU Q B, ZHOU D Q, FENG J S. Coordinate attention for efficient mobile network design[C]//Proceedings of IEEE/CVF Conference on Computer Vision and Pattern Recognition. Washington D. C., USA: IEEE Press, 2021: 13708-13717.
|
[20] |
SIMONYAN K, ZISSERMAN A. Very deep convolutional networks for large-scale image recognition[EB/OL]. [2021-06-10]. https://arxiv.org/abs/1409.1556.
|
[21] |
LIN T Y, GOYAL P, GIRSHICK R, et al. Focal loss for dense object detection[C]//Proceedings of IEEE International Conference on Computer Vision. Washington D. C., USA: IEEE Press, 2017: 2999-3007.
|
[22] |
LI X, WANG W H, WU L J, et al. Generalized focal loss: learning qualified and distributed bounding boxes for dense object detection[EB/OL]. [2021-06-10]. https://arxivpreprintarxiv:2006.04388.
|