也许每个年轻人都会好奇自己年老之后会长成什么样。借助神经网络,现在人们能够一窥自己的未来容颜了。法国 Orange Labs 和 Eurecom 的研究者提出了一种使用条件生成对抗网络的能合成不同年龄的人脸的方法 acGAN。
论文地址:https://arxiv.org/pdf/1702.01983.pdf
1 引言
这篇论文介绍了条件生成对抗网络(cGAN)在人脸老化方面的一个非常有趣的应用。也即,你能使用这个 cGAN 合成一个人在不同年龄的人脸图像。对于研究领域,该方法可被用于提升“跨年龄人脸识别”的表现。对于日常应用,除了娱乐应用之外,还可以用于寻找失踪的孩童。
这篇论文主要有两大贡献:
- 他们设计了年龄条件生成对抗网络(acGAN)来生成所需年龄类别内的人脸图像。
- 他们提出了一种隐向量优化方法,让 acGAN 可以在保留原来身份的同时重建输入的思维人脸图像。
2 方法和实验
acGAN 是如何工作的?
如下图所示,在 acGAN 训练完成之后,我们首先使用身份保留优化(Identity Preserving Optimization)来寻找一个最优隐向量 z_star,该向量允许我们重建出尽可能接近原始图像 x(年龄标签为 y_0)的人脸图像 x_bar。然后,我们基于目标年龄标签 y_target,让 acGAN 使用隐向量 z_star 生成目标年龄的最终人脸图像。
2.1 训练 acGAN
类似于传统 cGAN,acGAN 的训练过程可以表示成对下列函数(1)的优化:
其中,θ_G 和 θ_D 分别为 G 和 D 的参数,y 是训练集 x 的附加标签(即 x 的条件)。在这个项目中,y 是六维的 one-hot 向量,分别对应六个不同的年龄类别。
2.2 近似人脸重建
为了使用给定的初始人脸图像生成目标年龄标签的人脸图像,应该构建从具有标签 y 的输入图像 x 到隐向量 z 的映射,因为 cGAN 并没有用于这种逆向映射的明确机制。因此,研究者使用 10 万对数据训练了一个编码器,这是一个可近似逆向映射的神经网络。这个编码器的训练目标是最小化估计的隐向量 z_0 和基本真值隐向量之间的欧几里德距离。
但研究者发现,尽管近似的 z_0 能得到视觉上优良的人脸重建结果,但有 50% 的案例丢失了原有图像的身份。因此,他们提出了一种全新的“身份保留”方法来改善这个 z_0。
其关键技巧是使用一个给定的人脸识别神经网络 FR,从而将输入的人脸图像 x 嵌入成 FR(x) 以及将重构的图像 x_bar 嵌入成 FR(x_bar)。最小化这些嵌入之间的欧几里德距离,而不是 x 和 x_bar 之间的欧几里德距离(即像素级优化),就更有可能维持原有人脸图像的身份。
具体看看结果,下图展示了像素级优化方法和身份保留(IP)方法之间的差异。c 部分表明,使用身份保留方法可以更好地维持人脸表情和发型。d 部分展示了这个 acGAN 使用身份保留隐向量与年龄标签作为输入所生成的图像。
下图展示了这个 acGAN 使用一个随机隐向量与不同年龄标签的结果。
为了量化身份保留方法与像素级方法之间的差异,研究者使用了 OpenFace 来识别所生成的人脸图像,并将识别结果作为了评估指标。从下面的表格中可以清楚看到,身份保留方法能在生成过程中保留更多人脸特征(人脸标识),因为其 FR 分数远远高于像素级方法和初始生成结果的分数。
3 总结
acGAN 的主要优点是使用了“身份保留”隐向量优化方法来在重建中维持原来的身份。
该方法可用于人脸数据集的合成式增强,还能用于提升跨年龄场景中的人脸识别方案的稳健性。
4 分析师的思考
点评:
这篇论文提出了一种使用 acGAN 合成指定年龄的人脸的方法。从上面的结果看,这个方法在很高的程度上实现了目标。这篇论文的新思想是使用一个当前最佳的人脸识别网络来对输入人脸图像进行嵌入化处理,以获得人脸的高层面特征表达,这样该人的身份就能在重建过程中得以维持。此外,研究者还使用了 OpenFace 来识别所生成的人脸,以评估这个 acGAN 的人脸重建和生成表现。这种操作很有说服力。
这篇论文没有广泛地引用在内容风格解构和风格迁移方面的研究。使用 GAN 来解决问题,同时结合优化技术的思想可以看作是这两者的结合。如果能与相关论文进行比较,会更好。
可能存在的问题:
- 从上面的图片中我们可以看到,“0-18”年龄组和“60+”年龄组区别很明显,但其它四组的区别并不大,尤其是女性人脸。原因可能是研究者在预处理这些训练数据时没有考虑化妆的情况。化妆在日常生活中也会干扰我们对年龄的预测。换句话说,除了使用“身份保留”进行训练非常重要之外,训练数据的选择和预处理也非常关键。
- 这个项目仅有 6 个年龄组,每一个组都有 10 年或以上的跨度。对于 30-60 岁的人来说,这样的设置方式是合适的。但对于孩童和青少年,他们的面部会在成长过程飞速变化。所以“0-18”年龄组的设置并不如其它组别那样合理。
可能的改进措施:
- 将第一组再分成若干小组,这样所得到的结果会更有说服力。
- 仅使用无化妆的人脸图像来训练编码器部分,这样才能提取和维持与年龄相关的关键特征。
比较之前的研究工作:
我使用了微软的 https://how-old.net/ 来预测所生成的人脸的年龄。结果如下:
对于男性人脸,这个 acGAN 的表现相对较好,但“40-49”与“50-59”年龄组仍然偏离了。对于女性人脸,正如之前说的那样,前面几组的差别实在太小了,所以在这里被分到了同一个年龄组。
另一方面,这个年龄预测网络应用能够正确检测 12 张生成的人脸,这意味着 acGAN 确实可以生成人脸图像来实现人脸数据集的合成式增强。
另外,我还使用了 FaceApp 和 Oldify 应用来老化人脸。结果如下:
前两张图像来自 FaceAPP(基于神经网络),第三张来自 Oldify。很显然,这篇论文所提出的方法的结果比这些流行的智能手机应用的结果要好得多。这个方法可以生成不同年龄的人脸,这也与这两个应用不同。