基于Vit 的口罩遮挡人脸识别方法

2023-04-13 02:02卢添烨刘兴德刁建超
电子制作 2023年4期
关键词:候选框人脸识别人脸

卢添烨,刘兴德,刁建超

(1.吉林化工学院 信息与控制工程学院,吉林吉林,132022;2.吉林化工学院 机电工程学院,吉林吉林,132022)

0 引言

在进入常态化疫情防控的新阶段,正确佩戴口罩作为切断飞沫传播的一重大举措显得尤为重要。然而诸如飞机,高铁,商超等安检处人脸识别往往需要摘下口罩采集完整人脸图像,这无疑会带来交叉感染的风险。因此口罩遮蔽的人脸检测和识别能有效提高防疫安全并且保护居民的生命健康。这一任务不仅需要检测人脸目标,还要针对局部人脸完成识别,这需要算法对小目标利用细节特征的能力又更高的要求。

目前专门用于口罩遮蔽的局部人脸识别算法较少。主流的检测算法有R-CNN,SSD,YOLO,MTCNN 等。早年主要是传统目标检测算法如SVM 使用滑动窗口对整张图像进行穷举扫描,这类方法会带来冗余的窗口和大量的数据。争对这一问题,R-CNN[2~3]依靠图像边缘轮廓等信息筛选候选框,相较于穷举的滑动窗口的方法,可以保证在更少的窗口的前提下保持更高的准确率,不过对于较为复杂的图像,可能会框选大量互相重叠包含的数据,每个候选框都需要进行CNN 特征提取并使用分类器分来,这回带来不小的计算量和缓慢的检测速度。针对候选框的选取导致的大计算量这一问题,Fast R-CNN 使用一个特征提取网络优化了候选框的选取工作,是的算法稳定性和检测速度都有提升。然而检测速度仍然停留在数十秒的检测算法无法满足实时的要求,YOLO[4]类使用回归思想,大大加速了检测速度的同时因为其7*7 网络回归的设定很难做到精准定位。最后考虑到实际项目的还需要硬件支持,所以本文选择MTCNN 作为任务的检测模块,MTCNN[5]是一种三网络级联的检测算法,兼顾检测速度的同时有更好的准确率。

早期传统的人脸识别通过建立面部的几何特征的灰度模型来进行人脸识别。Kelly[7]的博士论文被认为是最早的人脸识别研究工作,通过边缘和轮廓检测测量面部标志的欧式距离,验证机器学习完成人脸识别的可能性,但是还达不到实用的门槛。之后传统机器学习方法例如主成分分析PCA,支持向量机SVM 开始流行,通过降维,二分类等的方法完成人脸识别。但是由于人脸数据集和算力的限制,容易出现过拟合问题。GPU 的诞生给了人工智能新的活力,基于大算力和深网络的深度卷积网络成了更好的选择。FaceNet[8]提出一种基于三元组损失的无对齐人脸训练方法,面部特征丢失较多,容易关注局部而不是全局。GroupFace[9]提出人脸的组感知表征,通过在网络中学习人脸的隐藏组表征,实现了更高精度的人脸识别。不同于深度卷积网络,transformer[10]独特的注意力机制和全局理解能力带来了新的变革。本文旨在将在深度学习领域具有里程碑意义的transformer 加以优化改进用于戴口罩遮蔽的人脸识别。

1 人脸识别

1.1 工作流程

如图1 所示,待识别用户与识别系统交互完成图像采集不可避免的会带来与冗杂的无用数据影响识别效果,因此需要对采集到的图像进行预处理,使用人脸检测将人脸从图像中剥离出来。本文使用多任务卷积神经网络(MTCNN)算法完成检测工作,将检测到的人脸图像进行人脸的对齐,直方图均衡化,归一化等数据增强方法以减小姿势光照带来的误差,提高系统的鲁棒性,最后使用transformer 完成特征提取和人脸识别,得到输出结果。

图1 人脸识别工作流程

1.2 人脸检测

人脸识别环境的多样性,灯光遮挡,不同姿势会带来极大的挑战,因此人脸识别前的检测尤为重要,本文选择MTCNN 作为人脸检测算法,使用一个深度级联的结构,分三个特制的深度卷积神经网络从粗糙到细致的方法来预测脸部整体和特征点坐标。

1.2.1 MTCNN 的网络结构

多任务卷积神经网络(MTCNN)采用三个级联的轻量级网络,分别完成快速筛选,精细过滤,最终输出。P-Net其基本的构造是一个不涉及全连接层的三层卷积网络。图片在输入之前需要按照一定比例进行尺度变换,这种变换称为图像金字塔旨在解决目标多尺度问题。图像金字塔生成后的数据,经过三层卷积核不同的卷积层输入到一个人脸分类器中进行一个简单的模板比对,最终将所有可能存在人脸的候选框输出入R-Net 层。R-Net 是一个四层神经网络,不同于第一层的P-Net 末尾的分类器,为了达到精细筛选的目的,R-Net 使用了一个全连接层。R-net 筛除大部分错误并且进行极大值抑制(NMS)优化在多个重叠的候选框中选取得分最高的一个。O-Net 与R-Net 相比结构类似的同时多了一个卷积层也带来了更多的人脸特征。O-Net 会做出更为精确的回归和置信度筛选,并输出人脸的五个特征点和最终的候选框。

1.2.2 MTCNN 的工作流程

首先将输入图片进行特定尺度的缩放,形成一个被称为图像金字塔的数据集,以适应检测不同大小的人脸。将图像金字塔输入P-Net 得到相对原图的人脸候选框,将众多候选框从输入图像中截取出来传入R-Net 中,R-Net 会对各个候选框中是否有人脸做出评分并对候选框做出一定的修正,再将修正后的候选框于原图截取图片,最后传入MTCHH 中最精细的O-Net,完成最后的评分和修正,得到最终的人脸候选框,实现人脸检测。

1.3 人脸识别

1.3.1 Vision transformer

Dosovitskiy 等[11]首次将应用于NLP 领域的 Transformer 模型引入机器视觉,提出了 ViT(Vision Transformer),一种完全基于自注意力机制的网络模型。

Transformer 首次是由谷歌于2017 年[10]提出的,该模型被提出旨在解决自然语言处理问题,并给该领域带来极大震动,成为里程碑式的模型。随后,Transformer 被创造性的应用于机器视觉领域,也给机器视觉带来的新的变革。2018 年的Image Transformer[12]首先将transformer 跨领域的引入机器视觉,在此之后,出现众多基于transformer的科研成果。例如,2020 年5 月Carion[13]等构建的DETR将transformer 投入目标检测的领域中。2020 年10 月Dosovitskiy[14]等人将构建Vision Transformer,这是一种完全基于自注意力机制的图像分类方案。

图2 MTCNN 网络结构

图3 MTCNN 工作流程

Transformer 得以被广泛开发使用的主要原因有以下三点:

(1) 学习长距离依赖能力强。卷积神经网络(CNN)是通过不断地堆叠卷积池化层来完成对输入从局部信息到全局信息的特征提取,这种计算机制可能会带来模型臃肿,计算量大幅上升,梯度消失问题,甚至使整个网络无法训练收敛。相较之下,Transformer 因为其附带的依赖特性,利用注意力机制来捕获全局上下文信息,减少无用特征对模型的干扰。

(2) 多模态融合能力强。CNN 使用卷积核来获取图像信息,但对于其他模态的融合效果一般(如声音、文字、 时间等)。而 Transformer 的输入不需要保持二维图像,但由于Transformer的输入输出不要求保持为二维图形,所以通常都可以通过直接对图像进行运算得到初始嵌入矢量,而其他模态的信号转化为矢量也可以通过直接在输入输出端实现融合。

(3) 模型更具可解释性。在 Transformer 的多头注意力网络中,每个Head 都独立使用自注意力机制,这使得模型具有在不同的任务和不同的表达子空间中学习相关的特征的能力。

1.3.2 Multi-Head Attention 多头注意力机制

自注意力机制(Self-Attention Mechanism)[14]受到生物视觉原理启发,增加了对特定区域着重观察的机制,可以快速提取数据特征,获取输入图像内部特征与其整体特征的相关性。对于视觉领域中,自注意力旨在计算输入图片特征相互之间的注意力权重,从而生成一个包含每个特征都关于其他的特征信息的特征图。相较于传统循环神经网络在输入数据时严格先后顺序的掣肘,Self-Attention Mechanism使用并行加速运算的同时拥有全局视野。

多头注意力机制(Multi-head Self-Attention)相较自注意力机制是在参数量总体不变的情况下,将查询、键、值三个(qi,ki,vi)参数进行多次拆分,参数通过三个共享的可训练变换矩阵(Wq,Wk,Wv),得到对应的(qi,ki,vi),之后按照Head 个数均分成h 份为即为每个Headi对应 的(Qi,Ki,Vi), 按 照 公 式(1) 得Attention(Qi,Ki,Vi),再将得到得结果进行concat 拼接和可训练得变换矩阵Wo进行融合,至此完成了公式(2)(3)的工作。每组拆分参数映射到高维空间的不同子空间中计算注意力权重,从而关注输入的不同部分。经过并行多次计算,最后合并所有子空间中的注意力信息,公式如(3)所示。

1.3.3 Vision transformer 模型

本文模型基于Vit 模型框架,修改了MLP Head 以更适用口罩遮蔽的人脸识别,使用DropPath 代替原文的Dropout,MLP Head 使用全连接层,GELU 激活函数,DropPath 组成。模型主要由以下三个模块组成:

(1)Linear Projection of Flattened Patches (Embedding 层)

(2)Transformer Encoder

(3)MLP Head(最终用于分类的层结构)

以Vit-B/16 为例,输入“224*224*3”的图片经过embedding 层变成196 个patches,每个patches 格式为16*16*3,再通过线性投射层即全连接层得到“196*768”数据。插入一个“class”token ,与原token 拼接起来变成“197*768”的一维数据,到此完成图片的预处理工作。将数据分为12 份“197*64”以便完成自注意力工作,拼接通过Norm 和MLP 得到输出依然为“197*768”,因此这个被称为的Encoder 的操作可以反复堆叠N 次,这个堆叠的过程被称为Transformer Encoder。最后通过由Linear,Gelu,Dropot 组成的MLP Head 层完成分类。

2 实验结果和分析

2.1 实验平台

实验环境配置如下:Intel 处理器R7-5800H,Nvidia GeForce RTX 3060 显卡,16G 内存。实验采用python 语言,深度学习框架为Ptorch。

2.2 数据集

本文的实验基于Wang[15]等人提出的口罩遮蔽人脸的公开数据集。该工作提出了三种类型的口罩遮挡人脸数据集,包括口罩遮蔽人脸检测数据集(MFDD),真实口罩遮蔽人脸识别数据集(RMFRD)和模拟口罩遮蔽人脸识别数据集(SMFRD)。本文采用的RMFRD 是目前世界上最大的真是口罩遮挡的人脸数据集,其包含525 人的5000 张带口罩人脸,9 万张正常人脸。对该数据集的部分图片使用多任务级联卷积神经网络(MTCNN)完成人脸对齐工作,之后使用直方图均衡化,归一化等数据增强方法以减小姿势光照带来的误差,提高模型的鲁棒性,完成数据集的构建。

图4 vit 模型结构

■2.3 实验结果

如图5 所示,从上往下以此为vit 三个模型(Huge/ Large/ Base) 准 确 率 曲 线, 随 着 表1 中layers 即 是Encoder 块个数的增加,收敛速度和准确率也逐渐增加。Hidden Size 为通过Embedding 层之后每一个token 的长度,MLP size 为Encoder 中MLP Block 全连接的节点个数,Heads 代表Multi-Head Attention 的多头个数。随着数据的增加和网络层数的加深,最终的口罩遮蔽人脸识别准确率逐渐提高。这也证明本文提出的模型结构的合理性,在增加网络深度和数据的情况下,能够提升更加复杂场景下的口罩遮蔽人脸识别准确率精度,图6 为识别结果样例。

图5 实验结果

表1 模型参数

图6 识别结果样例

3 结语

本文提出一种基于ViT 框架与卷积神经网络相结合的口罩遮蔽局部人脸识别模型。模型使用MTCNN 完成人脸检测为接下来的识别打好基础,依靠transformer 网络对长距离序列的特征提取能力,减少了无用特征对模型的干扰,利用增强后的特征信息进行目标识别,改善了遮挡目标的识别效果,有效提升了模型性能。实验表明,本文实现的算法具备较强的鲁棒性和较高的识别准确度。

猜你喜欢
候选框人脸识别人脸
重定位非极大值抑制算法
人脸识别 等
面向自然场景文本检测的改进NMS算法
有特点的人脸
一起学画人脸
基于Soft-NMS的候选框去冗余加速器设计*
揭开人脸识别的神秘面纱
人脸识别技术的基本原理与应用
三国漫——人脸解锁
一种针对特定目标的提议算法