CycleGAN-Unpaired图像翻译
Posted 张雨石
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CycleGAN-Unpaired图像翻译相关的知识,希望对你有一定的参考价值。
在Pix2Pix中,输入图像数据都是成对的。但在现实生活中,两个不同领域的图像很难有成对的。莫奈的画很好,但莫奈永远也画不出21世纪的样子,所以我们不可能获得21世纪莫奈风格的图像。那么要想让21世纪的图像变成莫奈风格,就必须用到无pair数据。
在语言翻译中,常用的一种假设是Cycle一致性,即X语言翻译到Y语言在翻译回X语言,应该和初始的表达是一致的。而一言以蔽之,本文介绍的CycleGAN算法就是将这种Cycle一致性思维引入到图像翻译任务上来。
算法模型
本文的问题和算法框架与Pix2Pix一致。如果对Pix2Pix不了解的话,出门左转到Pix2Pix进行阅读。
其实之前有很多Unpaired Image Translation的算法出现。但是相对于它们,CycleGAN的优势在于:
- 不依赖基于特定任务的预定义的输入和输出的相似度计算方法。
- 不需要假设输入和输出在同一个低维embedding空间。
公式变量定义
- X,Y:两个领域
- x, y: 两个领域的图像集合
- 映射G: X->Y
- 映射F: Y->X
- DX: 用于区分x和F(y)
- DY: 用于区分y和G(x)
损失函数
首先是GAN Loss,对于映射G来说,GAN loss是:
对于映射F有一个类似的公式。
其次是Cycle GAN的核心, Cycle一致性Loss。所谓的Cycle一致性,就是要保证
- 前向一致: x->G(x)->F(G(x))≈x
- 后向一致: y->F(y)->G(F(y))≈y
表示成公式为:
最后汇总的损失函数是:
Why works
为什么Cycle一致性能够起作用?
对于Unpaired问题来说,只是用普通GAN的话可以学到的模型有很多种。种类数目为领域X和领域Y之间的随机映射数目。所以只是用普通GAN损失函数无法保证输入x能够得到对应领域的y。而Cycle一致性的出现,降低了随机映射的数目。从而保证得到的输出不再是随机的。
训练细节
CycleGAN算法仍然是GAN算法,所以需要定义G模型和D模型。在CycleGAN中,G的模型结构与Perceptual Loss中一致,且使用instance normalization。
模型D则是70x70的PatchGAN中的D。这样的D在Pix2Pix图像翻译模型中也有使用,能够使用较少的参数和应用到更大的图像上。
为了使GAN的训练更加稳定,使用平方损失而不是Log似然。
为了减少震荡,使用历史生成图片而不是最新生成图片来进行D的训练。具体为缓存50张历史生成图像。
其他细节:
- λ=10
- Adam 优化算法
- learning rate前100个epoch为0.0002,在下100个epoch上线性下降。
实验
实验检测手法仍然是AMT和FCN-score,与Pix2Pix图像翻译相似。
对比baseline算法
- CoGAN
- Pixel Loss + GAN
- Feaure Loss + GAN
- BiGAN
- Pix2Pix(在Pair数据上训练)
Loss function实验
对比普通GAN损失,GAN+前向一致性损失,GAN+后向一致性损失,CycleGAN
应用
- Collection Style Transfer
- Object Tranfiguration
- Season Transfer
- Photo Generation From Paintings
- Photo Enhancement
更多效果图请参考Paper
总结
使用了普通的GAN和两个方向上的一致性损失解决了Unpair的图像翻译问题。虽然效果比Pix2Pix要差,但已经达到了能看的地步。
但Pix2Pix系列的GAN算法整体上来说,在色彩和纹理上能够达到较好的效果,在有几何学变换的时候,领域转换的效果不好。比如猫狗转换问题。
另外,Unpaired问题与Paired问题存在一个Gap,生成的图像总体上相差太远。为了解决这个混淆性,弱监督或者半监督可能会帮助提高效果。
Reference
- [1]. Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks
- [2]. Pix2Pix图像翻译
- [3]. Perceptual Loss
更多内容欢迎关注微信公众号【雨石记】.
以上是关于CycleGAN-Unpaired图像翻译的主要内容,如果未能解决你的问题,请参考以下文章
深度学习与图神经网络核心技术实践应用高级研修班-Day4图像标题生成-image_caption_generation(encoder-decoder)