CycleGAN是一种用于图像到图像翻译的生成对抗网络,它突破了传统域迁移模型的限制,无需成对样本即可学习图像在不同域间的转换。这种无监督的方法特别适用于难以获取配对数据的场景,例如艺术风格迁移。与需要成对训练样本的Pix2Pix不同,CycleGAN通过循环一致性损失和对抗性训练,实现了两个域之间自由的图像风格转换,极大地扩展了图像处理的应用范围和灵活性。
这几个带读论文真不错,解析很精炼入门,可惜都是17年的。
模型结构
CycleGAN 网络本质上是由两个镜像对称的 GAN 网络组成,其结构如下图所示(图片来源于原论文):
为了方便理解,这里以苹果和橘子为例介绍。上图中 X 可以理解为苹果,Y 为橘子;G 为将苹果生成橘子风格的生成器,F 为将橘子生成的苹果风格的生成器,DX 和 DY 为其相应判别器,具体生成器和判别器的结构可见下文代码。模型最终能够输出两个模型的权重,分别将两种图像的风格进行彼此迁移,生成新的图像。
该模型一个很重要的部分就是损失函数,在所有损失里面循环一致损失(Cycle Consistency Loss)是最重要的。循环损失的计算过程如下图所示(图片来源于原论文):
图中苹果图片 x 经过生成器 G 得到伪橘子 Y^,然后将伪橘子 Y^ 结果送进生成器 F 又产生苹果风格的结果 x^,最后将生成的苹果风格结果x^ 与原苹果图片x 一起计算出循环一致损失,反之亦然。循环损失捕捉了这样的直觉,即如果我们从一个域转换到另一个域,然后再转换回来,我们应该到达我们开始的地方。