Unpaired Image-to-Image Translationusing Cycle-Consistent Adversarial Networks(Cycle GAN)

Unpaired Image-to-Image Translationusing Cycle-Consistent Adversarial Networks

图像到图像的转换:使用一组对齐的图像对学习输入图像和输出图像之间的映射关系。

提出了一种可以学习的相同的方法,捕获一个图像集合的特殊特征,并且弄清楚这些特征如何转化为另一个图像集。在学习过程中没有任何配对的图像样例。

Introduction

CycleGAN是基于一个前提的:两个域之间存在着一些潜在的关系,例如它们是同一底层场景中的两种不同渲染,CycleGAN可以学习这种关系。

对于单向的GAN,不能保证从源域到目标域的映射是一种有意义的方式,从源域到目标域有很多种方式,生成数据符合目标域的分布。同时,实践中,很难对单向的GAN进行优化。

CycleGAN向GAN中增加更多结构。探索了GAN的循环一致性(cycle consistent),从源域映射到目标域,再从目标域映射回源域应该得到和源域样本近似相同结果。

Formulation

目标是给出训练样本\left\{ x _ { i } \right\} _ { i = 1 } ^ { N }\left\{ y _ { j } \right\} _ { j = 1 } ^ { M },学习一个两个域XY之间的映射关系。

Cycle GAN

模型包含两个映射函数:G:X \rightarrow YF:Y\rightarrow X,还有相关的对抗判别器D_YD_X。同时引入了循环一致性。

Adversarial Loss

向两个映射函数中应用对抗损失对映射G : X \rightarrow Y和他的判别器D_Y,目标函数为:

\begin{aligned} \mathcal { L } _ { \mathrm { GAN } } \left( G , D _ { Y } , X , Y \right) & = \mathbb { E } _ { y \sim p _ { \mathrm { data } } ( y ) } \left[ \log D _ { Y } ( y ) \right] \\ & + \mathbb { E } _ { x \sim p _ { \mathrm { data } } ( x ) } \left[ \log \left( 1 - D _ { Y } ( G ( x ) ) \right] \right. \end{aligned}

\min _ { G } \max _ { D _ { Y } } \mathcal { L } _ { \mathrm { GAN } } \left( G , D _ { Y } , X , Y \right)

对于映射:F : Y \rightarrow X和他的判别器D,损失函数和上面的对应。

Cycle Consistency Loss

理论上对抗训练可以学习映射GF,但是当网络足够大的时候,网络可以将同一组输入图像映射到目标域中的任何随机排列的图像。单独的对抗性损失不能实现本文中要实现的目标。

因此引入了循环一致性。x \rightarrow G ( x ) \rightarrow F ( G ( x ) ) \approx x,这种被称为 forward cycle consistency,同时还有backward cycle consistency:y \rightarrow F ( y ) \rightarrow G ( F ( y ) ) \approx y

使用循环一致性损失鼓励以上行为:

\begin{aligned} \mathcal { L } _ { \mathrm { cyc } } ( G , F ) & = \mathbb { E } _ { x \sim p _ { \text { data } } ( x ) } \left[ \| F ( G ( x ) ) - x \| _ { 1 } \right] \\ & + \mathbb { E } _ { y \sim p _ { \text { data } } ( y ) } \left[ \| G ( F ( y ) ) - y \| _ { 1 } \right] \end{aligned}

Full Objective

完整的目标函数为:

\begin{aligned} \mathcal { L } \left( G , F , D _ { X } , D _ { Y } \right) & = \mathcal { L } _ { \text { GAN } } \left( G , D _ { Y } , X , Y \right) \\ & + \mathcal { L } _ { \text { GAN } } \left( F , D _ { X } , Y , X \right) \\ & + \lambda \mathcal { L } _ { \text { cyc } } ( G , F ) \end{aligned}

其中的\lambda平衡两种损失。

G ^ { * } , F ^ { * } = \arg \min _ { G , F } \max _ { D _ { x } , D _ { Y } } \mathcal { L } \left( G , F , D _ { X } , D _ { Y } \right)

也可以将Cycle GAN的模型看作是训练了两个有特殊的内部结构的自动编码器。

实验阶段证明了两个目标函数都起着关键性的作用,而且只有一个方向的循环损失不足以规范训练。

Implememnetation

从这一部分也可以感觉出GAN的训练存在一些trick性质的技巧,并不是十分的稳定。

Network Architecture

使用的生成网络架构包含两个歩幅为2的卷积,几个残差块,两个歩幅为\frac{1}{2}的fractionally-strided卷积。对于128×128的图像使用6块,对于256×256的图像使用9块。同时使用instance normalization。

对判别器网络,我们使用70×70 PatchGANs,其目的在于分类70×70重叠图像补丁是真实的还是假的。这种鉴别器架构的参数比全图像鉴别器的参数更少,可以以完全相同的方式处理任意大小的图像。

Train details

应用了近期工作中的两种技术稳定模型训练过程,对\mathcal { L } _ { \mathrm { GAN } }用最小二乘损失代替负对数死然损失,这种损失更加稳定。

为了减小模型震荡,使用生成图像的历史而不是最新生成器生成的图像来更新判别器,保留了一个图像缓冲区,用于存储50个以前创建的图像。

对所有的时延,将\lambda设置为10,使用批量大小为1的Adam优化器。网络使用0.0002的学习率训练。前100个周期使用相同的学习率,接下来的100个周期将学习率线性衰减为0。

Results

  1. 与其他方法进行比较。
  2. 研究对抗损失和周期一致性损失的重要程度。
  3. 证明算法在各种应用中的一般性。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容