Unpaired Image-to-Image Translationusing Cycle-Consistent Adversarial Networks
图像到图像的转换:使用一组对齐的图像对学习输入图像和输出图像之间的映射关系。
提出了一种可以学习的相同的方法,捕获一个图像集合的特殊特征,并且弄清楚这些特征如何转化为另一个图像集。在学习过程中没有任何配对的图像样例。
Introduction
CycleGAN是基于一个前提的:两个域之间存在着一些潜在的关系,例如它们是同一底层场景中的两种不同渲染,CycleGAN可以学习这种关系。
对于单向的GAN,不能保证从源域到目标域的映射是一种有意义的方式,从源域到目标域有很多种方式,生成数据符合目标域的分布。同时,实践中,很难对单向的GAN进行优化。
CycleGAN向GAN中增加更多结构。探索了GAN的循环一致性(cycle consistent),从源域映射到目标域,再从目标域映射回源域应该得到和源域样本近似相同结果。
Formulation
目标是给出训练样本和,学习一个两个域和之间的映射关系。
模型包含两个映射函数:和,还有相关的对抗判别器和。同时引入了循环一致性。
Adversarial Loss
向两个映射函数中应用对抗损失对映射和他的判别器,目标函数为:
对于映射:和他的判别器D,损失函数和上面的对应。
Cycle Consistency Loss
理论上对抗训练可以学习映射和,但是当网络足够大的时候,网络可以将同一组输入图像映射到目标域中的任何随机排列的图像。单独的对抗性损失不能实现本文中要实现的目标。
因此引入了循环一致性。,这种被称为 forward cycle consistency,同时还有backward cycle consistency:。
使用循环一致性损失鼓励以上行为:
Full Objective
完整的目标函数为:
其中的平衡两种损失。
也可以将Cycle GAN的模型看作是训练了两个有特殊的内部结构的自动编码器。
实验阶段证明了两个目标函数都起着关键性的作用,而且只有一个方向的循环损失不足以规范训练。
Implememnetation
从这一部分也可以感觉出GAN的训练存在一些trick性质的技巧,并不是十分的稳定。
Network Architecture
使用的生成网络架构包含两个歩幅为2的卷积,几个残差块,两个歩幅为的fractionally-strided卷积。对于128×128的图像使用6块,对于256×256的图像使用9块。同时使用instance normalization。
对判别器网络,我们使用70×70 PatchGANs,其目的在于分类70×70重叠图像补丁是真实的还是假的。这种鉴别器架构的参数比全图像鉴别器的参数更少,可以以完全相同的方式处理任意大小的图像。
Train details
应用了近期工作中的两种技术稳定模型训练过程,对用最小二乘损失代替负对数死然损失,这种损失更加稳定。
为了减小模型震荡,使用生成图像的历史而不是最新生成器生成的图像来更新判别器,保留了一个图像缓冲区,用于存储50个以前创建的图像。
对所有的时延,将设置为10,使用批量大小为1的Adam优化器。网络使用0.0002的学习率训练。前100个周期使用相同的学习率,接下来的100个周期将学习率线性衰减为0。
Results
- 与其他方法进行比较。
- 研究对抗损失和周期一致性损失的重要程度。
- 证明算法在各种应用中的一般性。