SynFace Face: Recognition with Synthetic Data 阅读笔记

SynFace: Face Recognition with Synthetic Data

该文主要目的是将合成的人脸数据用于人脸识别模型的训练,指出了用生成图像来训练无法达到真实图片效果的原因,并给出了解决方法。文中同时还讨论了数据集的深度和广度对模型性能的影响,并研究了数据中一些属性如光照、表情、姿势等对训练结果的影响。
SynFace Face: Recognition with Synthetic Data 阅读笔记_第1张图片

背景

近年来,人脸识别在一系列具有挑战性的问题上取得了非凡的进展,比如不同年龄匹配、多模态模态,遮挡人脸等问题。在这些发展中,不单单是对网络模型的改进或是对损失的改进,数据集的规模和质量的提升,对人脸识别模型性能提升也同样有很大的帮助。然而随着互联网的发展,数据集的规模不断扩张的同时,由于噪声标签和人脸隐私等问题,使得人脸识别模型的性能很难进一步提升,同时,许多人脸训练数据集也存在长尾问题,即头类样本数多,尾类样本数少等问题。因此,为了解决人脸数据质量低和涉及隐私等问题,使用合成的人脸数据是一个不错的选择和探索。

在本文中,作者的主要工作有如下三个部分:

  1. 通过一个可控的人脸合成模型(DiscoFaceGAN,并非该文 工作),生成了非真实存在的大规模人脸数据,解决了隐私问题的风险;
  2. 探讨不同人脸数据集属性的影响,如深度(每个身份的样本数量)和宽度(身份数量);
  3. 分析不同面部属性(如表情、姿势、光照)的对模型性能的影响

探索分析

作者将DiscoFaceGAN作为基本的生成模型,先与真实数据训练得到的模型进行对比分析,下图是分别在真实人脸数据与混合人脸数据上的结果对比,可以看到混合人脸数据训练的模型无法很好地适应真实的人脸数据集。

在这里插入图片描述

进一步作者使用MDS可视化了真实样本和合成样本的特征分布结果,明显合成人脸的类内间距比真实人脸的要小,图中浅蓝色三角、蓝色三角、红色圆圈分别表示了不同精度下的合成人脸特征的类内分布情况,可以看出随着类内间隔的增大,模型训练的精度也得到了提升
SynFace Face: Recognition with Synthetic Data 阅读笔记_第2张图片

身份混合

为增大类内间距,受到mixup的启发,作者提出通过插值两个不同的身份作为一个新的中间身份,并相应地改变标签,来扩大阶层内的变化。具体来说,生成人脸模型的身份系数空间引入mixup,即Identity Mixup (IM),得到Mixup Face Generator。数学表达如下公式(1):
α = φ ⋅ α 1 + ( 1 − φ ) ⋅ α 2 η = φ ⋅ η 1 + ( 1 − φ ) ⋅ η 2 ( 1 ) \begin{aligned} &\alpha=\varphi \cdot \alpha_{1}+(1-\varphi) \cdot \alpha_{2} \\ &\eta=\varphi \cdot \eta_{1}+(1-\varphi) \cdot \eta_{2} \end{aligned} \qquad(1) α=φα1+(1φ)α2η=φη1+(1φ)η21

其中α1、α2为λ空间的两个随机恒等系数(详细需要去了解下 DiscoFaceGAN的输入),η1、η2为对应的类标。注意,加权比ϕ是从线性空间随机采样的,线性空间从0.0到1.0,间隔为0.05(即,np.linspace(0.0, 1.0, 21))。
下图是权重系数ϕ 从 0 到 1 图像生成变化的过程,可以看到,即便是中间的混合人脸,生成的图像也是蛮逼真的。
SynFace Face: Recognition with Synthetic Data 阅读笔记_第3张图片

领域混合

进一步,为了缩小模型早生成数据与真实数据表现上的差异,作者提出了Domain Mixup(DM)领域混合。具体来说,作者利用一小部分带有标注的真实数据加上大规模的生成数据,通过DM的方式来训练模型,DM具体数学表达如公式2,X_s与X_R分别代表生成和真实的人脸图片,相应的其标签也随之线性改变。
X = ψ ⋅ X S + ( 1 − ψ ) ⋅ X R Y = ψ ⋅ Y S + ( 1 − ψ ) ⋅ Y R ( 2 ) \begin{aligned} &X=\psi \cdot X_{S}+(1-\psi) \cdot X_{R} \\ &Y=\psi \cdot Y_{S}+(1-\psi) \cdot Y_{R} \end{aligned} \qquad (2) X=ψXS+(1ψ)XRY=ψYS+(1ψ)YR2

同时为探索数据集的深度(每个身份的样本数量)和宽度(身份数量,作者也对比了不同身份数量与每个身份下图片数量的数据集训练效果。其中。“Mix N S”表示N个真实身份的混合,每个身份S个样本,Syn合成数据为10K个身份,每个身份50张人脸图片。

SynFace Face: Recognition with Synthetic Data 阅读笔记_第4张图片

深度与广度探索

进一步为了探索生成数据集的宽度(即类别数量)和深度(即类内样本数量) 对识别准确率的影响,作者在LFW数据集上做了一些消融实验,如下图所示。 可以看到随着深度和宽度的增加,准确率都是逐步上升的。但是深度在达到20之后,准确率就开始逐渐饱和。通过观察(a)(e)可以看到,它们具有相同数量的总样本(50K),但是(a)极大地超过了(e),差距为4.37,说明了宽度相比深度承担了更重要的角色。另外通过引入Identity Mixup (IM),所有结果都得到了很大地提升,再次说明了IM的有效性。

SynFace Face: Recognition with Synthetic Data 阅读笔记_第5张图片

属性分析

作者后续还研究了不同人脸属性变化对训练的影响,通过保持其他特性不变,只改变当前探索的特性来研究单一属性变化的作用。
SynFace Face: Recognition with Synthetic Data 阅读笔记_第6张图片

可以看到不变(Non)和只变表情取得了最差的结果,这是因为这里生成的表情种类十分有限,基本上是微笑,故而可以等价成什么都不变。改变姿态和光照取得了巨大提升,这可能是因为测试数据集中的姿态和光照变化非常大的缘故。同样地,引入IM带来了稳定的提升,并且都达到了相似的准确率。潜在的原因是IM可以被视作为一种很强的数据增强,减少了各个特性对最终准确率的影响

总结

  1. 研究分析造成合成人脸数据训练表现不佳的具体原因。
  2. 提出了Identity Mixup (IM)与Domain Mixup(DM)来增大类内间隔和缩小领域间隔,通过实验证明了其有效性。
  3. 探索了不同深度和广度的数据集对结果的影响,当深度达到一定程度后,逐渐达到饱和,而提升数据宽度可以使得模型表现进一步提升。
  4. 研究了不同属性的影响,其中光照和姿态有较大的影响,通过IM方法同能消除这些影响。

利用合成人脸数据可以解决人脸隐私和噪声的问题,通过作者提出的方法混合方法,让合成人脸数据达到甚至超越了原始真实人脸训练的效果。最后还揭示了训练数据集的深度与宽度对于最终识别率的影响,并对比了几种属性的影响。

思考

1、实验精度是否非常依赖于生成模型,作者的工作更像是DiscoFaceGAN的应用,算是锦上添花的工作。
2、GAN网络一搬都比较难训练,使用的数据集是否对最后用来训练的模型影响比较大?
3、跨领域的融合是在像素级别上进行的(总感觉非常怪),是否要考虑人脸对齐的问题,定点融合是否需要?
后续笔者研究下DiscoFaceGAN的相关工作和实验效果。

你可能感兴趣的:(人脸识别,torch,深度学习,pytorch,人工智能)