3. Identity Preserving GANs
输入两幅图像
(
x
s
,
x
a
)
(x^s, x^a)
(xs,xa),
x
s
x^s
xs指定identity信息,
x
a
x^a
xa指定attribute信息(包括pose, emotion, illumination, and even background)
作者描述得比较保守,并没有保证保留background信息
生成一幅图像
x
′
x'
x′,拥有
x
s
x^s
xs的identity和
x
a
x^a
xa的attribute
注:从Figure2中看到从
x
a
x^a
xa到
x
′
x'
x′,background变了,这会影响实际应用
图中共有5个网络
- the identity encoder network I I I,对 x s x^s xs提取identity vector f I ( x s ) f_I(x^s) fI(xs)
- the attributes encoder network A A A,对 x a x^a xa提取attribute vector f A ( x a ) f_A(x^a) fA(xa)
- the generative network G G G,拼接identity和attribute vector作为输入,生成图像 x ′ x' x′
- the classification network C C C,计算 P ( c ∣ x s ) P(c|x^s) P(c∣xs),即 x s x^s xs属于每一个identity的概率
- the discriminative network D D D,判别真假图像
在整个framework中,使用网络 A A A去学习 x a x^a xa中包含的attribute信息,并不要求提供attribute annotation
3.1. Disentanglement of Identity and Attributes
给定一个含有identity annotation的数据库
{
x
i
s
,
c
i
}
\left \{ x_i^s, c_i \right \}
{xis,ci},以softmax loss训练分类网络
I
I
I(还可以使用更加高级的人脸识别loss),具体如下
L
I
=
−
E
x
∼
P
r
[
log
P
(
c
∣
x
s
)
]
(
1
)
\mathcal{L}_I=-\mathbb{E}_{x\sim P_r}\left [ \log P\left ( c|x^s \right ) \right ] \qquad (1)
LI=−Ex∼Pr[logP(c∣xs)](1)
最终,使用最后一层pooling layer的输出作为identity vector
(
x
s
,
x
a
)
(x^s, x^a)
(xs,xa)是成对输入的,共有2种情况
情况1:
x
s
=
x
a
x^s=x^a
xs=xa,此时要求生成的
x
′
x'
x′和
x
a
x^a
xa一模一样(惩罚程度大)
情况2:
x
s
≠
x
a
x^s\neq x^a
xs=xa,此时要求生成的
x
′
x'
x′和
x
a
x^a
xa大体相似(惩罚程度小)
于是可得Reconstruction loss,如下
L
G
R
=
{
1
2
∥
x
a
−
x
′
∥
2
2
if
x
s
=
x
a
λ
2
∥
x
a
−
x
′
∥
2
2
otherwise
(
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)
LGR={21∥xa−x′∥222λ∥xa−x′∥22if xs=xaotherwise(2)
其中设置
λ
=
0.1
\lambda=0.1
λ=0.1
x
′
x'
x′与网络
A
A
A有关,所以最小化
L
G
R
\mathcal{L}_{GR}
LGR可以训练网络
A
A
A生成更好的attribute vector
个人认为在
x
s
≠
x
a
x^s\neq x^a
xs=xa时,使用MSE是没有道理的
使用KL divergence loss来约束attribute vector到一个先验分布
P
(
z
)
∼
N
(
0
,
1
)
P(z)\sim N(0, 1)
P(z)∼N(0,1)
对于每一个
x
a
x^a
xa,网络
A
A
A输出隐向量
z
z
z的均值
μ
\mu
μ和方差
ϵ
\epsilon
ϵ,然后使用KL divergence loss来衡量学习到的分布与先验分布
P
(
z
)
P(z)
P(z)之间的差异,如下
L
K
L
=
1
2
(
μ
T
μ
+
∑
j
−
1
J
(
exp
(
ϵ
)
−
ϵ
−
1
)
)
(
3
)
\mathcal{L}_{KL}=\frac{1}{2}\left ( \mu^T\mu+\sum_{j-1}^{J}(\exp(\epsilon)-\epsilon-1) \right ) \qquad (3)
LKL=21(μTμ+j−1∑J(exp(ϵ)−ϵ−1))(3)
其中
μ
,
ϵ
∈
R
J
\mu,\epsilon\in \mathbb{R}^J
μ,ϵ∈RJ
对于图像
x
a
x^a
xa的attribute vector
z
z
z,实际上是通过采样得到的
z
=
μ
+
r
⊙
exp
(
ϵ
)
z = \mu+r\odot \exp(\epsilon)
z=μ+r⊙exp(ϵ)
其中
r
r
r是服从
N
(
0
,
I
)
N(0,I)
N(0,I)的随机向量
3.2. Asymmetric Training for Networks G G G, C C C, and D D D
引入判别器
D
D
D,最小化如下loss
L
D
=
−
E
x
∼
P
r
[
log
D
(
x
a
)
]
−
E
z
∼
P
z
[
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)
LD=−Ex∼Pr[logD(xa)]−Ez∼Pz[log(D(G(z)))](4)
为了解决传统GAN中梯度消失的问题,借鉴了CVAE-GAN的思路
对于样本
(
x
s
,
x
a
)
(x^s, x^a)
(xs,xa),生成
x
′
x'
x′,定义
f
D
f_D
fD为网络
D
D
D的最后一层FC layer,于是提出一项pairwise feature matching loss为
f
D
(
x
′
)
f_D(x')
fD(x′)与
f
D
(
x
a
)
f_D(x^a)
fD(xa)之间的欧式距离,具体如下
L
G
D
=
1
2
∥
f
D
(
x
′
)
−
f
D
(
x
a
)
∥
2
2
(
5
)
\mathcal{L}_{GD}=\frac{1}{2}\left \| f_D(x')-f_D(x^a) \right \|_2^2 \qquad (5)
LGD=21∥fD(x′)−fD(xa)∥22(5)
网络
C
C
C的任务是识别identity,loss定义如下
L
C
=
−
E
x
∼
P
r
[
log
P
(
c
∣
x
s
)
]
(
6
)
\mathcal{L}_{C}=-\mathbb{E}_{x\sim P_r}\left [ \log P\left ( c|x^s \right ) \right ] \qquad (6)
LC=−Ex∼Pr[logP(c∣xs)](6)
注:公式(6)与公式(1)一模一样
同样地,对于分类网络
C
C
C,定义
f
C
f_C
fC为网络
C
C
C的最后一层FC layer,然后计算
f
C
(
x
′
)
f_C(x')
fC(x′)与
f
D
(
x
s
)
f_D(x^s)
fD(xs)之间的欧式距离作为loss,可以更好地使
x
′
x'
x′拥有
x
s
x^s
xs的identity信息
L
G
C
=
1
2
∥
f
C
(
x
′
)
−
f
C
(
x
s
)
∥
2
2
(
7
)
\mathcal{L}_{GC}=\frac{1}{2}\left \| f_C(x')-f_C(x^s) \right \|_2^2 \qquad (7)
LGC=21∥fC(x′)−fC(xs)∥22(7)
实际上可以对网络的多个layer添加欧式距离约束,但提升只有一点点
3.1节中提到网络 I I I是通过人脸识别(分类任务)训练出来的,而网络 C C C同样也是做人脸识别的任务,所以可以用同一个预训练网络来初始化
3.3. Unsupervised Training
理论上,整个框架在训练集上训练之后,应该具备了区别不同人的能力,但训练集的大小是有限的,倘若给定一个训练集以外的人脸,网络不一定能够识别这张人脸的identity
作者从互联网上收集了100万各式各样的无标签人脸图像,希望进一步增强网络的泛化能力
3.4. Overall Objective Function
总共有7项loss,每一项负责优化不同的网络,如下表所示
每一个iteration有2种情况:分别是
x
s
=
x
a
x^s=x^a
xs=xa、
x
s
≠
x
a
x^s\neq x^a
xs=xa,见Algorithm 1
4. Experiments
4.3. Face Attributes Transformation
Figure 5展示的换脸结果,
x
s
x^s
xs图像是在训练集中的
整体来看,肤色与
x
a
x^a
xa保持一致
Figure 6展示的换脸结果,
x
s
x^s
xs图像在训练集之外(新的identity)
如果
x
s
x^s
xs的pose不是正脸,那么配合一张正脸
x
a
x^a
xa,可以生成
x
s
x^s
xs对应的正脸图像(作者说可以保持肤色,个人不认同),效果如Figure 7所示
4.4. Face Attributes Morphing
对于一幅
x
s
x^s
xs图像,选取2幅
x
a
x^a
xa图像,记为
x
1
,
x
2
x_1, x_2
x1,x2,使用网络
A
A
A计算attribute vector
z
1
,
z
2
z_1, z_2
z1,z2,然后使用线性差值生成中间的过渡attribute vector
z
=
α
z
1
+
(
1
−
α
)
z
2
,
α
∈
[
0
,
1
]
z = \alpha z_1+(1-\alpha)z_2, \alpha\in[0, 1]
z=αz1+(1−α)z2,α∈[0,1],然后生成
x
′
x'
x′,称为人脸属性的渐变,效果如Figure 8所示