论文Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks

摘要:

图像到图像转换是一类视觉和图形问题,其目标是通过训练学习输入图片的风格,将其映射到框架类似的输出图片中。尽管对于很多任务而言,配对训练数据可遇不可求。我们提出了一种在没有配对的情况下从来源域 X 到目标域 Y 进行图像转换的方式。我们的目标是实现 G:X→ Y,其中 G(X) 的图像分布与使用对抗性损失分布的 Y 难以区分。因为映射非常不完全,我们将其以 F:Y→ X 的方式建立映射,同时引入循环一致性损失函数来推动 F(G(X))≈X(反之亦然)。我们在无法配对的训练数据中演示了新方法的成果,其中包括风格迁移、材质改变、季节变化、图像增强等。我们业余之前一些方法进行了定量比较,展示了新方法的优越性。


变量定义:

X,Y:两个领域
{x}, {y}: 两个领域的图像集合映射
G: X->Y映射
F: Y->X
DX: 用于区分{x}和{F(y)}
DY: 用于区分{y}和{G(x)}


CycleGAN与pix2pix模型的对比

pix2pix也可以做图像变换,它和CycleGAN的区别在于,pix2pix模型必须要求成对数据(paired data),而CycleGAN利用非成对数据也能进行训练(unpaired data)。

论文Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks

比如,我们希望训练一个将白天的照片转换为夜晚的模型。如果使用pix2pix模型,那么我们必须在搜集大量地点在白天和夜晚的两张对应图片,而使用CycleGAN只需同时搜集白天的图片和夜晚的图片,不必满足对应关系。因此CycleGAN的用途要比pix2pix更广泛,利用CycleGAN就可以做出更多有趣的应用。



原理:论文Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks

    

   实现的功能就是将一类图片转换成另一类图片。也就是说,现在有两个样本空间,X和Y,我们希望把X空间中的样本转换成Y空间中的样本。

     因此,实际的目标就是学习从X到Y的映射。我们设这个映射为F。它就对应着GAN中的生成器,F可以将X中的图片x转换为Y中的图片F(x)。对于生成的图片,我们还需要GAN中的判别器来判别它是否为真实图片,由此构成对抗生成网络。设这个判别器为 Dy。这样的话,根据这里的生成器和判别器,我们就可以构造一个GAN损失,表达式为:
论文Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks
这个损失实际上和原始的GAN损失是一模一样的。
但单纯的使用这一个损失是无法进行训练的。原因在于,映射F完全可以将所有x都映射为Y空间中的同一张图片,使损失无效化。对此,作者又提出了所谓的“循环一致性损失”(cycle consistency loss)。
我们再假设一个映射G,它可以将Y空间中的图片y转换为X中的图片G(y)。CycleGAN同时学习F和G两个映射,并要求 F(G(x))≈x和G(F(y))≈y 。也就是说,将X的图片转换到Y空间后,应该还可以转换回来。这样就杜绝模型把所有X的图片都转换为Y空间中的同一张图片了。由此,循环一致性损失就定义为:
论文Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks
同时,我们为G也引入一个判别器 ,由此可以同样定义一个GAN的损失
论文Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks
最终的损失就由三部分组成:
论文Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks



训练细节:

CycleGAN算法仍然是GAN算法,所以需要定义G模型和D模型。在CycleGAN中,G的模型结构与Perceptual Loss中一致,且使用instance normalization。

模型D则是70x70的PatchGAN中的D。这样的D在Pix2Pix图像翻译模型中也有使用,能够使用较少的参数和应用到更大的图像上。

为了使GAN的训练更加稳定,使用平方损失而不是Log似然。

论文Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks

为了减少震荡,使用历史生成图片而不是最新生成图片来进行D的训练。具体为缓存50张历史生成图像。

其他细节:

  • λ=10
  • Adam 优化算法
  • learning rate前100个epoch为0.0002,在下100个epoch上线性下降。


部分实验结果:


论文Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks

缺点:

在有几何学变换的时候,领域转换的效果不好。比如猫狗转换,橘子变苹果。

代码:
Torch版本(论文原版):https://github.com/junyanz/CycleGAN
Pytorch版本(仍旧是作者实现的):https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix