【人脸老化】Learning Continuous Face Age Progression A Pyramid of GANs

Learning Continuous Face Age Progression A Pyramid of GANs

文献全称:Learning Continuous Face Age Progression A Pyramid of GANs
文献出处:[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2019: 1-1.
数据集:MORPH、CACD、FG-NET
是否有源码:无源码

论文贡献(亮点)

  • 引入了一种基于多尺度金字塔特征的判别器,可以使生成的老化图像具有更多精细的细节。
  • 针对CVPR 2018版本的结构做了调整,引入了年龄条件和多判别器结构,即使用一个生成器完成多个域的迁移。

实验效果图
【人脸老化】Learning Continuous Face Age Progression A Pyramid of GANs

模型框架图
【人脸老化】Learning Continuous Face Age Progression A Pyramid of GANs

主要思想

(这篇是在作者团队CVPR 2018年论文的基础上做了进一步改进,目前还未查看上篇论文。)
以往基于GAN的方法大多是在生成器上做文章,而本文的生成器则使用较为普通的生成器结构,而指导生成任务的重点被放在了判别器部分,判别样本的部分主要分为两部分:

  • 特征提取网络ϕage\phi_{age}:使用预训练的分类网络VGG16,提供对应样本的多层深度特征
  • K个判别器:每个判别器对应不同的年龄域,为生成器提供相应的年龄分布

如上述模型框架图所示,图中展示的判别器部分为单个判别器的结构,判别器网络具有四条路径,特征提取网络ϕage\phi_{age}的四层低层深度特征分别为判别器各路径的输入,即判别器对样本多尺度的深度特征进行判别,而非评估RGB图像样本,低层深度特征蕴含较多的纹理结构信息,从分布的角度来看,该结构相当于是让生成样本在深度特征空间中与真实样本的分布靠拢,从而让生成器学习到更多的纹理结构信息。

损失函数

1.像素损失
Lpixel=ExPyoung,c1W×H×CG(x,c)x22L_{pixel}={\Bbb E}_{x~P_{young},c}\frac{1}{W×H×C}||G(x,c)-x||^2_2 其中xx表示输入样本,PyoungP_{young}表示年轻样本的分布,cc表示输入的年龄条件。该损失在训练时,每15个生成器迭代使用一次,间断性地为生成器提供像素级特征,解决颜色失常等问题。
2.身份保留损失
Lidentity=ExPyoung,cd(ϕid(x),ϕid(G(x,c)))L_{identity}={\Bbb E}_{x~P_{young},c}d(\phi_{id}(x), \phi_{id}(G(x,c))) 其中ϕid\phi_{id}表示身份验证网络,dd表示平方欧氏距离。
3.对抗损失
LGAN_Gi=ExPyoung,cH(1,Di(ϕage(G(x,ci))))L_{GAN\_G_i}={\Bbb E}_{x~P_{young},c}H(1,D_i(\phi_{age}(G(x,c_i)))) LGAN_Di=ExPyoung,yPold,cH([1,0,0],[Di(ϕage(y)),Di(ϕage(G(x,ci))),Di(ϕage(x))])L_{GAN\_D_i}={\Bbb E}_{x~P_{young},y~P_{old},c}H([1,0,0],[D_i(\phi_{age}(y)),D_i(\phi_{age}(G(x,c_i))),D_i(\phi_{age}(x))]) 其中yy表示真实目标域样本,PoldP_{old}表示年老域分布,HH表示最小平方差距离。
对抗损失使用的是LSGAN,判别器接受三类样本:

  • 目标域样本:正样本
  • 源域样本:负样本
  • 生成样本:负样本

4.TV损失
total variation regularizer loss,该正则约束可以激励生成效果具有空间平滑性。

总损失函数
LG=λai=1LGAN_Gi+λpLpixel+λiLidentity+λtLtvL_G=\lambda_a\sum_{i=1}L_{GAN\_G_i}+\lambda_pL_{pixel}+\lambda_iL_{identity}+\lambda_tL_{tv} LDi=LGAN_DiL_{D_i}=L_{GAN\_D_i} 其中各损失项的权重为:
λa=1000,λp=0.1,λi=0.005,λt=1e6\lambda_a=1000,\lambda_p=0.1,\lambda_i=0.005,\lambda_t=1e-6 训练时的学习率为0.0001,每2000个迭代的权重衰减因子为0.5,据笔者推测,生成器对抗损失权重λa\lambda_a设置这么大,应该是相较于生成器,判别器网络规模过于庞大,较大权重用于平衡两者的博弈效果。

实现细节

数据域选择
根据三个数据集的分布情况,年龄域选取为[14-30],[31-40],[41-50],[51-60],因任务主要涉及老化,所以生成过程用[14-30]域往另外三个域进行迁移。因为FGNET数据集的样本量较少,因此常被用于测试阶段。
【人脸老化】Learning Continuous Face Age Progression A Pyramid of GANs
网络结构
生成器网络结构如下图。
【人脸老化】Learning Continuous Face Age Progression A Pyramid of GANs
特征提取网络ϕage\phi_{age}为ImageNet预训练的VGG-16,选取的特征层分别为第2、4、7、10层。因无源码,特征层应该为下图中红框选中的卷积层。
【人脸老化】Learning Continuous Face Age Progression A Pyramid of GANs
判别器网络结构如下图
【人脸老化】Learning Continuous Face Age Progression A Pyramid of GANs
其中判别器的输出效果图如下所示,四个路径在空间上进行拼接,判别器二分类的标签也设置为相同分辨率。
【人脸老化】Learning Continuous Face Age Progression A Pyramid of GANs

人脸身份保留网络为预训练的VGG face网络。

训练细节
人脸图像的裁剪分辨率为224×224,年龄条件使用的是one-hot形式,生成器输入采用拼接形式,单个样本的输入形状为224×224×(3+k),选择了3个判别器,所以这里k值为3,三个判别器在每个迭代中交替训练。训练采用的是交叉检验法,分为5个fold,batch size为4,总迭代次数为150000,作者使用的是GTX 1080Ti GPU,训练了25个小时。
其他细节在损失函数中已阐述,不再赘述。

连续年龄变化

简单来说,就是控制输入的年龄条件,因为年龄条件张量的值在[0,1]区间,所以将对应域的条件值在[0,1]区间连续取值,可以达到一个年龄渐进的效果,效果图如下所示。
【人脸老化】Learning Continuous Face Age Progression A Pyramid of GANs

判别器讨论&消融实验

【人脸老化】Learning Continuous Face Age Progression A Pyramid of GANs
图(a)为传统的判别器。
图(b)为ACGAN的判别器结构,与判别器平行的是一个分类器,用于对样本进行年龄分类,这种情况下,相当于只有分类器分支实际控制着年龄相关的信息,而因为判别器接受的是整个数据集中的样本信息,相当于仅提供人脸分布信息,并不能为生成器提供年龄相关的信息,生成效果中存在不自然的年龄变化纹理。
图(c)为多分支的判别器结构,每个分支对应一个年龄域,相当于是让判别器也参与提供年龄信息的任务,但由于样本分布较为复杂,抑或是作者的网络设计问题(因未提供源码,纯属猜测),使用单一的多分支判别器不能够精确地模拟多个年龄域的复杂分布,且会出现mode collapse的问题。
为了解决这个问题,图(d)则为每个年龄域分别分配一个判别器,即让每个判别器单独负责模拟一个年龄域的分布,该结构即为本文介绍的判别器结构。
下图为对比效果,其中(a)行表示为测试人脸,(b、c、d)行分别对应上图中的对应结构。
【人脸老化】Learning Continuous Face Age Progression A Pyramid of GANs
消融实验
消融实验主要是检验金字塔结构的贡献,在本文的方法中,金字塔特征分别对应四个路径的判别器,因此对照组的设定为使用一个路径的判别器结构,选中的路径为第一个路径。对照实验效果如下图。
【人脸老化】Learning Continuous Face Age Progression A Pyramid of GANs
【人脸老化】Learning Continuous Face Age Progression A Pyramid of GANs
从对照实验结果可以看出,金字塔结构可以提供更多精细的年龄变化细节。

实验结果

评估年龄老化主要有两个指标:

  • 年龄分布
  • 人脸保留度

这两个指标的预测方法均使用Face++的人脸分析工具。由于论文中未将这两个指标与先前的方法进行对比,因此下面指标结果参考意义有限。

年龄分布
通过年龄分布来判断生成效果的年龄精度。
【人脸老化】Learning Continuous Face Age Progression A Pyramid of GANs

人脸保留度
人脸保留度主要是用于判断生成人脸与源图是否为同一个人。对于每个测试人脸,比较对主要为输入人脸和相应的生成脸:[test face, aged face 1/2/3]。也在生成的人脸之间进行了比较。
【人脸老化】Learning Continuous Face Age Progression A Pyramid of GANs

参考文献

  1. Yang H, Huang D, Wang Y, et al. Learning Continuous Face Age Progression: A Pyramid of GANs[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2019: 1-1.