APP下载

基于SSD算法的戴口罩人脸识别方法研究

2022-09-28牛嘉兴高利鹏谢心怡

计算机仿真 2022年8期
关键词:卷积人脸人脸识别

牛嘉兴,高利鹏,张 露,谢心怡

(西北工业大学软件学院,陕西 西安 710000)

1 引言

人脸识别技术是通过对输入的视频流或数字图像中是否存在人脸信息做出判断,并且进一步跟踪数字图像或者是视频每一帧中人脸的位置、大小继而实现身份的识别[1]。最早的人脸识别相关的研究应用于心理学领域,用来从知觉和心理学的角度研究人脸判断人的性格特征和面部表征而产生的心理和情感的差异识别的原理外,还有一些科学家从生物视觉的方向进行探索。而在神经网络之前的早期的人脸识别,研究者可以使用算法来完成

对人脸的高级表示,或者可以以一些简单的表示方法来代表人脸图片的高级特征。但是,这部分人脸识别方法仍然需要研究人员的高度参与,例如在人脸识别过程中需要引入操作人员的理论常识,在识别过程中也并没有实现完全的机器识别。而关于深度学习的一些人脸检测算法,则大多基于对深度学习目标检测算法进行改进,或者说是把通用的目标检测模型,为适应人脸检测任务而进行的特定配置[2,3]。本模型输入大小为260x260,主干网络只有8个卷积层,加上定位和分类层,一共只有24层,模型相对较小,只有111.5万参数。所以可以有较小的延迟运行在实时摄像头上。

2 基于SSD算法的口罩识别模型

在当前市面上应用较多的检测系统模型(Faster RCNN、SSD、YOLO v3,v4,v5)中,针对人脸进行识别和检测的分析算法中最常用的是SSD(Single Shot MultiBox Detector)算法,比如在开发者中应用广泛且被熟知的SSH模型、S3FD模型、RetinaFace算法都是受到了SSD算法逻辑的启示,或者在SSD算法的基础上进行了改良,比如将位置层提升到更高的位置、调整锚点大小、调整锚点标签分配规则、在SSD的基础上增加FPN等等。本篇论文主要实现的是针对当前疫情情况下的人群是否佩戴口罩的检测系统,该检测系统同样是采用了最常用的SSD模型的基本思想。检测系统的模型在基础网络部分采用了VGG16卷积结构,特点是卷积直接作用于特征图,以此来预测目标类别和对外围框[4-6]进行分类并预测。网络主体提取特征,在每个卷积层进行卷积和下采样。由于目标网络在训练中会产生损失量(Loss),因此需要定义损失函数在训练中评估和测试网络结构优劣和网络性能优劣。所对应的损失函数主要包括一个位置损失函数Lloc和分类损失函数Lconf,损失函数如式(1)所示[7]

(1)

SSD算法采用多尺度特征图。分别用于检测一个相对来讲大一点的的特征图和一个相对较小的图,如图二所示。进行检测时,比较大的图作用是检测相对较小的目标,而比较小的特征图则是用来检测比较大的目标,如图1。

图1 8*8特征图和4*4特征图

对于具有一定大小的特征图,只需要采用 4×4×n 这样比较小的卷积核就可以得到检测值。以经典的猫狗识别为例,图三所示,SSD的每个单元对不同长宽比或不同尺度的先验框进行设置,预测的边界框(Bounding Boxes)以它们为基准,一定程度上降低了训练难度。一般情况下,每一个单元都会设置多个尺度不同的先验框,如图2。

图2 猫狗识别中设置先验框

本文中,使用了SSD架构的人脸检测算法,相比于普通的人脸检测模型只有人脸一个类别,而人脸口罩检测,则是增加了一个类别,变成戴口罩人脸和不戴口罩的人脸两个类别。在本文所提及的人脸口罩识别算法中训练目标检测模型,最重要的是合理的设置anchor的大小和宽高比,一般会统计数据集的目标物体的宽高比和大小来设置anchor的大小和宽高比。例如,在标注的口罩人脸数据集上,读取了所有人脸的标注信息,并计算每个人脸高度与宽度的比值,统计得到高度与宽度比的分布直方图,如图3。因为人脸的一般是长方形的,而很多图片是比较宽的,例如16:9的图片,人脸的宽度和高度归一化后,有很多图片的高度是宽度的2倍甚至更大。从上图也可以看出,归一化后的人脸高宽比集中在1~2.5之间。所以,根据数据的分布,将五个定位层的anchor的宽高比统一设置为1,0.62,0.42。(转换为高宽比,也就是约1,1.6:1,2.4:1)

图3 人脸高宽比直方图

3 模型结构

为了能让模型在嵌入式系统上使用,所以神经网络的小型化至关重要,当前主流的分类网络模型过大,不适合口罩识别系统。还有一种并行发展的前馈神经网络—卷积神经网络 (Convolutional Neural Networks,CNN)[8-10],它的主要特点是池化,多网络层,局部连接和权值共享。卷积神经网络与全连接神经网络相比,CNN的泛化性能更强,识别率也更高。因此,CNN模型已成功应用于物体检测、图像分割、目标识别和图像识别等领域[11,12]。本模型即是采用卷积神经网络对输入进行迭代输出,其主要特点是不需要专门设计针对不同类型人脸图像稳健的特定特征,而是可以通过训练学习得到。这种训练学习方法的主要缺陷是需要使用规模很大的数据集对模型进行特征训练,并且要求数据集中包含足够多的类型变化,因而可以泛化到训练集未使用过的样本上[13]。目前一些包含自然人脸图像的大规模数据集已经被公开,可以很方便地用来训练CNN模型。在模型训练的时期,训练集中的每个主体都对应一个固定的类别。在每一个4×4的卷积层可以产生一系列固定大小的锚框。需要预测得到的锚框与目标物体之间的位置偏移,以及每一个锚框中物体属于某类的概率。为了在检测中包含更多的高层次上下文信息,将预测模块转移SSD下游的一系列卷积层(deconvolution)中[14-16]。在模型训练好之后,就可以去除分类层将之前的层学习到的特征作为人脸表征,这样就可以用该模型去识别训练集中不存在的主体。

本模型输入大小为260x260,主干网络只有8个卷积层,加上定位和分类层,一共只有24层(每层的通道数目基本都是3264128),所以模型相对较小,只有101.5万参数。模型对于普通人脸基本可以检测出来,较小的人脸则精确度略低。但可以有较小的延迟运行在实时摄像头上。模型在五个卷积层上另接出来了定位分类层,其大小和宽高比设置信息如表1。

表1 卷积层设置

本文中提及的视频检测则是针对视频中每一帧的画面投入模型中进行人脸口罩检测,可以显示出视频中的人数以及是否佩戴口罩,并将人脸框出来。为了起到提示作用,对未佩戴口罩的人员进行语音提示。在实验中由于语音提示在该帧占用时间过长,而将语音提示由另一个线程进行播报,以降低视频的延迟。还在训练的过程中,将训练集的图片数据进行处理,随机的往嘴巴部分粘贴一些其它物体的图片,另外为了避免使用手挡住嘴巴就会欺骗部分口罩检测系统的情况,因此在数据集中也加入了部分嘴巴被手捂住的数据。从而避免模型认为只要露出嘴巴的就是没戴口罩,没露出嘴巴的就是带口罩这个问题,如图六所示,模型可以正确识别图6(a),(b)中用手捂住脸和手机挡住脸均为未佩戴口罩,减少产生误判的概率。

图4 向图片嘴部添加遮挡物的检测效果

后处理部分主要就是NMS(Non-Maximum Suppression),使用了单类的NMS,也就是戴口罩人脸和不戴口罩人脸两个类别一起做NMS,从而提高速度。同时在该项目中加入了统计摄像头中出现人数的函数并在视频左上角显示,当超过一定人数(3人)时判断存在人群聚集风险,提示颜色由绿色变为红色并进行提示。以此来预防因人群聚集导致疫情扩散的风险。图7,图8展示了摄像头中人脸佩戴口罩和未佩戴口罩的效果,同时在左上角显示摄像头中出现的人数。

图5 摄像头中未佩戴口罩口罩检测效果

图6 摄像头佩戴口罩口罩检测效果。

4 实验和分析

4.1 数据集

人脸检测数据集非常多,其中最常用的莫过于WIDER Face数据集,从中选择了3894张图片,并进行了校验,主要是将部分戴口罩的人脸标注为戴口罩。对于戴口罩的人脸,使用了中科院信工所葛仕明老师开源的MAFA数据集,该数据集本是一个遮挡人脸的数据集,其中有各种被遮挡的人脸图片,大多数都是被口罩遮挡的人脸图片,从中选择了4064张人脸戴口罩的图片。MAFA数据集的人脸位置定义与WIDER Face有较大区别,MAFA的人脸框在靠近眉毛上方,是正方形的,而且标注框不严格(框离脸部边缘有缝隙),而WIDER Face的人脸框在额头上方,如果不进行修改,会导致模型对于不戴口罩的人脸,检测框是到额头上方,而戴口罩的人脸,检测框只到眉毛上方。因此,重新标注了这部分MAFA数据。最终对数据进行了随机划分为训练集和验证集,如表2所示。

表2 数据集选取

4.2 结果与分析

尽管人脸口罩识别在公开数据集上取得了良好的效果(系统对人脸的识别率达到89.6%,对人脸是否佩戴口罩的准确率达到91.9%),PR测试曲线如图7,但是应该考虑与更多场景的实际情况相结合,尽量提高方法的泛化能力,以应对各种复杂的场景。基于SSD的人脸口罩识别在单个特定数据集上通常能得到较好的结果,但其性能会随着不同数据集的迁移逐渐衰减。

图7 测试集PR((Precision-Recall))曲线

因此,对模型做出进一步的增强也是很有必要的,使之学习到更抽象的语义特征,例如长短期记忆网络[17]和傅里叶卷积神经网络[18]。同时,可以探索其它学习框架以提供不同关于如何解决这个问题的观点。

另外,由于本系统模型参数量小,可靠性高,将本系统嵌入式移植到带摄像头的嵌入式开发设备(如树莓派,jetson nano)并配置红外传感器,使之具有测温功能,可以迅速实现软件系统的实施落地,在工作生活中更加便利。

5 结语

本文回顾了人脸识别的发展历程及应用成就,详细阐述了基于SSD模型对人脸进行口罩识别的方法,介绍了CNN模型的适用范围及其特点。并推荐使用以上模型进行人脸识别的口罩预测。同时本文增加了数据集来源和获取的内容,讲解了如何选取数据集和预测模型中容易存在的一些缺陷。详细介绍了本文中使用的分类模型以及各层卷积层的配置。

最后希望能够在疫情席卷的当下作为科研工作者可以贡献自己的一份绵薄之力。

猜你喜欢

卷积人脸人脸识别
基于全卷积神经网络的猪背膘厚快速准确测定
基于图像处理与卷积神经网络的零件识别
玻璃窗上的人脸
人脸识别的“国标”来了
中科视拓开放商业版本人脸识别算法
基于深度卷积网络与空洞卷积融合的人群计数
智力考场:有趣的图片测试
荣耀畅玩7C:人脸识别
卷积神经网络概述
“领家系”可爱脸VS“高冷系”美人脸