Face Aging with Conditional Generative Adversarial Network 论文笔记
2017.02.28
Motivation:
本文是要根据最新的条件产生式对抗玩网络(CGANs)来完成,人类老年照片的估计。
主要是做了一下两个事情:
1. 根据年龄阶段,进行照片的老年估计,用 acGAN 网络来完成;
2. 提出一种 隐层变量优化算法(latent vector optimization approach),允许 acGAN 可以重构输入人脸图像,与此同时,保留原本人脸的个体。
猛地一看,这个流程图,其实是挺迷惑人的,我感觉。
按照上述流程图,来看看作者想要达到什么效果:
1. 首先给定一张输入图像 x ,假设年龄记为 y0,找到一个最优的隐层向量 z*,使得可以产生一个重构的人脸 x-,尽可能的和初始的人脸尽可能的相似。
2. 给定一个目标年龄 $y_{target}$,产生一张结果人脸图像 $x_{target} = G(z*, y_{target})$,简单的完成年龄的切换。
其实,这个文章是做了这么一个事情:
结合 条件产生式对抗网络 和 隐层向量之间的loss 来完成整个网络的训练。
首先,作者是在给定一张图像的基础上,进行人脸的老化估计。作者这里考虑了 输入随机 noise 对最终结果的影响。
自己随机的产生了一堆 noise Z,然后在条件--->> 年龄这个标签的条件下,利用对抗网络生成许多伪造的 image ;
由于是自己根据 noise z 生成的,这里相当于是 已经有了 groundtruth,我们训练一个 encode 网络,将输入的人脸图像,估计其 编码后的 向量 z* ;
通过不断地训练,可以得到 能够预测图像隐层编码的网络 Encoder 。
其次,我们文章的一个很重要的卖点在于,可以保持生成图像和输入图像是 相同的身份,是同一个人,那么,这里是怎么做到的呢?
因为我们知道,GAN 生成的数据,一般都是看起来有模有样,但是实际上是很难控制输出什么的。
本文之所以可以做到这一点,就是因为,在生成图像的过程中,加入了隐层变量 z 之间的 loss,即:
这样在生成图像过程中,考虑生成的图像和原始输入图像之间的隐层向量 z 之间的差距,尽可能的小,就可以将这个事情 model 的非常好!
总结起来就是,在生成图像的过程中,首先学习一个编码网络,可以预测图像的隐层变量。然后在 GAN 过程中,加入这个 loss,作为衡量输出图像质量好坏的一个标准。
这样,生成的人脸图像,不但可以尽可能的和原始图像保持是同一个人,另外,又可以,在条件 年龄的基础上,生成对应年龄阶段的人脸图像。
大致就是这么个流程。有任何疑问,请发邮件与我联系! wangxiaocvpr@foxmail.com