1. 引言
自20世纪末起,识别人脸一直是AI、深度学习、机器学习、模型理论等领域非常活跃的研究课题,手机电脑面部识别解锁、公司门禁考勤打卡、机场车站识别身份信息等都大规模地使用人脸识别技术。虽然大规模应用的人脸识别技术已经非常成熟,但是在现实生活中识别随时变化的人脸仍然存在许多难以克服的困难,例如,人体姿态变化、人脸表情变化、阳光照射以及口罩、眼镜或是围巾的遮挡都会影响人脸识别的效率和准确性。
在新型冠状病毒肺炎疫情期间,出行时口罩成为必备品,而口罩遮挡了人脸上的大部分特征信息,使得人脸识别技术基本失效,所以如何消除部分遮挡对人脸识别产生的巨大影响,成了亟待解决的问题。
在实际情景下,遮挡的形式不仅多种多样,而且存在可变性。不同环境下或是不同时间段,同一个人都会出现不同的遮挡问题,例如:体态姿势变化、人脸表情变化、佩戴饰物遮挡 [1]。目前国内外高校研究员对遮挡人脸识别技术做了大量的研究,设计出许多在某一具体情形下非常有效的算法。例如基于稀疏表示的遮挡人脸识别算法、基于主成分分析的遮挡人脸识别算法、基于生成对抗网络的遮挡人脸识别算法和基于卷积神经网络的遮挡人脸识别算法等。
21世纪初期,Wright等人使用稀疏表示分类(Sparse Representation Classification, SRC)方法应用在人脸 [2]。而后,Deng等人利用类内的变化,得到了遮挡状态样本,提出一种扩展字典人脸识别方法(Extended-SRC, ESRC)。此外,局部特征分析法通过调整权重来弱化或摒弃遮挡在识别中的影响 [3]。
基于主成分分析的算法在输入数据中收集未被遮挡的数据,来计算被遮挡的区域数据信息,其中最典型的算法如RPCA,但是RPCA存在一个致命的缺点是对外界干扰极其苛刻,在训练输入数据时要求不能存在遮挡信息的干扰,而算法的基本样本要求是在现实中难以实现 [4]。
最近,深度学习的快速发展带动了图像修复领域的进步。例如,Goodfellow提出的生成对抗网络(Generative Adversarial Networks, GAN),该模型基于博弈思想,通过生成器和鉴别器之间的持续对抗博弈,实现网络模型的迭代训练 [5]。GAN可以通过不断的对抗学习,生成非常接近真实分布的图像。Radford等人在生成对抗网络中加入卷积神经网络提出了深度卷积生成对抗网络,该模型将改进后的CNN和GAN网络相结合,不仅提高了模型稳定性,同样使生成的图像更加逼真 [6]。
随之发展的还有卷积神经网络在遮挡人脸识别上的应用,1998年,Yann LeCuu等人首次提出卷积神经网络算法,将其应用在当时并不发达的邮局手写数字字符识别上,识别结果的错误率低于1% [7]。之后在ImageNet上,Geoffrey E. Hinton等人提出卷积神经网络Alex-Net模型夺得冠军 [8]。至此,卷积神经网络被应用在各大高新领域并取得成功。
2. 基于稀疏表示的遮挡人脸识别算法
20世纪末,Coifman等人提出了信号稀疏分解的基本理论 [9],使信号更简便、易读。信号的稀疏表示是指将给定的超完备原子字典(冗余字典)作为一组初始函数来解析信号,并选择极少的原子通过稀疏表示算法来表示信号,即用足够少的初始函数来表示原始信号 [10]。因此,更容易获得信号中包含的信息,并且更方便地对信号进行压缩和编码。超完备冗余字典的构造、稀疏分解算法和重构算法是目前稀疏表示理论的主要研究方向 [11]。
2.1. 稀疏表示模型
从数学角度分析,稀疏表示模型是高维度的数据向其他维度线性分解的过程。假设信号(图像可看作一维向量)
,通过基或字典
(
)可得:
(1)
其中,
是系数,即只有有限个(K)非零元素,其它元素均为零,则称a是K稀疏的。
其具体过程如图1所示:

Figure 1. Sparse representation diagram
图1. 稀疏表示示意图
以下(2)等式约束来解释稀疏表示问题:
(2)
其中,
为x的稀疏表示,D称为稀疏变换矩阵,
为原子,类似于小波变换中的小波基。
表示
范数,含义为非零元素的个数。从理论上讲,上式属于NP-hard问题,计算量大 [12]。相关研究者已证明在一定的系数条件下,
范数可以转换为
范数的凸优化估计问题:
(3)
2.2. 人脸识别中稀疏表示矢量的求解算法
根据稀疏理论,当字典中的原子数足够且大于字典中原子的维数时,通常把具有最小
范数的解作为最优解。
图像是高维矢量,与其相比,参与图像采集的志愿者及其对每个志愿者能采集到训练人脸图像数量都是非常有限的,所以说人脸识别是个典型的“小样本”问题,这种“小样本”问题会使高维数据统计中的难题“维数灾难”更加恶化 [13]。如果有幸采集到足够多的训练样本,那么字典原子的数量会非常巨大,利用稀疏表示理论解决这种高维系统时,计算量巨大,因此不适合实际应用。一些基于稀疏表示的人脸识别算法采用PCA对高维的原始人脸图像预先进行降维处理。GRSC算法直接对高维的Gabor特征空间进行下采样,得到任意维度的低维特征子空间,保证冗余字典的原子数量大于原子的特征维数 [14]。对冗余字典降维之后,在低维表示空间实现测试样本的稀疏表示。最后利用最小
范数作为约束条件求方程的最优解。
稀疏表示理论表明,表示矢量越稀疏,重构出来的样本就越精确,因此基于稀疏表示分类的人脸识别算法强调了表示矢量“稀疏性”在正确分类中的重要性,并且强调只有最小
范数解才是最优解。
3. 基于主成分分析的遮挡人脸识别算法
传统的遮挡人脸识别一般分为五个步骤:遮挡人脸检测、遮挡区域定位、遮挡人脸对齐、特征提取和遮挡人脸分类 [15]。特征提取是人脸识别步骤中最重要的环节。特征提取的目的是得到图像对于分类有判别力的信息。例如,常用的特征提取方法有主成分分析法(PCA) [16]、线性判别分析法(LDA) [17]、局部二值模式(LBP) [18] 等。这些特征提取算法在一些特定的任务中取得了巨大的成功。
第一个将块方法应用于人脸识别的是Pentland等人,他们提出了一种分块特征空间方法,该方法可以分割人脸中更重要的部分,如眼睛、鼻子和嘴巴。然后利用主成分分析(PCA)提取这些零件的特征,最后对这些特征进行综合识别 [19]。该方法的关键在于特殊点的定位和人脸部分的选择 [20]。
3.1. 鲁棒主成分分析模型(RPCA)
从数学角度分析,用矩阵X来表示图像。
,其中低秩矩阵是A,稀疏(噪声)矩阵是E。鲁棒主成分分析模型解决的是从高秩、噪声多的图像数据中准确地恢复低秩矩阵。RPCA模型用公式(4)表示 [21]:
(4)
其中
为矩阵的
范数,
为矩阵的核范数。
。A是要恢复的原始矩阵,通常为低秩
矩阵;E为未知噪声矩阵;X是一个有噪声的矩阵。
对(4)构建增广拉格朗日函数得 [22]:
(5)
迭代低秩矩阵A为:
(6)
迭代稀疏矩阵E为:
(7)
3.2. 基于CNN和PCA的人脸识别算法
2015年,Chan等人将CNN和PCA结合提出了PCANet [23],PCANe的滤波器依然使用PCA,后面用二值化哈希编码做索引,使用二值哈希编码和分块直方图结合进行采样运算,最后得到的重采样层的结果作为整个PCANet的特征提取结果 [24]。
PCANet模型的形式是简化的深度学习模型。PCANet采用的权重是通过提取“感受区域”直接获得的。然后利用主成分分析提取主成分,每个权重都包含一个主成分。将直方图数据信息和直方图特征整合。最后得到新的直方图特征,通过SVM进行分类。
通过改进PCANet的遮挡人脸识别算法。首先对训练集进行特征点检测并打上标签,根据实际的遮挡类型将各式各样的特征的进行组合和补零操作,然后将部分特征点输入遮挡判别分类器,进行遮挡定位,使用识别分类器调用SVM模型组进行识别 [25]。在对人脸特征检测提取时,使用的是Haar特征,该算法使用了Viola-Jones算法来训练分类器。
4. 基于生成对抗网络的遮挡人脸识别算法
人脸图像修复属于图像修复里面比较特别的一类,与其他的图像修复不同,人脸图像的修复考虑的因素比较多。由于人脸特征相对较复杂,例如肤色、脸型、骨骼等,且修复之后的图像必须要符合人类的外观特性和五官结构等,要流畅自然以及合理。故属于图像修复中难度较大的一种类型 [26]。
图像复原可理解为对各种原因造成质量下降或者失真的图像尽最大可能恢复到原样,复原方法主要面向退化过程建模,在对其进行图像复原。图像修复属于图像复原的一种,指对各种原因造成的图像的遮挡或残缺的地方进行填补,使修复后的图像无论是纹理还是结构都是流畅且真实的,且符合人类的审美。在日常生活中,对于遮挡人脸的图像修复可以有以下公式(8)来表示:
(8)
其中,
代表遮挡图像,原始图像用
来表示。M代表二值化的遮挡人脸,作用是用于模拟图像遮挡部位,在M中将像素值设为2表示未遮挡区域,为0则表示0遮挡区域。
代表图像的未遮挡区域,
来代表图像的遮挡区域。
4.1. 生成对抗网络训练过程
2014年,Goodfellow等人提出了生成对抗网络(GAN) [27],由于其完美的融入了博弈论的理念,使得其对于不同类型的数据处理有着很好的效果,特别是对一些严重受损的图像有着很好的修复效果,比如图像的超分辨率重建,图像修复等。随着越来越多的学者去研究该框架,它成为近年来无监督学习最有前景的深度学习方法之一。
GAN的基本框架如图2,一个最原始的GAN模型,该模型的主要思想是通过概率生成模型对随机噪声进行逆变换采样,从而获得生成的概率分布。GAN的主要原理是使生成的概率分布可以最大限度的接近真实数据的分布,从而得出真实数据 [28]。

Figure 2. Basic framework of generating countermeasure network
图2. 生成对抗网络的基本框架
生成对抗网络GAN主要由生成器和判别器构成。每个部分都可以是任一种神经网络,例如人工神经网络、卷积神经网络、循环神经网络等 [29]。判别器必须以分类器收尾 [30]。
生成对抗网络的前一部分是在生成器内输入均匀分布的噪声,卷积层则根据输入的噪声获取特征信息。将获取的信息与真实分布的差异最小化。生成器能够将输入的噪声转换为各种其他类型的数据分布,如图3所示:
在判别器进行训练的真实数据和生成数据不断博弈。博弈达到一定程度时,真实数据和生成数据便会被区分出来。公式如下:
(9)
为了使生成网络生成的图像能以假乱真,应尽量提高生成网络所生成数据和真实数据之间的相似度。可使目标函数测量这种相似度。生成网络和判别网络各有目标函数,训练过程中也分别试图最小化各自的目标函数。GAN最终的目标函数如下:
(10)
其中,
是判别网络模型,
是生成网络模型,
是真实数据分布,
是生成的数据分布,E是期望输出。
在训练过程中,D (判别网络,discriminator)试图最大化公式的最终取值,而G (生成网络,generator)试图最小化该值。如此训练出来的GAN中。生成网络和判别网络之间会达到一种平衡,此时模型即“收敛”了,这种平衡状态就是纳什均衡。训练完成之后,就得到了一个可以生成逼真数据的生成网络,即生成对抗网络的训练模型。
4.2. GAN网络模型的优缺点
GAN网络模型的优势:首先,根据实际的结果来看,特别是一些对于图像的处理,它们可以产生比其他算法更清晰的图像。其次,在学习过程中不需要使用马尔可夫链进行重复采样或推断,完美地避免了最困难的近似计算概率问题,并且生成样本的计算成本也很低。接着GAN的框架能够训练任何一种生成器网络。不拘泥于固定的函数方法,任何生成器和鉴别器都会有用,也不需要提前建模,使用起来非常灵活有很大的创新空间。最后通过大量的研究实验证明GAN生成的样本比一般方法更加优质 [31]。
GAN存在的问题:理论上讲,GAN的局限性也很大,在对GAN参数设定时,轻微的参数调整可能导致的结果截然不同。GAN模型因为没有使用损失函数,所以被定义为极值问题,训练过程也难以控制,无法得知模型的训练是否有进展。
在GAN的学习过程中极有可能发生模式崩溃,如果生成器一直生成效果不好或者极差,那么整个网络将无法继续训练,而且鉴别器也会崩溃。如果鉴别器训练的过于优秀,生成器就会损失梯度,无法继续学习训练,那么鉴别器也会无法继续训练,可以说是牵一发而动全身。在GAN的优点中提到不需要提前建模,可以说既是优点也是缺点,无需预先建模会导致模型太自由而且不可控制,对于数据量过大,简单的 GAN 就不太可控了 [32]。
5. 基于卷积神经网络的遮挡人脸识别
卷积神经网络已被广泛应用于人工智能、医疗生活等领域。在此之前,一般采用人工设计算法来解决实际问题,比如采用Sobel、Prewitt、Roberts算子的边缘检测,采用Harris、FAST、SURF等角点检测,采用传统聚类、分类器如稀疏分类器、支持向量机、K近邻分类器等进行分类 [33]。图像分类的主要任务是特征提取和图像分类,分类结果的质量主要受这两方面影响。卷积神经网络同时解决了人工特征设计的局限性,因为它能够从训练样本中主动学习特征。
5.1. 卷积神经网络框架(Convolutional Neural Network, CNN)
卷积神经网络框架基本由输入层、卷积层、池化层、全连接层组成,图4为卷积神经网络的基本框架 [34]。

Figure 4. Convolutional neural network framework
图4. 卷积神经网络框架
5.1.1. 输入层
卷积神经网络的入口就是输入层。在遮挡人脸图像分类中,通常使用遮挡人脸图像作为输入 [35]。在实际情况下,黑白的人脸图像只有一个通道,深度是1;而彩色的人脸图像是有三个通道(RGB),深度赋值一般为3,其他特殊的情况根据图片的通道来判断深度赋值。
有3种常见的图像数据处理方式:
1) 去均值:每个维度减去对应维度的平均值,输入数据中心化降为零。
2) 归一化:对人脸图像执行一些标准化的处理,将其转换为固定的标准形式。
3) PCA/白化:通过丢弃信息较少的维度和保留主要特征信息,对数据进行降维处理。
5.1.2. 卷积层
卷积神经网络最重要的部分是卷积层。卷积层由多个卷积单元组成,通过固定算法进行最优化从而得到卷积单元的参数。最前面的卷积层只能提取到低级特征,经过多次的卷积层卷积可以提取到更加复杂的高级特征 [36]。
众所周知神经网络是完全连通的,而卷积网络是局部相关的。其过程是将每个神经元视为计算局部数据的滤波器。连续滑动数据窗口,直到覆盖所有样本。如图4所示,一共有5个卷积层(Convolutional layer 1, Convolutional layer 2, Convolutional layer 3, Convolutional layer 4, Convolutional layer 5),常用的卷积核大小有3 × 3和5 × 5 [37]。
三个重要参数:depth深度,stide步长,padding填充值。
5.1.3. 池化层
池化层是通过模仿人类视觉系统来降低数据的维数,用更高层次的特征来表示图像。
实施池化的目的:
1) 降低信息冗余;
2) 保证图像特征的不变性,迭代出最能表达图像信息的特征;
3) 防止过拟合。
池化层一般使用均值池化,中值池化,最大值池化等进行操作 [38]。
5.1.4. 全连接层
全连接层是将前面的网络结构预处理和迭代形成的的局部特征信息进行内积 [39],全连接层是将前面学到的特征信息映射到样本空间,相当于一个“分类器”。全连接层的输出数据被送到出口,最后使用softmax进行分类 [40]。
5.2. 基于卷积神经网络的遮挡人脸识别(LLE-CNNs)
遮挡人脸检测存在两个大的挑战:1) 因遮挡造成的不完整人脸特征2) 因遮挡造成的噪声特征 [41]。例如对于一张左侧人脸图像,其嘴巴、下巴、鼻子都被口罩遮挡,导致大部分人脸特征点都是不可见的,从遮挡区域提取的人脸特征向量含有大量噪声。在这个情况下需要我们从人脸以外的区域提取额外的信息用于恢复人脸特征,降低噪声的影响。
5.2.1. 预处理模块(Proposal Module)
此模块使用两个API预训练CNN模型,来提取人脸特征和对特征内的人脸使用VGG-Face提取高维特征。
Proposal Module:在此模块使用了两层卷积神经网络用于人脸候选区域生成和特征提取。人脸候选区域的生成使用了一个P-Net、三个卷积层和一个全连接层。在检测特征人脸时阈值设置要低一些,这样便可以得出较多的人脸候选区域。最后对生成的人脸候选区域提取的特征信息进行处理。
5.2.2. 嵌入模块(Embedding Module)
Embedding Module主要实现重建因遮挡而丢失的人脸特征,并抑制遮挡区域引入的噪声特征 [42]。
对预处理模块提取的特征,重建因遮挡而丢失的人脸特征,并抑制遮挡区域引入的噪声特征 [43];最直观的解决方案就是:建立一个额外的数据集(包含各类人脸、人脸外部提取的特征),从中找到与提取的模块最相似的特征,并用这些特征来定义;换句话说就是:将预处理所对应的特征映射至由各类有代表性的面部、遮挡部分提取的特征所生成的特征子空间中。
5.2.3. 验证模块(Verification Module)
Verification Module对人脸的位置和面部信息的微调,通过被修复的人脸特征进行对比验证 [44]。
5.3. LLE-CNNs实验效果
LEE-CNNs在数据集MAFA上对其他6个最先进的人脸检测器都完胜,并且在orientation、degree of occlusion、mask type其他条件上都是性能领先。但是,LEE-CNNs对高遮挡的人脸检测性能并不好,此外对偏转人脸的检测性也很差。表1为与其他算法的检测结果对比:
目前的遮挡人脸识别算法还没有出现一个极其完美的解决方案,但是针对某些特定的遮挡环境,国内外设计的算法能够合理解决,综合目前主流的算法解决遮挡环境下的人脸识别还需要继续深入研究,而在遮挡人脸识别的数据集上并不完善,神经网络的训练方法也在大多数情况下并不适用。因此,建立完善的数据集,设计轻量级的神经网络训练方法,将卷积神经网络应用在遮挡人脸检测,是未来解决遮挡人脸识别问题的重要方向 [45]。
6. 结束语
本文综述了目前主流的遮挡人脸识别算法,其中包括基于稀疏表示的遮挡人脸识别算法、基于主成分分析的遮挡人脸识别算法、基于生成对抗网络的遮挡人脸识别算法和基于卷积神经网络的遮挡人脸识别算法,阐述了各种方法的基本思想和原理,分析了目前存在的问题和未来的研究方向。