Towards Open-Set Identity Preserving Face Synthesis(CVPR18)

3. Identity Preserving GANs

输入两幅图像(xs,xa)(x^s, x^a)xsx^s指定identity信息,xax^a指定attribute信息(包括pose, emotion, illumination, and even background)
作者描述得比较保守,并没有保证保留background信息

生成一幅图像xx',拥有xsx^s的identity和xax^a的attribute
注:从Figure2中看到从xax^axx',background变了,这会影响实际应用

Towards Open-Set Identity Preserving Face Synthesis(CVPR18)
图中共有5个网络

  • the identity encoder network II,对xsx^s提取identity vector fI(xs)f_I(x^s)
  • the attributes encoder network AA,对xax^a提取attribute vector fA(xa)f_A(x^a)
  • the generative network GG,拼接identity和attribute vector作为输入,生成图像xx'
  • the classification network CC,计算P(cxs)P(c|x^s),即xsx^s属于每一个identity的概率
  • the discriminative network DD,判别真假图像

在整个framework中,使用网络AA去学习xax^a中包含的attribute信息,并不要求提供attribute annotation

3.1. Disentanglement of Identity and Attributes

给定一个含有identity annotation的数据库{xis,ci}\left \{ x_i^s, c_i \right \},以softmax loss训练分类网络II(还可以使用更加高级的人脸识别loss),具体如下
LI=ExPr[logP(cxs)](1) \mathcal{L}_I=-\mathbb{E}_{x\sim P_r}\left [ \log P\left ( c|x^s \right ) \right ] \qquad (1)

最终,使用最后一层pooling layer的输出作为identity vector

(xs,xa)(x^s, x^a)是成对输入的,共有2种情况
情况1:xs=xax^s=x^a,此时要求生成的xx'xax^a一模一样(惩罚程度大)
情况2:xsxax^s\neq x^a,此时要求生成的xx'xax^a大体相似(惩罚程度小)

于是可得Reconstruction loss,如下
LGR={12xax22if xs=xaλ2xax22otherwise(2) \mathcal{L}_{GR}=\left\{\begin{matrix} \frac{1}{2}\left \| x^a-x' \right \|_2^2 & \text{if $x^s=x^a$}\\ \frac{\lambda}{2}\left \| x^a-x' \right \|_2^2 & \text{otherwise} \end{matrix}\right. \qquad (2)
其中设置λ=0.1\lambda=0.1

xx'与网络AA有关,所以最小化LGR\mathcal{L}_{GR}可以训练网络AA生成更好的attribute vector
个人认为在xsxax^s\neq x^a时,使用MSE是没有道理的

使用KL divergence loss来约束attribute vector到一个先验分布P(z)N(0,1)P(z)\sim N(0, 1)
对于每一个xax^a,网络AA输出隐向量zz的均值μ\mu和方差ϵ\epsilon,然后使用KL divergence loss来衡量学习到的分布与先验分布P(z)P(z)之间的差异,如下
LKL=12(μTμ+j1J(exp(ϵ)ϵ1))(3) \mathcal{L}_{KL}=\frac{1}{2}\left ( \mu^T\mu+\sum_{j-1}^{J}(\exp(\epsilon)-\epsilon-1) \right ) \qquad (3)
其中μ,ϵRJ\mu,\epsilon\in \mathbb{R}^J

对于图像xax^a的attribute vector zz,实际上是通过采样得到的
z=μ+rexp(ϵ) z = \mu+r\odot \exp(\epsilon)
其中rr是服从N(0,I)N(0,I)的随机向量

3.2. Asymmetric Training for Networks GG, CC, and DD

引入判别器DD,最小化如下loss
LD=ExPr[logD(xa)]EzPz[log(D(G(z)))](4) \mathcal{L}_D=-\mathbb{E}_{x\sim P_r}\left [ \log D\left ( x^a \right ) \right ] - \mathbb{E}_{z\sim P_z}\left [ \log (D\left ( G(z) \right )) \right ] \qquad (4)

为了解决传统GAN中梯度消失的问题,借鉴了CVAE-GAN的思路
对于样本(xs,xa)(x^s, x^a),生成xx',定义fDf_D为网络DD的最后一层FC layer,于是提出一项pairwise feature matching loss为fD(x)f_D(x')fD(xa)f_D(x^a)之间的欧式距离,具体如下
LGD=12fD(x)fD(xa)22(5) \mathcal{L}_{GD}=\frac{1}{2}\left \| f_D(x')-f_D(x^a) \right \|_2^2 \qquad (5)

网络CC的任务是识别identity,loss定义如下
LC=ExPr[logP(cxs)](6) \mathcal{L}_{C}=-\mathbb{E}_{x\sim P_r}\left [ \log P\left ( c|x^s \right ) \right ] \qquad (6)
注:公式(6)与公式(1)一模一样

同样地,对于分类网络CC,定义fCf_C为网络CC的最后一层FC layer,然后计算fC(x)f_C(x')fD(xs)f_D(x^s)之间的欧式距离作为loss,可以更好地使xx'拥有xsx^s的identity信息
LGC=12fC(x)fC(xs)22(7) \mathcal{L}_{GC}=\frac{1}{2}\left \| f_C(x')-f_C(x^s) \right \|_2^2 \qquad (7)

实际上可以对网络的多个layer添加欧式距离约束,但提升只有一点点

3.1节中提到网络II是通过人脸识别(分类任务)训练出来的,而网络CC同样也是做人脸识别的任务,所以可以用同一个预训练网络来初始化

3.3. Unsupervised Training

理论上,整个框架在训练集上训练之后,应该具备了区别不同人的能力,但训练集的大小是有限的,倘若给定一个训练集以外的人脸,网络不一定能够识别这张人脸的identity

作者从互联网上收集了100万各式各样的无标签人脸图像,希望进一步增强网络的泛化能力

3.4. Overall Objective Function

总共有7项loss,每一项负责优化不同的网络,如下表所示
Towards Open-Set Identity Preserving Face Synthesis(CVPR18)
每一个iteration有2种情况:分别是xs=xax^s=x^axsxax^s\neq x^a,见Algorithm 1
33Towards Open-Set Identity Preserving Face Synthesis(CVPR18)

4. Experiments

4.3. Face Attributes Transformation

Figure 5展示的换脸结果,xsx^s图像是在训练集中的
整体来看,肤色与xax^a保持一致
Towards Open-Set Identity Preserving Face Synthesis(CVPR18)
Figure 6展示的换脸结果,xsx^s图像在训练集之外(新的identity)
Towards Open-Set Identity Preserving Face Synthesis(CVPR18)
如果xsx^s的pose不是正脸,那么配合一张正脸xax^a,可以生成xsx^s对应的正脸图像(作者说可以保持肤色,个人不认同),效果如Figure 7所示
Towards Open-Set Identity Preserving Face Synthesis(CVPR18)

4.4. Face Attributes Morphing

对于一幅xsx^s图像,选取2幅xax^a图像,记为x1,x2x_1, x_2,使用网络AA计算attribute vector z1,z2z_1, z_2,然后使用线性差值生成中间的过渡attribute vector z=αz1+(1α)z2,α[0,1]z = \alpha z_1+(1-\alpha)z_2, \alpha\in[0, 1],然后生成xx',称为人脸属性的渐变,效果如Figure 8所示Towards Open-Set Identity Preserving Face Synthesis(CVPR18)