《Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks》CycleGAN论文学习笔记
摘要
图像转译是计算机视觉和图形学的关键问题,其目标是利用像素级对齐对应的图像,学习出一种输入图像和输出图像的映射关系。目前的问题:
然而,对于许多任务而言,对齐的训练数据是难以获取的,创新点:
所以提出了一种,无需配对图像(unpaired image)就能实现源域和目标域之间的迁移。
生成器
G
G
G负责根据
X
X
X生成
Y
Y
Y,由
G
(
x
)
G(x)
G(x)生成的假
Y
Y
Y要尽量让判别器难以区分。目前的问题:
如果只用单一对抗网络来生成的话,可能会导致不可控制(under constrained)的情况,创新点:
所以提出了循环一致性损失(cycle-consistency loss),即:设计第二个生成器
F
F
F,再让
Y
Y
Y转回
X
X
X,尽量让
F
(
G
(
X
)
)
F(G(X))
F(G(X))与原图
X
X
X更接近。
结果展示:
定性(Qualitative)和定量( Quantitative)结果都表明非常好,适用范围广泛等等。
核心内容
上图左侧就是配对型训练数据和效果,完成线条轮廓转译为鞋子的功能;右侧就是非配对型训练数据和效果,完成两个域之间的迁移(Domain Adaptation)。
以上图右侧的画风迁移为例,CycleGan的示意图如下所示:
其中
X
X
X域中包含
N
N
N张图像,
x
∼
p
d
a
t
a
(
x
)
x\sim p_{data}(x)
x∼pdata(x)表示
X
X
X域中的图像服从
X
X
X的数据分布,
Y
Y
Y域中包含
M
M
M张图像,表示
Y
Y
Y域中的图像服从
Y
Y
Y的数据分布。
生成器 G : X → Y G:X \to Y G:X→Y对应的判别器为 D Y D_Y DY;生成器 F : Y → X F:Y \to X F:Y→X对应的判别器为 D X D_X DX。判别器的输出都是0至1的标量,越接近真图像输出概率越接近1。
这两个对抗网络各自都对应一个对抗损失(adversarial losses)【详细的对抗损失概念与定义可以看Gan论文学习笔记】,还包含循环一致性损失函数(cycle consistency losses)【这也是CycleGan论文的创新点】。
循环一致性损失的作用:1、使得生成器生成的图像扔保留原始图像的信息;2、间接实现了配对图像的转译功能;3、防止模式崩溃(mode collapse),总生成相同图像的情况。
F
(
G
(
x
)
)
F(G(x))
F(G(x))是生成的假图像又转换回
X
X
X域的图像,与原始图像
x
x
x做L1范数,即两张图像逐个元素做差取绝对值再求和。公式的第一项称为前向循环一致性(forward cycle consistency),后一项成为反向循环一致性(backward cycle consistency)。
所以完整的损失函数就是:
其中可以通过
λ
\lambda
λ权重来控制循环一致性损失的强度。
实现细节
- 采用instance normalization归一化;
- 网络结构包括3个卷积、几个残差块、2个分数步长卷积(fractionally-strided convolutions
with stride 1 2 \frac{1}{2} 21); - 使用了Reflection padding而非普通的Zero padding;
- 训练时的Batch Size为1, λ \lambda λ权重设置为10;
- 生成器各层激活函数主要为ReLU,判别器各层激活函数主要为LeakyReLU;
- 训练判别器时还会用到生成器产生的历史数据(We keep an image
buffer that stores the 50 previously created images); - 并没有使用损失函数公式中的负对数似然函数(log likelihood)形式,而是使用的最小二乘损失函数(least-squares loss),也就是L2范数。
存在不足
- CycleGan网络擅长改变颜色和纹理特征,不擅长改变几何形状;
- 间接地反映了网络没有理解高级的语义,没有先验知识和三维信息;
- 没有条件输入信息,不能区分前景和背景;
- 训练集和测试集分布不一致。