GAN目前发展的很快,成果也很多,从GAN->Pix2pix->CycleGAN
本来是准备看一篇19年一月份ICLR发表的conference paper INSTAGAN,发现这篇论文是在cycleGAN的基础上的改进,于是先阅读这篇论文。
CycleGAN
论文地址:https://arxiv.org/pdf/1703.10593.pdf
代码地址:https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix
Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks
**Abstract**
背景介绍:
图片迁移的目标是使用成对的图片训练数据集来学习输入图片和输出图片之间的映射。
问题:
However,对于许多项目没有成对的训练数据集。
本文方法:
我们的目标是学习映射G: X→Y,使用对抗损失无法区分G(X)和Y的分布。所以我们又提出了成对的方向映射F:Y→X,并介绍了cycle consistency 损失来增强使得F(G(X))≈X。
改进:
1.Qualitatiue results
2.Quantitative results
**1.Introduction**
在这篇论文中,我们提出了一种方法,抓住一个数据集的特殊特征,并弄清楚这些特征如何转换到其他的图片数据集中,在成对训练集缺失的情况下。这个问题可以广泛地被称作图片迁移,可以转换图片到一个场景到另一个场景。
不禁思考:和Pix2pix的区别?
问题提出的过程:
**问题提出:**在计算机视觉中,图片处理等应用产生了图片成对出现的图片迁移系统。然而,获取成对的训练数据很困难。因此我们寻找一种在没有成对输入-输出例子的情况下可以在区域之间学习迁移的算法。
**想法提出的思考:**我们可以训练一个映射G: X→Y,因此输出,。此时发现无法区分。
**想法可能出现的问题:**
1.想法所提出的转换无法保证输入和输出的配对,许多映射G会产生相同的分布。
2.在实际的应用中,论文的提出者发现很难去优化对抗的目标。
**新的想法:**
一系列的问题要求我们添加更多的结构,因此我们利用转换必须是循环一致的特点。
数学的解释是:如果我们有一个转换器:G: X→Y,那么另一个转换器F:Y→X,并且G和F应该互为逆,并且两个映射应该为双射。注意!双射的概念。
我们同时训练G和F映射,并且添加循环一致损失,鼓励和
**2.Related work**
1.GAN
2.Image-to-Image Translation
3.Unpaired Image-to-Image Translation
4.Cycle Consistency
5.Neural Style Transfer
**3.Formulation**
我们的目标是基于所给训练例子其中,其中,学习区域X和Y之间的映射。我们的模型包括两个映射G: X→Y和F: Y→X,其中有两个判别器和。目标主要包括了两部分:1.adversarial loss;2.cycle consistency loss:为避免所学习的映射G和F相互矛盾。
**3.1 Adversarial Loss**
所有的映射函数我们都使用对抗损失,对于映射函数G:X→Y,以及判别器,我们这样表达我们的公式
其中要达到的效果可以用公式表达为还有同样的映射函数F:Y→X
**3.2 Cycle Consistency Loss**
然而,有足够的能力,一个网络可以把同一数据集的输入图片映射为目标去区域的任意排列图片,使得输出分布符合目标分布。因此对抗损失不能保证所学习的函数映射一个输入到想要的输出。所以我们提出了循环一致损失,数学公式可以表达为:
L1的距离
**3.3 Full Objective**
所有的损失之和表示为:
其中控制两个目标的相对重要性。我们主要解决:
**4. Implementation**
**Network Architecture**
生成网络:这个网络包括步长为2的卷积,Residual blocks???,两个步长为1/2的
判别网络:70*70 PatchGAN
**Training details**
我们使用两种技术来稳定我们的模型训练过程。
1.对于用最小二乘法替代负似然估计,这个损失在训练过程中更加稳定并且会产生更高质量的结果。和原公式的一个比较,会产生的结果,
2.为减少振荡,使用一个什么原则,并且更新判别器的使用历史生成图片,而不是最新生成器生成的。
对所有的实验,我们设置cycle loss的系数为10,我们使用Adam优化器设置batch size为1,所有网络的学习率为0.002。在前100次迭代我们保持同样的学习率,超过的100次迭代线性递减到零。
论文剩下的内容基本上都是关于,测试的过程和CycleCAN的应用。
本论文笔记写的很随意,主要是阅读论文的一个思路梳理。不够严谨,参考下面大神的理解,进一步对论文有了更加深刻的认识。
https://blog.csdn.net/qq_21190081/article/details/78807931