1.用途
CycleGAN的一个重要应用领域是Domain Adaptation(域迁移:可以通俗的理解为画风迁移),比如可以把一张普通的风景照变化成梵高化作,或者将游戏画面变化成真实世界画面等等。以下是原论文中给出的一些应用:
2.网络结构
CycleGAN 可以让两个 domain 的图片互相转化。传统的 GAN 是单向生成,而 CycleGAN 是互相生成,网络是个环形,所以命名为 Cycle。并且 CycleGAN 一个非常实用的地方就是输入的两张图片可以是任意的两张图片,也就是unpaired。
CycleGAN 由左右两个 GAN 网络组成. G(AB) 负责把 A 类物体 (斑马) 转换成 B 类物体 (正常的马). G(BA) 负责把 B 类物体 (正常的马) 还原成 A 类物体 (斑马).
3.CycleGAN 损失函数
总的损失函数为公式(3),公式(2)为L1损失函数,能使得恢复的图片更加接近原图片且相对不模糊(相对于L2损失函数),公式(1)就是常规的gan损失函数。判别器用的是Patch-D(Pix2Pix用的一样),生成器为U-net结构。
4.代码运行
训练80轮的效果图