Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks
Cycle GAN是GAN系列文章必读的论文之一,Cycle GAN很好的起到了承上启下的作用,对于后续属实是影响深远,意义重大。
文章目录
前言
Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks源自于2017年的ICCV,提出了unpaired image to image translation,使得image to image translation的训练不仅仅局限于成对,论文中亦有许多的创新点值得我们去研究学习。
论文地址:https://arxiv.org/pdf/1703.10593.pdf
一、总述
图像到图像的翻译(Image-to-Image Translation):从给定的场景X完成一张图像到另一个场景Y的转换。
图像到图像的翻译是计算机视觉中非常有意思的问题,并且应用的范围非常的广泛,采用成对的图像进行训练,目标就是学习从输入图像到目标图像的映射。
然而,在很多任务中成对的数据集是没有办法得到的。Cycle GAN的亮点就在于无需使用成对的样本来进行训练模型的新思路,像pix2pix这类的方法则需要成对的数据来进行训练。
二、Cycle GAN理论基础
1. 循环一致性
我们将一个句子从中文翻译到英文,然后再将其翻译回中文,我们应该得到与原始的中文相同的句子,这就是循环一致性。
基于这个逻辑,假设我们有两个转换器:G:X→Y;F:Y→X。这两个转换器G和F是互逆的,两者为双向映射。
以下的四个逻辑要梳理清楚:
G(X) = Y
F(Y) = X
F(G(X)) = X
G(F(Y)) = Y
2. 循环稳定损失
在我们现实的训练中、实践中总会发现循环一致性原理总会或多或少的存在误差。
这个地方就是存在一定的误差量,那么我们能做的就是使得F(G(X)) ≈ X,G(F(Y)) ≈ Y。
论文中的做法就是添加一个循环一致性损失函数,从而使得F(G(X)) ≈ X,G(F(Y)) ≈ Y。
三、训练过程
首先,梳理一下Cycle GAN的判别器和生成器的数量。很显然,判别器两个,生成器同样也是两个,这是和我们传统意义上的GAN的结构不太一样的,但是他的训练过程确实大同小异的。
一方面训练判别器Dx和Dy,使得判别器对映射图像和真实图像的判别能力不断增强,也就是max Dx,Dy ;
另一方面是训练生成器F,G,使得其对X→Y的图像变换和Y→X的图像变换越来越成熟,变换图像和目标图像也越来越像,同时使得X→Y→X,Y→X→Y的过程loss也越来越小,也就是min F G。
四、损失函数
算法的整体损失函数Loss包含三部分:X→Y的生成对抗损失,Y→X的生成对抗损失以及论文中提出的循环一致性损失。
(1)生成对抗损失
(2)循环一致性损失
(3)总损失函数
其中,这里的λ是控制两个对象的相对重要性。
对抗损失(adversarial loss):促使生成图像分布与目标图像分布向接近
循环一致性损失(cycle consistency loss): 使得F(G(X)) ≈ X,G(F(Y)) ≈ Y
五、结果展示
风格转换:
总结
Cycle GAN解决了image-to-image的训练数据不用是成对存在,使得GAN的应用范围更加广泛。
这其中不乏有许多的创新点:
(1)将成对的数据集转换成为成对的转换关系(突破数据集的限制)
(2)提出了循环一致性损失函数(新颖的损失函数)
总之,论文出自于2017年,对于后续的系列GAN的应用有很大的帮助,包括实现超分辨率、实现风格转换等都是有着重要的参考价值。
每一次写一篇都是为了让自己有更深的思考,当然也希望你们能读懂。加油,兄弟们!
参考文献
[1]https://zhuanlan.zhihu.com/p/45394148
[2]https://blog.csdn.net/luojun2007/article/details/81157378
[3]https://www.cnblogs.com/recoverableTi/p/13452479.html