CAAE解读

CAAE即Conditional Adversarial Autoencoder,这个概念最早来自论文Age Progression/Regression by Conditional Adversarial Autoencoder,发表于CVPR 2017。

问题设定

文章讨论的任务是Age Progression/Regression,指的是根据当前的人脸绘制出指定年龄的人脸,既包括预测未来年龄变大时的人脸(Age Progression),也包括估计以前年龄较小时的人脸(Age Regression)。

基本思路

作者首先假设人脸图像处于一种高维流形(high-dimensional manifold)中,然后我们希望的就是图像在这个流形中沿着某个特定方向移动,使得人脸反映的年龄出现特定的变化。


CAAE解读_第1张图片

在这个示意图中,虚线的轨迹就是理想的变化方向,它使人脸随着年龄的改变呈现自然的变化。

但是在高维流形中操作人脸图像是一件非常困难的事情,我们没法描绘出上述的轨迹。解决办法是把图像映射到低维的latent space中,可以在这个latent space中对代表原图像的向量进行操作,最后再把处理后的低维向量映射到高维流形中。这前后两次映射分别由Encoder和Generator实现,基本的示意图是:


CAAE解读_第2张图片

模型设计

创新往往不是一次到位的,这篇论文同样是站在巨人的肩膀上进行创新的。

上述的建模思路大致参考的是Adversarial Autoencoder(AAE),AAE的一个版本为:


CAAE解读_第3张图片

这个模型同样利用一个Encoder把图像映射成低维的latent variable z,然后与一个label向量拼接,传入一个Decoder中映射成高维图像,同时,用一个Discriminator约束z的分布,使其逼近预先设定的先验分布。值得一提的是,AAE同样也站在了Variational Autoencoder(VAE)和GAN的肩膀上:Encoder-Decoder的思想来源于VAE,加入Discriminator进行对抗训练的方式则是受到GAN的启发。

言归正传,这篇论文提出的模型名为Conditional Adversarial Autoencoder(CAAE),它与AAE的不同之处仅在于多设置了一个针对Decoder(Generator)的Discriminator,用于约束Decoder生成更加真实的图像。Decoder原有的约束只有“生成的图像与原图像的平方误差”,这个约束是像素层面的,因而容易使生成的图像虽然在像素上与原图像很接近,但整体上却显得很模糊,Discriminator的约束大大改善了这一问题。

从另一个角度,CAAE也可以被看作是GAN的改进——使用Encoder来对z进行建模,避免了原始GAN那种对z取样随机性很高的方式,从而使z的可解释性更强。

最终的模型就由一个Encoder、一个Decoder(Generator)及两个Discriminator构成:


CAAE解读_第4张图片

你可能感兴趣的:(CAAE解读)