WarpGAN: Automatic Caricature Generation
这篇论文因为是新发布不久的,网上能找到的资料都还比较少,再加上本人新手上路,感觉对于此篇文章还有很多理解不到位的,希望大家能够留言指正!
warpGan是一种全自动网络,它可以给定输入的人脸照片生成漫画。除了可以转换丰富的纹理样式,它还可以学会自动预测一组控制点,这些控制点可以使照片变形成漫画,同时保持原照片的身份信息。本文介绍了identity-preserving adversarial los,并将此加入到discriminator中去区分不同的个体。并且WarpGAN允许通过控制夸张程度和视觉样式来定制生成的漫画。
在本文的工作中,我们主要去创建一个完全自动化的可以通过CNNS和GANs将人脸照片变成漫画的系统。
和以往的漫画生成和风格转换不同,我们强调了在本文中的一些挑战:
- 漫画生成包含纹理变化和形状变形;
- 经过变形的脸依旧能够被辨认;
- 卡通图片样本以不同的视觉和艺术风格存在。
为了解决以上挑战,本文提出了WarpGAN。在generator中可以自动预测control points,这些控制点将输入的人脸照片转换到最接近某一目标的漫画,还通过非线性滤波传递纹理样式。 Discriminator是通过identity-preserving adversarial loss来训练的,以区分不同的身份和风格,并鼓励generator在合成各种不同的漫画,同时自动夸大特定于身份的面部特征。
本论文的主要贡献是:
- 一种domain transfer network ,它通过自动估计一组稀疏控制点对图像进行纹理样式和几何形状的decouple(解耦)。
- 具有adversarial loss的domain transfer的texture style transfer和 image warping的联合学习
- 通过对人脸识别性能的定量评价表明,该方法在传递纹理样式和变形后保留了识别信息。
2.related work
2.1 Automatic Image Warping
Parametric methods估计了少量的全局变换参数,因此不能处理fine-grained local的形变。
dense deformation需要预测变形网格中的所有变形,其中大部分是无用的,很难估计。
Landmark-based:their method requires pre-detected landmarks as input.
2.3 Caricature Generation
近年来,随着GANs的成功,一些工作尝试将style transfer networks应用于image-to-image caricature generation,如[1],[2]。然而,由于这些网络不适用于large spatial variation的问题,它们的结果存在视觉质量差的问题。
3.Methodology
文中提到的各个符号的含义:
3.1 Generator
- 生成器一共包含三个部分:content encoder Ec,decoder R,warp controller.
- image x ∈ R H × W × C x \in R^{H×W×C} x∈RH×W×C
Texture Style Transfer
我们采用无监督的方法从feature map
E
c
(
x
)
E_c(x)
Ec(x)中disentangle风格表示,这样我们可以将输入的照片转换为在漫画中呈现的不同的纹理样式。在训练中latent style code s
∼
N
(
0
,
I
)
\sim N(0,I)
∼N(0,I)是正态分布的随机取样。R中的multi-layer perceptron解码s以生成R中的自适应实例标准化(AdaIN)层的参数。
为了防止
E
c
E_c
Ec和R在纹理渲染过程中丢失语义信息,我们结合了 identity mapping loss和reconstruction loss去规范
E
c
E_c
Ec和R。
L
i
d
t
p
=
E
x
p
∈
X
p
[
∣
∣
R
(
E
c
(
x
p
)
,
E
s
(
x
p
)
)
−
x
p
∣
∣
1
]
L_{idt}^p = E_{x^p \in X^p}[||R(E_c(x^p),E_s(x^p))-x^p||_1]
Lidtp=Exp∈Xp[∣∣R(Ec(xp),Es(xp))−xp∣∣1]
L
i
d
t
c
=
E
x
c
∈
X
c
[
∣
∣
R
(
E
c
(
x
c
)
,
E
s
(
x
c
)
)
−
x
c
∣
∣
1
]
L_{idt}^c = E_{x^c \in X^c}[||R(E_c(x^c),E_s(x^c))-x^c||_1]
Lidtc=Exc∈Xc[∣∣R(Ec(xc),Es(xc))−xc∣∣1]
Automatic Image Warping
warp controller是两个完全连接层的子网。其输入是
E
c
(
x
)
E_c(x)
Ec(x),这个控制器学习去估计k个控制点
p
=
p
1
,
p
2
,
.
.
.
,
p
k
p={p_1,p_2,...,p_k}
p=p1,p2,...,pk和residual flow(???)
Δ
p
=
Δ
p
1
,
Δ
p
2
,
.
.
.
,
Δ
p
k
\Delta p={\Delta p_1,\Delta p_2,...,\Delta p_k}
Δp=Δp1,Δp2,...,Δpk,其中
p
i
p_i
pi和
Δ
p
i
\Delta p_i
Δpi是在u-v space(???) 中的二维向量。
p
′
=
p
1
′
,
p
2
′
,
.
.
.
,
p
k
′
p \prime={p_1\prime,p_2\prime,...,p_k\prime}
p′=p1′,p2′,...,pk′使我们的目的点,其中
p
i
′
=
p
i
+
Δ
p
i
p_i\prime=p_i+\Delta p_i
pi′=pi+Δpi。然后可以通过thin-plate spline interpolation(薄板样条插值)计算大小为H×W的grid sampler(网格采样器):
f
(
q
)
=
∑
i
=
1
k
w
i
ϕ
(
∣
∣
q
−
p
i
′
∣
∣
)
+
v
T
q
+
b
f(q)=\sum_{i=1}^{k}w_i\phi (||q-p_i\prime ||)+v^Tq+b
f(q)=i=1∑kwiϕ(∣∣q−pi′∣∣)+vTq+b
- q:表示target image中像素的u-v location
- f(q):给出original image中像素q的逆映射
- ϕ ( r ) = r 2 l o g ( r ) \phi (r)=r^2log(r) ϕ(r)=r2log(r),是一个核函数。
- w,v,b 是 ∑ j H × W ∣ ∣ f ( p j ′ ) − p j ∣ ∣ 2 \sum_{j}^{H×W}||f(p_j\prime)-p_j||^2 ∑jH×W∣∣f(pj′)−pj∣∣2的最小化。
利用逆映射函数f(Q)构造网格样本,变形的图片为 G ( x , s ) = W a r p ( R ( E c ( x ) , s ) , p , Δ p ) G(x,s)=Warp(R(E_c(x),s),p,\Delta p) G(x,s)=Warp(R(Ec(x),s),p,Δp),这可以通过 bi-linear sampling去生成。
###3.2 Discriminator(感觉理解会有偏差)
Patch Adversarial Loss
(适合学习视觉风格转换)
(具有3个滤波器、步幅为1的1×1卷积层的单独分支连接到鉴别器的最后卷积层,以输出D1,D2,D3用于patch adversarial loss。)
我们使用一个全卷积网络作为一个patch discriminator。它被训练为3级分类器,以扩大生成的图像和真实照片的样式之间的差异。设D1,D2和D3分别表示漫画,照片和生成图像这三类的对数。
L
p
G
=
−
E
x
p
∈
X
p
,
s
∈
S
[
l
o
g
D
1
(
G
(
x
p
,
s
)
)
]
L_p^G=-E_{x^p \in X^p,s\in S}[logD_1(G(x_p,s))]
LpG=−Exp∈Xp,s∈S[logD1(G(xp,s))]
L
p
D
=
−
E
x
c
∈
X
c
[
l
o
g
D
1
(
x
c
)
]
−
E
x
p
∈
X
p
[
l
o
g
D
2
(
x
p
)
]
−
E
x
p
∈
X
p
,
s
∈
S
[
l
o
g
D
3
(
G
(
x
p
,
s
)
)
]
L_p^D=-E_{x^c\in X^c}[logD_1(x_c)]-E_{x^p\in X^p}[logD_2(x_p)]-E_{x^p\in X^p,s\in S}[logD_3(G(x_p,s))]
LpD=−Exc∈Xc[logD1(xc)]−Exp∈Xp[logD2(xp)]−Exp∈Xp,s∈S[logD3(G(xp,s))]
Identity-Preservation Adversarial Loss
虽然patch discriminator适合学习视觉风格转换,它未能捕捉到不同身份的显著特征。根据不同的人的面部特征,不同的人实际上会有不同的风格。为了结合身份保留与风格学习,我们提出了将鉴别器培养为3M级分类器,(M是人身份的数量)第一,第二和第三M类对应于真实照片、真实漫画和假漫画的不同身份。
y
p
,
y
c
∈
1
,
2
,
3
,
.
.
.
,
M
y^p,y^c\in {1,2,3,...,M}
yp,yc∈1,2,3,...,M表示真实照片和卡通图的labels。
L
g
G
=
−
E
x
p
∈
X
p
,
s
∈
S
[
l
o
g
D
(
y
p
;
G
(
x
p
,
s
)
)
]
L_g^G=-E_{x^p\in X^p,s\in S}[logD(y_p;G(x_p,s))]
LgG=−Exp∈Xp,s∈S[logD(yp;G(xp,s))]
L
g
D
=
−
E
x
c
∈
X
c
[
l
o
g
D
(
y
c
;
x
c
)
]
−
E
x
p
∈
X
p
[
l
o
g
D
(
y
p
+
M
;
x
p
)
]
−
E
x
p
∈
X
p
,
s
∈
S
[
l
o
g
D
(
y
p
+
2
M
;
G
(
x
p
,
s
)
)
]
L_g^D=-E_{x^c\in X^c}[logD(y_c;x_c)]-E_{x^p\in X^p}[logD(y_p+M;x_p)]-E_{x^p\in X^p,s\in S}[logD(y_p+2M;G(x_p,s))]
LgD=−Exc∈Xc[logD(yc;xc)]−Exp∈Xp[logD(yp+M;xp)]−Exp∈Xp,s∈S[logD(yp+2M;G(xp,s))]
(D(y; x)表示给定图像x的类y的对数。)
这鉴别器以告知真实照片,真实漫画,生成的漫画以及图像中的身份之间的差异。
最后,利用以下目标函数对系统进行端到端优化:
m
i
n
G
L
G
=
λ
p
L
p
G
+
λ
g
L
g
G
+
λ
i
d
t
(
L
i
d
t
c
+
L
i
d
t
p
)
min_G L_G=\lambda_pL_p^G+\lambda_gL_g^G+\lambda_{idt}(L_{idt}^c+L_{idt}^p)
minGLG=λpLpG+λgLgG+λidt(Lidtc+Lidtp)
m
i
n
D
L
D
=
λ
p
L
p
D
+
λ
g
L
g
D
min_D L_D=\lambda_pL_p^D+\lambda_gL_g^D
minDLD=λpLpD+λgLgD
4 Experiments
Dataset
我们使用的是WebCaricature数据集,包含6042张漫画和5974张人脸照片。首先我们将该数据集里的图片按照左眼、右眼、鼻子、左嘴角、右嘴角这五个点进行对齐处理。(由于原数据集中的17个landmarks中含有的坐标是左眼左角、左眼右角,所以将其两个值进行平均来得到左眼坐标。右眼坐标处理方式相同。)接着我们将图片resizes到256×256。
在训练是本文使用的是126个人物(3016张人物照片和3112张漫画),在测试是使用剩余的126个人物(2958张人物照片和2930张漫画)
实验细节
我们的网络结构是在MUNIT[3]模型上修改的。
下图表示为上图中各个符号的具体操作:
-
我们在content encoder中使用 Instance Normalization (IN)
-
在decoder中使用Adaptive Instance
Normalization (AdaIN) ,但是在style encoder中没有使用归一化. -
style decoder (多层感知器)具有两个隐藏的完全连接的128个滤波器层,没有归一化,并且warp controller只有一个隐藏的完全连接的128个滤波器层,具有Layer Normalization
-
我们在discriminator中使用Leaky Relu(slope=0.2),但是在其他模块中使用ReLU
-
在tensorflow中使用Adam优化器, β 1 = 0.5 , β 2 = 0.9 \beta_1=0.5,\beta_2=0.9 β1=0.5,β2=0.9
-
训练的step为100000
-
学习率设置为0.0001,并且在step为50000时线性地降到0。
-
λ g = 1.0 , λ p = 2.0 , λ i d t = 10.0 , \lambda_g=1.0,\lambda_p=2.0,\lambda_{idt}=10.0, λg=1.0,λp=2.0,λidt=10.0,
-
控制点(control points)k=16
[1].Photo-to-caricature translation on faces in the wild.
[2].CariGAN: Caricature Generation through Weakly Paired Adversarial Learning.
[3].Multimodal unsupervised image-to-image translation