CycleGAN
1、四个问题
- 要解决什么问题?
- 图像翻译任务(image-to-image translation problems),域转换任务。
- 用了什么方法解决?
- 提出了CycleGAN的网络结构。
- 目的是:通过使用一组对抗损失,学习到一个映射 G : X → Y G: X \rightarrow Y G:X→Y,使得生成的样本 G ( X ) G(X) G(X)的分布难以跟真实样本 Y Y Y的分布区分开来。
- 同样也要保证,通过另一组对抗损失,学习到一个与 G G G相反的映射 F : Y → X F: Y \rightarrow X F:Y→X,并能够保证cycle consistency,即 F ( G ( X ) ) ≈ X F(G(X)) \approx X F(G(X))≈X,反之同理。
- 效果如何?
- 在图像翻译、风格转换、季节转换等任务上超过之前的模型。
- 能够使用不成对的数据进行训练,cycleGAN会自动学习不同域之间的风格特征。
- 还存在什么问题?
- CycleGAN的训练重度依赖于数据,如果数据质量不好,或是混入较多错误样本,可能会导致灾难性的后果。
- CycleGAN相对难以收敛,直接对映射进行约束训练的难度较大。
2、论文概述
2.1、基本思路
- 条件对抗生成网络(CGAN)是图像翻译问题的一种通用方案。对于这类网络来说,不仅仅会学习图像到图像的映射关系,还会自适应地学习一个损失函数来训练这层映射关系。
- CycleGAN思路参考自机器翻译的研究工作:
- 在机器翻译中,语言与语言之间几乎不存在一一对应关系,可能是多对一也可能是一对多,难以建立标签。因此就有研究者提出,在语言转换过程中引入一致性假设,即:英语翻译为法语,再将其翻译为英语,要保证两次翻译前后的语句尽可能近似。
- 因此,作者提出在图像翻译中引入cycle consistency。即假设有从域
X
X
X到域
Y
Y
Y的映射
G
G
G,又有从域
Y
Y
Y到域
X
X
X的映射
F
F
F,这两个映射要满足前面提到的cycle consistency:
- 使用映射 G G G从域 X X X转到域 Y Y Y,再使用映射 F F F从域 Y Y Y映射回域 X X X,得到 X ^ \hat{X} X^,前后要保证L2损失: ∥ X − X ^ ∥ 2 \| X - \hat{X} \|_2 ∥X−X^∥2尽可能小。
- 使用映射 F F F从域 Y Y Y转到域 X X X,再使用映射 G G G从域 X X X映射回域 Y Y Y,得到 Y ^ \hat{Y} Y^,前后要保证L2损失: ∥ Y − Y ^ ∥ 2 \| Y - \hat{Y} \|_2 ∥Y−Y^∥2尽可能小。
- 在cycle consistency之外加入两个对抗损失(adversarial loss),构成两个GAN,最后组合起来就是一个CycleGAN模型。
2.2、方法
- 如图所示,是一个CycleGAN的基本结构:
- 对抗损失(Adversarial Loss):
- CycleGAN实际上可以看做是由两个单向的GAN组成的。
- 第一组GAN是:映射
G
:
X
→
Y
G: X \rightarrow Y
G:X→Y和判别器
D
Y
D_Y
DY。 损失函数如下:
- 生成器 G G G试着去生成图像 G ( x ) G(x) G(x),并使其尽可能类似于 Y Y Y域内的样本,同时 D Y D_Y DY尝试去区分生成的样本 G ( x ) G(x) G(x)和真实样本 y y y。 G G G试图去最小化目标函数,而判别器 D D D则尽可能地最大化它,如:
- 第二组GAN与第一组近似,映射关系相反:
F
:
Y
→
X
F: Y \rightarrow X
F:Y→X,以及判别器
D
X
D_X
DX。
- 与第一组GAN同理,可以构造对抗损失,不做赘述。
- 优化关系也类似:
- Cycle Consistency Loss:
- 仅从理论上来说,使用对抗损失来学习映射 G G G和 F F F,可以分别学习到域 X X X和 Y Y Y间的转换关系。
- 在学习映射 G G G和映射 F F F的过程中,其实更近似与在随机的高维映射函数空间中搜索一组合适的函数。而仅仅依靠对抗损失,往往很难保证学习到有效的映射函数。为了减少在搜索空间中可能的函数选择,还需要加入额外的映射约束。
- 由此,作者提出了cycle consistency函数的概念:
- 作者认为,除了使用原始的对抗损失对映射 G G G和映射 F F F进行约束之外,这两个映射函数还需要具有cycle consistency的性质。
- 对于图像域 X X X的图像 x x x,在转换到域 Y Y Y后,还要保证能够转换回 X X X域后能得到原始图像 x x x。 x → G ( x ) → F ( G ( x ) ) ≈ x x \rightarrow G(x) \rightarrow F(G(x)) \approx x x→G(x)→F(G(x))≈x,文中称其为forward cycle consistency。
- 类似地,对于图像域 Y Y Y的图像 y y y,在转换到域 X X X后,还要保证能够转换回 Y Y Y域后能得到原始图像 y y y。 y → F ( y ) → G ( F ( y ) ) ≈ y y \rightarrow F(y) \rightarrow G(F(y)) \approx y y→F(y)→G(F(y))≈y,文中称其为backward cycle consistency。
- 公式如下:
- 完整目标函数:
- λ \lambda λ控制两个损失的相对关系。
- 最终希望得到的最优生成器是:
2.3、效果
- 总体来说,CycleGAN的效果还是很不错的,论文给出了很多实验结果,不做赘述了。