原文地址
CycleGAN:
J. Zhu, T. Park, P. Isola and A. A. Efros, “Unpaired Image-to-Image Translation Using Cycle-Consistent Adversarial Networks,” 2017 IEEE International Conference on Computer Vision (ICCV), 2017, pp. 2242-2251, doi: 10.1109/ICCV.2017.244.
beta-CycleGAN:
J. Lee, J. Gu and J. C. Ye, “Unsupervised CT Metal Artifact Learning Using Attention-Guided β-CycleGAN,” in IEEE Transactions on Medical Imaging, vol. 40, no. 12, pp. 3932-3944, Dec. 2021, doi:10.1109/TMI.2021.3101363.
一、CycleGAN的理论理解
目的:图像之间的风格迁移
贡献:不需要成对的配对样本,只需要源域和目标域的图像。
如何定义成对图像呢?
左边为成对图像,两者风格不一样,但内容是一样的,我们还是能看出都是皮鞋、靴子等;右边则是不成对图像,但X,Y两侧都由各自的共同点,左边X都为真实的风景照,右边Y为油画。那如何能利用不成对的图像来训练一个网络,当网络训练好之后,能输入一张风景照,输出一张油画呢。CycleGAN的目的就是解决这一问题。
那么CycleGAN是如何解决这一问题的呢?
我们可以看到对于成对图像,如果要进行风格迁移,通常只要学习成对样本(xi,yi)之间xi到yi 的映射关系即可;而对于成对图像,如果要进行风格迁移,就需要学习X域到Y域之间的映射关系。便有G: X->Y,对于具体的例子就有y’ = G(x),x属于X,所生成的y满足Y的分布。按理来说,我们只需要学习X域到Y域的映射关系便可以完成风格转换,也就是将风景图转换为油画。但是在实践中,作者发现很难孤立的优化这一目标,通常会导致网络崩溃,即所有输入图像都会映射到同一输出图像。
那么又是如何优化这一目标呢?
作者为这个网络增加了更多的结构,这里利用了“循环一致性”(cycle consistent)(不知道这样翻译对不对)。简单理解就是,我们如果用一个翻译器将中文翻译为英文,然后再将英文翻译为中文,那么句子的意思应该不变。用公式表示为G:X->Y;F: Y->X.
二、CycleGAN细节介绍
图(a)是CycleGAN的整体思路,G完成X域到Y域的风格迁移,DY判断G所生成图像是否符合Y域;F完成Y域到X域的风格迁移,DX 判断F所生成的图像是否符合X域。
但是还有一个问题,那就是只是单纯的风格迁移也不行,加入网络输入一张真实的人脸的照片,不能输出一张风景油画吧。也就是说我们要保证图像内容不变,上图的图(b)和图©就是为了确保图像内容不变。例如我们输入一张真实的人脸的照片x,通过生成器G得到相应的人脸油画y’,再通过生成器Y应该要生成一张真实人脸照片x’,x和x’的内容应该是一样的。
通过上述介绍,损失函数也可以确定下来了,一方面就是对抗损失,确保G和F分别能生成Y域和X域的图像;另一方面就是循环一致性损失,确保我们在将中译英,英译中过程里,句子的意思不变。
总体损失:
对抗损失:
循环一致损失: