Occlusion Robust Face Recognition Based on Mask Learning with Pairwise Differential Siamese Network
论文:https://arxiv.org/abs/1908.06290
0 摘要
前几年进行了大量使用CNN进行人脸识别的研究,但是,现有的这些通用CNN模型对有遮挡的人脸的识别效果较差。基于人眼在进行有遮挡的人脸识别时主要关注的是未被遮挡的区域这一事实,作者提出了一个掩模学习策略并忽视掉被遮挡区域的特征进行人脸识别。通过对遮挡-未遮挡的人脸图像的最后一个卷积层特征之间的差异学习得到了掩模字典,字典中的每一个掩模用于描述被遮挡的人脸区域和人脸特征之间的对应关系。在测试时,根据输入图像的被遮挡的区域,选取匹配的掩模对特征进行逻辑与操作,从而使用剩余的特征进行人脸验证和识别任务。作者进行了大量的实验证明了本文思想的先进性。
1 简介
遮挡情况下的人脸识别是一个很有挑战性的任务,但在现实场景下,人脸区域被遮挡却经常发生(佩戴了太阳镜、围巾或口罩或者被其他物体所遮挡,如书或者水杯)。前面有的论文就提出了,未使用大量的被遮挡人脸图像进行特殊训练的深度CNN模型对遮挡人脸的识别效果并不好,因为遮挡会带来很大的类内变化和很高的类间相似性。
前面有论文使用人为添加部分遮挡后的人脸数据集进行人脸识别模型的训练,实验也证明了这种方法的有效性。但是,这种方法并没有从根本上解决问题,因为只保证了特征是从人脸的局部块按照相同的重要程度提取的,两个不同遮挡情况下特征的不一致性仍然存在。例如,除非训练的模型没有关注人眼的特征,否则未遮挡的自然人脸的特征中人眼区域的重要程度要比带了太阳镜的人脸特征中人眼区域的重要程度要高。
受人眼在人脸识别中更加关注未被遮挡的区域这一自然现象的启发,作者提出在识别过程中忽视被遮挡区域的特征进行识别。但核心问题是:给定一个进行了随机遮挡的人脸图像,如何知道哪些特征是和被遮挡区域对应的特征?对于传统的低层特征,如LBP、HOG和SIFT特征而言,因为图像像素位置和特征间存在明确的对应关系,这个答案很好获取。但是,对于深度CNN网络就无法直接获取对应关系。因此,首先就要解决特征和像素位置的对应关系。
作者设计了一个pairwise differential siamese network(PDSN),附带有掩模生成模块(mask generator moudule)进行遮挡区域和特征的对应关系学习。模型以同一个人的两组图像为输入,一张图像是不存在遮挡的自然图像,另一组图像是对面部进行了遮挡的人脸图像,两组图像的特征之间的差值被送入掩模生成模块,这可以理解成是一种注意力机制,鼓励网络去学习因为遮挡造成的特征变化。学习mask generator时的损失要考虑两项:第一项是对比损失,用于惩罚遮挡的和未遮挡的人脸卷积特征的过大的差异,第二项是分类损失,惩罚那些遮挡后的特征中对人员身份识别不利的部分。使用这两项损失,mask generator会找到特征中不利于身份识别的部分和和未遮挡人脸偏离过大的部分。
为了处理随机遮挡,作者首先把对齐后的人脸等分为几个块,忽视人脸的边缘区域,只在关键的人脸核心区域块进行PDSN的训练,然后对PDSN的学习结果进行二值化处理得到mask dictionary,字典中的每一项都叫做特征忽略掩模(FDM),用于表示当某个人脸块被遮挡之后哪些对应的特征应该被置为0.在测试阶段,将原始的特征和对应的FDM进行逻辑与的操作以忽视被遮挡区域所对应的特征,使用处理过后的特征进行比对可以实现人脸识别和验证任务。图1是本文思想的整体流程图。
2 本文方法
如图1所示,本文方法包含三个处理过程:
- 使用PDSN学习mask generator,获取人脸块和特征间的对应关系;
- 从学习到的mask generator中构建mask dictionary;
- 测试时,根据测试图像的被遮挡区域,从mask dictionary中选取与之对应的FDM与人脸特征进行逻辑与操作以消除被遮挡区域对识别的影响,然后使用处理过的特征进行人脸识别与验证任务。
2.1 学习mask generator
2.1.1 问题分析
把对齐后的人脸划分成N x N个互不重叠的图像块,表示成,目的是为每一个学习一个mask generator以便于找到该子块被遮挡后哪些特征会发生变化。作者实验时,设置N=5.
问题可以描述成,假设原始未遮挡的人脸图像的特征是,一旦图像子块被遮挡了,那么如何去学习一个mask generator,使用该mask generator与原始特征进行逐点相与的操作后就可以得到被遮挡图像的特征。在进行mask generator的学习之前,有两个问题需要考虑:
f的选择:
基于CNN的人脸识别模型,一般使用的都是分类层之前的最后一个全连接层的特征,但是,全连接层中的每一个神经元都和前面层的每一个输出之间存在联系,所以该fc层学习到的特征可能是遮挡区域和未遮挡区域特征间的混合。另外,最后一个fc层学到的特征和人员的身份高度相关,也就是说,对于不同的人,即便是遮挡了相同的区域,因为遮挡造成的特征变化情况也可能大不相同,如图2右图所示。但图2左图所示的因遮挡造成的最后一个卷积层的特征的变化情况则和人员身份的关联度较小,因此作者选用最后一个卷积层的输出作为这里的特征f。
的维度:
前面有论文为三维的卷积特征图学习一个二维的掩模,这是认为相同空间位置的C个通道具有相同的权重值,也就是说卷积特征的所有通道对同一个的遮挡的响应是一致的。本文作者对这个假设持怀疑的态度,并设计实验去证实局部遮挡对最后一个卷积层输出的特征的影响。作者设计了一个新的度量标准,叫做median relative rate of change(MED)去捕获因为遮挡造成的特征的变化的程度,即:
表示未遮挡的原始人脸图像,表示遮挡后的人脸图像,表示最后一个卷积层的特征中第个值因为遮挡造成的变化率。作者随机从CASIA-WebFace数据集中选取了N张图像,并随机添加遮挡,然后计算每一个图像对的值。MED的值可以近似用来表示在遮挡时第个特征值的变化程度。如果输入人脸图像的某个区域被遮挡了之后某个特征位置的MED很大,那么大概率因为遮挡引入了不合理的噪声会对识别效果造成负面影响。
图3给出了最后一个卷积层的8个通道的特征在三种类型遮挡时的MED值。明显可以看出,不同通道的特征值的变化情况并不一致,同一空间位置处,某些通道的值变化很大,而某些通道的值变化很小。在我们的主观想法里,同一空间区域的不同通道捕获的是同一图像块的特征,但这个实验说明对于遮挡的响应不同的通道是不一致的。因此,这里作者使用和卷积特征相同维度的mask,即。
2.1.2 PDSN
如图4所示,PDSN由一个骨干的CNN网络和一个mask generator组成,形成siamese结构。骨干CNN网络用于提取人脸图像的特征,对于遮挡和未遮挡的人脸图像使用的是同一个骨干CNN。PDSN中的mask generator各点的取值范围为[0,1],用于和原始特征进行逐点相乘:,表示最后一个卷积层的特征,表示第个人脸图像对中存在遮挡的人脸图像。两张人脸图像隶属于同一人,唯一的区别在于某一个图像的人脸块被遮挡了。设计mask generator的核心在于遮挡前后未被遮挡区域的对应的特征应该尽量保持一致。
作者提出通过最小化下面的损失来学习:
第一项用于衡量每一个特征对于识别的重要性,第二项用于衡量遮挡前后每一项特征的变化情况。
分类损失:
被遮挡后的人脸还是需要能够正确的识别出人员的身份信息,所以第一项损失为:
是进行掩模运算后的存在局部遮挡的人脸的特征,F是骨干CNN中最后一个卷积层后的全连接层,当然F也可以是平均池化层。
遮挡和未遮挡人脸图像对的特征差值损失:
mask generator的训练可以看作是一种注意力机制,鼓励模型去关注因为遮挡造成的较大数值变化的特征。因此,mask generator以遮挡和未遮挡人脸对的最后一个卷积层的特征差的绝对值为输入。
上面的对比损失会惩罚因为遮挡造成了较大变化的特征值。
分类损失和特征差值损失结合,训练得到的mask generator会找出对识别不利的特征及因为遮挡造成了较大变化的特征。
总体损失为:
实验中,作者设置以保证两项损失的取值范围大致相当。
以块被遮挡的人脸图像为输入,可以训练得到mask generator j。实验中,作者对被遮挡的图像进行了增广,如图4所示,添加了4个相邻块也被遮挡了的图像做输入,这样也能探究出不同块之间的依赖关系。
2.2 构建mask字典
对于每一个mask generator,首先输入大量的人脸图像对,其中一张人脸是未遮挡的真实人脸,另一种人脸是块被遮挡了的人脸图像,得到输出,P表示测试的图像对数,作者实验中设置P大约为20万。然后对各求均值,得到。因为被遮挡的块所对应的特征已经完全丢失了,因此需要对进行二值化处理,也就是设置中被遮挡区域所对应的位置处为0。具体的做法是设置中最小的个值为0,K = C x H x W,是一个超参数。
2.3 测试阶段
测试时,如果某个网格和遮挡区域之间的IOU大于了0.5,则表示该网格被正当了。如图1中图(a)就是第12,13,14个网格被遮挡了。那么该遮挡情况实验的FDM就是,&就是表示逻辑与操作。 将掩模M和图像特征进行逐点相乘操作,可以得到被遮挡的人脸的特征。
图5给出了被太阳镜和围巾遮挡后的人脸的FDM的8个通道的mask。
3 实验
3.1 实验细节
预处理:
使用MTCNN进行人脸检测;
使用相似度变换进行人脸对齐;
缩放到112 * 96;
遮挡检测:
训练了一个分割模型去检测人脸上被遮挡的区域,取得了很好的检测效果,如图6所示。
网络结构:
使用arcface论文中的refined resnet50做骨干网络,mask generator时一个简单的conv-relu-bn结构,最后使用sigmoid函数将输出映射到[0,1]。
训练:
训练包含三个阶段:
- 使用骨干网络+cosineface的损失函数,在webface上训练骨干提人脸特征的网络;
- 固定提人脸特征的网络,训练mask generator,作者发现人脸的边缘区域被遮挡后对识别准确率影响很小(< 0.1%),因此作者只关注人脸核心区域的mask generator,因此只是用了 3 * 3 = 9个人脸子块;
- 构建完mask dictionary之后,生成具有随机遮挡的人脸图像并获取其FDM,然后用这些(人脸,mask)对使用小的学习率去微调第一步的骨干网络。这一步的目的是减小mask generator的输出和二值化mask之间的差值,因此微调几个epoch就够了。
测试:
测试时,对输入图像进行人脸遮挡区域检测,特征仍然用的是人脸图像的fc层的特征,将这个特征和mask进行逐点相乘操作最为最后的被遮挡的人脸特征。人脸验证任务依然是两幅图像的特征相似度和阈值相比较,人脸识别任务是求测试人脸图像在特征集中的最近邻。
对比模型:
作者用了两种对比模型,第一种是目前在webface数据集上训练得效果最好的人脸识别模型,称之为trunk cnn;第二种和第一种参数设置相同,但是是在人为遮挡得webface数据集上训练得到的(平均遮挡了25%得人脸区域),这个模型称之为baseline。
3.2 消融研究
参数的影响:
取0.25时效果最好;
mask类型:
binary表示公式6所值的mask标注方法;soft表示保持学习到的mask的值不变,不进行二值化处理;soft+binary表示小于阈值的mask值设置为0,大于阈值的mask的值保持不变。从实验结果可以看出,binary和soft+binary效果一样好,而soft效果最差,说明了把被遮挡区域所对应的特征忽略掉是正确的,否则它们作为噪声存在会对识别造成负面影响。
训练mask generator的时候是否使用的影响:
从上表可以看出,使用训练mask generator的识别效果更好。
上图可以看出,使用两项损失联合训练得到的mask和被遮挡区域有很清晰的对应关系,但是只使用分类损失训练的mask完全是混乱的。
3.3 在LFW上的效果
3.4 在MegaFace竞赛1上的效果
3.5 在AR数据集上的效果
AR数据集包含来自于126个人的,包含面部表情变化、光线变化和遮挡的4000幅图像。有两种测试规则,规则1是使用每人多幅图像形成gallary set(或训练集);规则2是只使用每个人的一副图像形成gallary set。使用佩戴了太阳镜或围巾遮挡的人脸图像进行测试。测试结果如下表: