领域适应在MFR中的应用

Masked face recognition using domain adaptation

论文 -- 细读 2024.9

由于缺乏带有身份标签的真实世界蒙面人脸数据集,大多数现有蒙面人脸识别方法直接在从现有未蒙面人脸数据集生成的合成蒙面人脸上重新训练模型[ 10 ]。这种方法的主要缺点是使用合成蒙面人脸不能保证人脸识别系统对现实世界蒙面人脸的性能

introduce

该网络使用了1)ResNet50作为网络的主干2)基于自注意力的refinement layer 3)使用领域对抗学习网络(DANN)来利用合成人脸和真实人脸。

真实人脸数据只有是否遮挡的标签,而没有身份标签。

2)refinement layer 利用注意力分数损失来对其遮挡和未遮挡人脸的激活区域。能够减少遮挡人脸和未遮挡人脸的类内差距,进而增强鲁棒性。

3) 领域对抗学习网络用来使真实人脸和遮挡人脸的特征分布一致。

领域适应在人脸识别领域早有运用,例如人脸识别适应低分辨率图像,适应不同姿势人脸图像。

source domain -> 未遮挡人脸 target domain -> 遮挡人脸

普通人脸识别在masked face 上的表现分析

人脸识别任务可以分为两类:

  • face verification --> 1:1识别即识别人脸对是否匹配
  • face identify --> 1:n 识别从人脸数据库中找到与输入人脸图片最匹配的图片

start-of-the-art 人脸识别器使 ArcFace

pure ArcFace

合成遮挡人脸使利用MaskTheFace 软件生成,即从LFW(Labeld Faces in the Wild)到MLFW。

模型的训练论文中没有给出,不知道是哪来的预训练模型

Accuracy
LFW 99.3%
MLFW 96.2%

从激活区域可视化中可以看到,遮挡人脸和未遮挡人脸在激活区域的分布上不同

未遮挡人脸是整个面部激活,遮挡人脸只有上部是激活的。

意思是要训练之后修改模型对遮挡人脸改为也是上部人脸激活,这样遮挡人脸和未遮挡人脸通过模型获得的表征会更加接近,以此来提高真确率

这样可能会有一个问题,模型不具备对上部人脸遮挡图像的识别能力。

对提取的特征使用PCA(主成分提取)得到的特征分布并没有完全重叠。

Retrained ArcFace --using synthetically face

利用MaskTheFace从 CASIA-WebFace得到MCASIA-WebFace

然后再MCASIA-WebFace上进行了Retrain

再MLFW上得到了98.5%的verification正确率,相比于pure有2.3%的提高

:satisfied: 高于G2D模型的97.75%,G2D模型的结果居然还没这个的baseline高

从激活区域图中c可以看到对下部区域的激活减弱了。

对提取的特征使用PCA(主成分提取)得到的特征分布再合成人脸上重合了,但是在真实人脸上没有重合。

PCA:从高维特征中提取到低维特征表示,类似于投影

Proposed method

  1. feature Extraction Backbone 可以是残差网络如ResNet-18 ,ResNet-50,用来提取特征的
  2. feature Refinement layer 是一个transformer,是用来对其激活区域的
  3. Identity Classification Layer 是一个分类损失层,可以用ArcFace
  4. Domain Adaptation Layer 是用来领域适应,特征分布转换。

2. Feature refinemnet layer

用来对激活区域进行对齐来提取关键特征的。是一个自注意力机制块,自注意力分数和value相乘输出

所以 注意力得分高的就可以代表这个区域是高度激活的

4.Domain Adaptation Layer

为了解决特征分布不重合的问题

使用Mask Label训练。

使用领域对抗(DANN)网络训练(与GAN网络类似),有一个generator和一个discriminator。

discriminator是要从generator生成的潜在特征中分辨出蒙面特征,是一个分类器,分类该图片是否蒙面,\(min(L(m))\)

generator是要让潜在特征中的蒙面特征难以被discriminator发现。是一个特征提取器,提取出的特征要让discriminator看不出来是蒙面图像。\[min(-L(m))\] GRL层实现梯度反转

据此,可以让蒙面和非蒙面特征分布重合。

Loss function

\(x\)表示未蒙面图像,\[\hat{x}\] 表示对应的合成人脸图像,\[x^r\]表示真实人脸图像,\[y\]表示\[X和\hat{X}\]的身份标签,\[y^r\] 表示真实人脸的蒙面标签(取值应该是0或1)。

attention score loss

注意力分数损失包含注意力分数,通过优化这个损失函数,能够让注意力分数在遮挡和未遮挡人脸上表现相同,从而减少类内差距。 \[ L_a = \frac{1}{B}\sum_{i=1}^B\parallel A(x_i) -A(\hat x_i)\parallel \] 可以看到要利用输入图像对来计算损失函数

这是优化Feature refinement layer的损失函数

Mask classificaton loss

是用来优化GANN网络的损失函数 $$ L_m = L_m^s + 0.5L_m^r\

L_m^s = -{i=1}^Blog{}+log{}\ L_m^r = -{i=1}{B}(yr_i)log{}+(1-y_i^r)log $$ 可以看到合成图片成对输入,真实图片单独输入

\(L_m^s\) 计算的是未遮挡人脸提取特征中未遮挡人脸特征占比,和合成遮挡人脸提取特征中遮挡人脸占比。

\(L_m^r\) 计算的是真实人脸提取特征中,如果是遮挡人脸,遮挡人脸特征占比,反之这是未遮挡人脸占比

这个Loss和可以反映模型提取了多少正确特征,加上负号翻转。

Identity classification loss

使用ArcFace loss

也是一种softmax损失计算方式。

实验

数据集

  • CASIA-WebFace (training)
  • MCASIA-WebFace (training)
  • RMFD --spilt into two part
    • RMFD_DA (training)
    • RMFD_FV (testing)
  • MFR2 (testing)
  • MFRFI (testing)

部署细节

  1. backbone 是完整的ResNet-50
  2. Feature Refinement layer

输出是512维的

  1. domin adaption layer -- mask classification layer

    输出是一个2维向量,表示masked标签

    1. identity classification layer

输出应该会接一个softmax计算ArcFace loss

结果

RMFD上的验证结果87.84,相比于STL,retrained ArcFace来说提升不大,可能是由于RMFD中人脸图像质量低,MTCNN无法对人脸进行对其,而导致的图像质量差。

在MFR2和MFTFI上有很高的正确率

分析添加的domain Adaptation和refinemen层的影响

可以看到只添加一层和原始层之间的对比关系

在RMFD上还是只有少量提升

总结

该论文在ArcFace的基础上添加了两层来帮助训练,训练的目的无非就是为了对齐遮蔽和未遮蔽人脸的提取特征,更准确的说应该是普通模型提取的特征向遮蔽人脸靠拢(不管是前部的激活区域,还是后部的特征分布)。让模型在提取参照人脸特征时学会“看到遮蔽时的特征“。

这种方法可能会减少在识别普通人脸时的准确性,不过这应该不是问题,在具体应用中,应该可以应用准确率更高的检测是否遮挡的模型先判断时遮挡人脸还是未遮挡人脸,如果时遮挡人脸再用遮挡人脸识别模型处理即可。

既然是为了让参照人脸提取特征向遮蔽人脸靠,那么我们为什么不直接对参照人脸进行预处理,而不修改模型,将待识别图像的遮蔽物合成到参照人脸上,再对参照人脸提取特征,是否会直接地使特征分布更加重合。进一步也可能会减少因不同遮蔽物引起的鲁棒性问题,因为参照人脸的遮蔽物由检测人脸遮蔽物而改变。

但是,为所有参照人脸合成上遮蔽物而不修改模型的化,可能会引起参照人脸之间的类内差距,依旧可能需要一定的迁移学习。

也即提高在MR-MP设置下的模型表现,本论文未进行这方面的实验。

在G2D的实验中,不同模型在MUR-MP和MR-MP中的表现差异没有特定规律,大部分模型在UMR设置下表现更好,少部分模型在MR下表现更好,不知道能不能提升在合成后的MR设置下的性能。


领域适应在MFR中的应用
https://jfsas.github.io/2024/09/30/领域适应在MFR中的应用/
作者
JFSAS
发布于
2024年9月30日
许可协议