金 鑫,曾思轲,刘 阳,武楚涵
(1.辽宁石油化工大学信息与控制工程学院,辽宁 抚顺 113001; 2.辽宁石油化工大学创新创业学院,辽宁 抚顺 113001)
新冠肺炎病毒通过密切接触和呼吸道飞沫进行传播,正确佩戴口罩能够有效预防新冠肺炎病毒感染,因此在密集场所中检测行人是否佩戴口罩至关重要。在人群密集的区域(如商城、机场、车站、医院等),通过人工方式检查人群中口罩佩戴情况会消耗大量的人力资源且容易漏检,因此研发一种口罩佩戴检测算法具有极为重要的现实意义。
基于深度学习的目标检测算法在速度、精度和泛用性方面相比传统算法都得到了巨大提升[1-2],其应用也越来越广泛,已有许多研究将目标检测应用于口罩佩戴识别领域,如王兵等[3]改进YOLO轻量化网络的口罩检测算法,王艺皓等[4]复杂场景下基于改进YOLOv3的口罩佩戴检测算法,曹城硕等[5]基于YOLO-Mask算法的口罩佩戴检测方法。
目前检测算法大多基于卷积神经网络[6-8],主要包括以YOLO[9]系列、SSD[10]系列等为代表的单阶段检测算法,以Fast R-CNN[11]系列、Mask R-CNN[12]等为代表的二阶段检测算法,以及Cascade R-CNN[13]为代表的多阶段检测算法。目标检测任务会根据应用场景的不同而选择合适的检测算法:单目标阶段算法检测速度最快,但精确度较低;无论是二阶段检测算法还是多阶段检测算法,都以牺牲检测速度为代价,实现较高的检测精度[14]。由于口罩佩戴识别问题对检测的实时性要求较高,所以本文以目前最优的单阶段目标检测算法YOLOv4[15]为基础。
YOLOv4算法精确度高但在经过多次卷积和池化后,大量的小目标信息会丢失导致检测结果存在较多的漏检和错检问题。YOLOv4-Tiny的出现一定程度上解决了该问题,它将主干网络的层数大幅度减少。有利于小目标特征信息的保存,但网络的检测精度也随之下降,难以保证识别的准确性。综上所述,2种算法均不适用于口罩佩戴识别问题。
为解决以上不足,本文提出以YOLOv4为基础的一种改进YOLO口罩佩戴识别的检测算法。
本文的主要工作如下:
1)针对YOLOv4网络层次较复杂,在提取小目标(口罩)特征信息时易出现失真等问题,将YOLOv4的主干网络模型替换为Mobilenet,在精度损失可接受的范围内,使得模型参数降低、检测速率增加[16]以适用于实时检测口罩佩戴和识别问题。
2)针对YOLOv4加强特征提取网络中提取特征信息时计算数据容量较大的问题,本文采用深度可分离卷积的方法来替代传统标准卷积,以有效降低计算数据容量进而提升计算速度。
3)本文使用K-means++聚类算法对Anchor box进行优化,使其更适合对自定义数据集上小目标的框定,能够提升网络的检测精度,mAP达到86%,较yolo_anchor提升1%。
4)运用改进后的YOLOv4-Mobilenet口罩佩戴识别检测算法与热成像技术相结合形成一套较为完善的疫情防疫系统,并在实际应用中取得显著的成效。
如图1所示,YOLOv4是一种实时性较强的单阶段目标检测算法,算法由用于特征提取的主干网络Backbone、特征融合的颈部Neck和进行分类、回归操作的检测头Head这3部分组成。YOLOv4的模型主干网络在Darknet基础上,融合CSPNet算法的思想,形成CSPDarknet。颈部在原有的特征金字塔网络中加入SSP(见图2)路径聚合网络,其将主干网络输出的深层特征向浅层传递,检测头部延续YOLO-Head。YOLOv4目标检测网络以CSPDarknet53为主干,包含5个CSP模块,各模块前的卷积核大小为3×3,步幅为2,能够进一步增强网络学习能力。路径聚合网络作为颈部,增添空间金字塔池(SSP)模块,采用1×1、5×5、9×9、13×13最大池化方式,使它能够扩大感受野,过滤出背景元素。YOLO网络将输入图像划分为N×N网格,当被测物体的中心坐标落入其中一个网格时,则该网格负责目标检测。在识别过程中,每个网格单元预测B个边界框。
图1 YOLOv4网络结构
图2 YOLOv4中SPP结构
每个边界框包含5个预测值:tx、ty、tw、th和置信度[17],置信度表示预测目标框的置信水平与预测精度。
按式(1)计算预测框的中心坐标bx、by和宽高bw、bh:
(1)
YOLOv4在CSPDarknet53中引入了空间金字塔池化模块,提升了感受野。此外,YOLOv4还使用路径聚合网络替换特征金字塔网络进行多通道融合。
本文主要从主干结构网络以及模块前卷积核方式2个方面对YOLOv4进行改进。
为进一步改善YOLOv4的主干结构,本文引入Mobilenet网络结构,将CSPDarknet53替换成Mobilenet。
Mobilenet是一种小型高效的卷积神经网络,在ImagNet数据集上的精度,Mobilenet与VGG16几乎相同[18],但参数量只有其1/32,计算量只有其1/27[19]。Mobilenet网络结构的基本要素是深度可分离卷积;并定义2个超量化参数的高分辨率宽度倍数,通过对2个超量化的参数进行调整来设计出能够满足应用要求的轻量化模型。
Google公司继Mobilenet-V2之后提出了Mobilenet-V3网络。V3模型在V2模型的基础上进行了优化,在bottleneck结构中增加SE结构,并利用h-swish(见图3)代替swish函数:
(2)
图3 h-swish激活函数
Mobilenet-V3使用了特殊的benck结构,结构图如图4所示。
图4 benck结构图
深度可分离卷积方法就是将一个标准卷积分解成为一个深度卷积和一个点卷积[20],深度可分离卷积过程实际上是每个输入通道与其对应的卷积中心的卷积[21]。最后将计算得到的各个通道相对应的卷积中心的结果作为最终深度卷积结果。实际上,深度卷积的计算过程是对输入信号特征图进行滤波,深度卷积的计算过程结构如图5所示,其中计算数量公式如式(3)所示:
M×M×N×N×C
(3)
图5 深度卷积
这里的点卷积则主要是将基于深度卷积的结果作为输入,卷积核大小为1×1,通道次数与其输入一致。点卷积的过程类似于标准的卷积,实际上就是对每个像素点在不同的通道上都进行了线性的组合(即信息集中),且保持了图片的基本平面和结构、调控的深度。相比于传统的深度卷积,点卷积具有直接改变通道次数的特殊能力,它们可以直接完成升维或降维的作用[22]。点卷积的过程如图6所示,其中计算点卷积的数量公式如式(4)所示:
M×M×1×1×C×K=M×M×C×K
(4)
图6 点卷积
因此深度可分离卷积总的计算量为:
M×M×N×N×C+M×M×C×K
(5)
深度可分离卷积与传统标准卷积计算量相比[23]如式(6)所示:
(6)
从公式中可以看出,深度可分离卷积可以有效地减少计算量。与传统的标准卷积相比,分解速度更快,能有效地检测和提取信息[24]。
K-means++聚类算法具有实现简单、运行效率高、聚类效果精确等特点。
本文采用K-means++算法对数据集目标的Anchor box进行聚类分析得到9个新的Anchor box。
与原有的YOLO_anchor相结合,以mAP作为聚类的评价标准,得出适合本数据的Anchor box,其宽和高分别是(72,146)、(135,172)、(192,243)、(401,459)、(12,16)、(19,36)、(40,28)、(36,75)、(55,76)。
使用此Anchor box最终得出mAP结果比使用原有的YOLO_anchor高出1%。
对于YOLOv4来说,这里使用主干特征提取网络获得的3个有效特征进行加强特征金字塔的构建。利用定义的Mobilenet-V3函数可以获得对应的3个有效特征层,利用这3个特征层替换原有的YOLOv4主干网络。为了进一步减少参数量,使用深度可分离卷积代替YOLOv4加强特征网络中用到的普通卷积。
为了直接避免监控人员与人流之间的交叉感染,在火车站、地铁、机场等交通中心的各个场所,以及医院、超市等繁华场所,均采用了非接触式、非敏感的测温技术。如采用热成像测温技术来检测人员体温,可快速排除可疑患者。基于热成像技术的温度检测,关键在于温度测量的准确性。以极低的误差率准确识别体温在37.3℃以上的人群,快速检测出体温较高的人员,并保证多目标的稳定检测,对公共场所的防控至关重要[25]。
YOLO-Mobilenet算法可实现对人群的检测和预警,同时通过声光报警及时提醒现场人员,避免人为因素遗漏异常人群,进一步提高检测、防控效率,真正满足机场、地铁、高速服务区、铁路等高密度、大流量一线的疫情防控需求。超精密人体热成像测温系统以科技为"前哨",以"轻骑兵"的速度,迅速构筑起防控疫情战的防线。红外成像设备如图7所示。
图7 红外成像设备
实验环境配置如下:Intel i5-10400F处理器,Nvidia GeForce RTX 2060显卡,16 GB内存,操作系统为Ubuntu 18.04。实验采用Python编程语言,深度学习框架为Pytorch。
由于目前的口罩图像数据集还比较少,照片质量也不高,本文利用百度和谷歌2个开源的人脸图像数据集中的部分图像,并以个人摄影和互联网上收集的图像,建立了一个自制的人脸口罩数据集,分为face和face-mask两类。数据集包含各种场景下的人脸口罩佩戴情况的图片,共8565张。
本文通过以下指标评价人脸佩戴口罩检测算法的性能,即准确率和召回率:
(7)
(8)
其中,TP表示检测到的目标类别与真实目标类别一致的样本数量,FP表示检测到的目标类别与真实目标类别不一致的样本数量,FN表示真实目标存在但未被检测出的样本数量。
平均准确率和平均准确率均值:
(9)
(10)
其中,N表示所有目标类别的数量。在一般情况下,召回率的提升往往伴随着准确率的下降。
检测速度:检测速度是指目标检测网络每秒能够检测的图片数量(帧数),用FPS表示。
使用原始YOLOv4、YOLOv4-Tiny、改进的YOLOv4-Mobilenet目标检测算法以及YOLOv5不同版本的算法对同一张图片进行检测[26],结果如图8~图11所示。
图8 原始图像
图9 YOLOv4-Tiny算法
图10 YOLOv4算法
图11 YOLOv4-Mobilenet算法
从检测算法的结果来看,YOLOv4-Tiny算法的检测准确率不高,尤其是对于小型目标检测效果不佳,所以该算法不宜使用。
原始YOLOv4算法检测精度优于YOLOv4-Tiny算法,但模型参数量过大且FPS过低,难以胜任使用嵌入式设备进行实时检测的任务。
YOLOv4-Mobilenet算法的mAP相较YOLOv4虽略有下降,但在实际检测应用中这种精度差异仍在许可范围内,且FPS得到了巨大的提升、模型参数量减小。
YOLOv5不同版本的算法在识别时精度均低于YOLOv4-Mobilenet。综上,相比于其他算法,本文算法在保证检测效果的同时,改善了检测速度与参数量大小,鲁棒性较强。训练结果如表1所示,3种模型的P-R曲线如图12所示。
图12 3种模型的P-R曲线
表1 训练结果
为了提升目标检测的可靠性和检测速度以及减少模型参数,本文提出了一种改进YOLOv4的人员口罩佩戴检测技术。
本文基于YOLOv4算法结合Mobilenet提出了一种YOLOv4-Mobilenet的检测算法。使用自定义的数据集,采用K-means++聚类对目标样本进行锚定框大小的优化。通过实验表明在复杂环境下该模型仍具有较高的精度、检测速度与鲁棒性。该方法平均每秒检测约67张图像,在检测行人是否戴口罩方面的成功率达到89%,在多目标检测上也有较好的表现,检测速度更快、模型参数更小。受限于光线不均匀、目标物遮挡,密集人群等问题,导致实际检测中仍存在少量的漏检与错检,以后将针对此问题进行更深入的研究,为疫情防控做出应有的贡献。