1. 模型简介
在之前 pix2pix 论文中,作者已经很好地解决了训练集中有匹配对的图像风格转换问题,本文讨论的是对于训练集中不存在图像匹配对(寻找到匹配的图像数据集成本非常高)的情况下,如何能够较好地实现图像的风格转换。
若使用简单的单一映射 G : X → Y G:X \to Y G:X→Y,输入图像经过生成器转换为输出图像 y ^ = G ( x ) , x ∈ X \hat y=G(x), x \in X y^=G(x),x∈X,并使输出图像与真实图像难以区分,这种约束太弱,会造成以下问题:
- 存在太多种 G G G 能能够满足该映射条件;
- 难以对目标函数进行优化,容易造成“mode collapse”问题(不同输入对应同一种输出)。
为了解决上述问题,作者给损失函数增加了更多的结构:
- 在希望 G : X → Y G:X \to Y G:X→Y 的同时,还希望 F : Y → X F:Y \to X F:Y→X,即学习2个能相互转换的生成函数 G G G、 F F F,当然也就存在2个不同的判别函数 D Y D_Y DY、 D X D_X DX;
- 希望图像在连续经过
G
G
G 和
F
F
F 后能够还原为原来的图像,即
F
(
G
(
x
)
)
≈
x
F(G(x)) \approx x
F(G(x))≈x,
G
(
F
(
y
)
)
≈
y
G(F(y)) \approx y
G(F(y))≈y。
2. 公式
2.1. 对抗损失(Adversarial Loss)
G
:
X
→
Y
G:X \to Y
G:X→Y 的对抗损失函数:
L
G
A
N
(
G
,
D
Y
,
X
,
Y
)
=
E
y
∼
p
d
a
t
a
(
y
)
[
l
o
g
D
Y
(
y
)
]
+
E
x
∼
p
d
a
t
a
(
x
)
[
1
−
l
o
g
D
Y
(
G
(
x
)
)
]
\mathcal{L}_{GAN}(G,D_Y,X,Y)=\mathbb{E}_{y\sim p_{data}(y)}[logD_Y(y)]+\mathbb{E}_{x\sim p_{data}(x)}[1-logD_Y(G(x))]
LGAN(G,DY,X,Y)=Ey∼pdata(y)[logDY(y)]+Ex∼pdata(x)[1−logDY(G(x))] 目标是
min
G
max
D
Y
L
G
A
N
(
G
,
D
Y
,
X
,
Y
)
\min\limits_G \max\limits_{D_{Y}}\mathcal{L}_{GAN}(G,D_Y,X,Y)
GminDYmaxLGAN(G,DY,X,Y)
F
:
Y
→
X
F:Y \to X
F:Y→X 的对抗损失函数:
L
G
A
N
(
F
,
D
X
,
Y
,
X
)
=
E
x
∼
p
d
a
t
a
(
x
)
[
l
o
g
D
X
(
x
)
]
+
E
y
∼
p
d
a
t
a
(
y
)
[
1
−
l
o
g
D
X
(
G
(
y
)
)
]
\mathcal{L}_{GAN}(F,D_X,Y,X)=\mathbb{E}_{x\sim p_{data}(x)}[logD_X(x)]+\mathbb{E}_{y\sim p_{data}(y)}[1-logD_X(G(y))]
LGAN(F,DX,Y,X)=Ex∼pdata(x)[logDX(x)]+Ey∼pdata(y)[1−logDX(G(y))] 目标是
min
F
max
D
X
L
G
A
N
(
F
,
D
X
,
Y
,
X
)
\min\limits_F \max\limits_{D_{X}}\mathcal{L}_{GAN}(F,D_X,Y,X)
FminDXmaxLGAN(F,DX,Y,X)
2.2. 循环一致性损失(Cycle Consistency Loss)
L c y c ( G , F ) = E x ∼ p d a t a ( x ) [ ∥ F ( G ( x ) ) − x ∥ 1 ] + E y ∼ p d a t a ( y ) [ ∥ G ( F ( y ) ) − y ∥ 1 ] \mathcal{L}_{cyc}(G,F)=\mathbb{E}_{x\sim p_{data}(x)}[\lVert F(G(x))-x\rVert _1]+\mathbb{E}_{y\sim p_{data}(y)}[\lVert G(F(y))-y\rVert _1] Lcyc(G,F)=Ex∼pdata(x)[∥F(G(x))−x∥1]+Ey∼pdata(y)[∥G(F(y))−y∥1] 作者这里使用的是 L1 损失,在实验中作者还尝试过将其替代为 F ( G ( x ) ) F(G(x)) F(G(x)) 与 x x x 以及 G ( F ( y ) ) G(F(y)) G(F(y)) 与 y y y 的对抗损失(Adversarial Loss),但并未观察到效果的提高。
2.3. Full Objective
将上述两种损失函数组合,得到最终损失函数:
L
(
G
,
F
,
D
X
,
D
Y
)
=
L
G
A
N
(
G
,
D
Y
,
X
,
Y
)
+
L
G
A
N
(
F
,
D
X
,
Y
,
X
)
+
λ
L
c
y
c
(
G
,
F
)
\mathcal{L}(G,F,D_X,D_Y)=\mathcal{L}_{GAN}(G,D_Y,X,Y)+\mathcal{L}_{GAN}(F,D_X,Y,X)+\lambda\mathcal{L}_{cyc}(G,F)
L(G,F,DX,DY)=LGAN(G,DY,X,Y)+LGAN(F,DX,Y,X)+λLcyc(G,F) 最终的目标是求:
G
∗
,
F
∗
=
a
r
g
min
G
,
F
max
D
X
,
D
Y
L
(
G
,
F
,
D
X
,
D
Y
)
G^*,F^*=arg\ \min\limits_{G,F}\max\limits_{D_X,D_Y}\mathcal{L}(G,F,D_X,D_Y)
G∗,F∗=arg G,FminDX,DYmaxL(G,F,DX,DY)
3. 具体实现
3.1. 网络结构
生成器的网络结构见文献 Perceptual Losses for Real-Time Style Transfer and Super-Resolution 中所写。
判别器的网络结构为 PatchGANs,在 pix2pix 中有所介绍。
3.2. 训练细节
在编程实现中,为了进一步提高效果,作者列出了几点 trick:
- 对于
L
G
A
N
\mathcal{L}_{GAN}
LGAN 作者采用的是均方误差而不是 log 来进行每一次的更新。
更新 G G G 时,最小化 E x ∼ p d a t a ( x ) [ ( D Y ( G ( x ) ) − 1 ) 2 ] \mathbb{E}_{x\sim p_{data}(x)}[(D_Y(G(x))-1)^2] Ex∼pdata(x)[(DY(G(x))−1)2] ;
更新 D D D 时,最小化 E y ∼ p d a t a ( y ) [ ( D Y ( y ) − 1 ) 2 ] + E x ∼ p d a t a ( x ) [ D Y ( G ( x ) ) 2 ] \mathbb{E}_{y\sim p_{data}(y)}[(D_Y(y)-1)^2]+\mathbb{E}_{x\sim p_{data}(x)}[D_Y(G(x))^2] Ey∼pdata(y)[(DY(y)−1)2]+Ex∼pdata(x)[DY(G(x))2] - 为减小模型的振荡,在更新判别器时,会使用当前以及一系列过去的生成器生成的图片来进行训练。
- 使用 Adam 算法来进行生成器和判别器的每一步更新,学习率先保持不变,在 epoch 到达100次后,开始线性下降直至为0。
4. 模型评估
模型的评估方式与 pix2pix 相同,采用 Amazon Mechanical Turk(AMT)与 FCN score 的方式。
5. 效果展示
将自然风景图转化为不同画家风格的图:
相近类别的图像进行风格转换:
手机照片到专业相机(远处背景模糊)的图像转换: