论文题目:Unpaired Image-to-Image Translation
using Cycle-Consistent Adversarial Networks
下载地址:https://arxiv.org/pdf/1703.10593.pdf
论文主页:https://junyanz.github.io/CycleGAN
论文核心在第四章,只看这一章也是可以的。
这个论文很有意思,上面主页可以点进去看一下,里面有CycleGAN实现的功能,里面有猫变狗啊,还有游戏画风的转变,比如堡垒之夜变成绝地求生的视频,GTA和现实街景的转化等,还蛮有意思的。
1.Abstract(摘要)
摘要里作者首先说了一下图像转译工作中以前的做法,就是两个数据集要像素级别的对齐,但是现实情况是,这种对齐的数据集非常难以获得,比如你要转梵高风格的画,那就没办法再找梵高画一张像素对齐的画了。
所以作者提出了他的方法,就是不需要对齐图像。
后面就是在介绍他模型的结构了,用的都是干涩的文字描述,这里其实看不懂也没事,看到后面的图就懂了。
2.Introduction(引言)
润!润!润!
引言的这一大章节可以称之水论文的最高境界,大篇幅描写艺术画上的事,没点美术功底还真看不太懂哈哈。
前几段,总结一句话,对于照片和油画之间的转换,我们人脑是可以做到的,或者说是想象得到,因为我们有先验知识。
引言的后面几段就是在讲现阶段的一些情况,就是获取配对的数据集很难,比如一个三层楼的现实图片,你在找个画家画一个油画也是这三层楼。这样是很难得。
引言的最后说了一下他的GAN结构,以及一个模式崩溃的BUG,这里先不说,等后面那张图在一起说。
3.Related work(相关工作)
这一章节前面介绍了一下现阶段GAN能做的工作,比如图像风格转变,填充,修复,超分辨率啊,插帧,文字古诗转成风景画等待。
第二部分介绍了一下 图像转译,还提了一下 pix2pix,这也是后面我要看的论文之一,不过pix是需要图片配对的。
后面就是介绍她的CycleGAN了,说了一小段,对比了几个其他的模型,总之就是CycleGAN 只需要A数据域和B数据域,对AB没有任何要求就可以进行相互转换。
最后介绍了一下他的cycle-consistency,也就是循环一致性,这个后面再说,然后就介绍了一下图像风格合成的东西,没啥说的一看就懂。
4.Formulation(规划)
这一章第一节给的公式和GAN那篇论文里的公式一模一样,这里就不说了。
第二节就是介绍他的cycle-consistency loss了,具体的也是放在后面的图里一起说把。
解释一下下面这张图:
我不知道大家刚看到这张图什么感觉,反正我有点懵,看着很乱。
这个实际上是两组GAN网络,作者把他放在一起了,看着会比较乱,所以我把他拆开。
拆成下面这两组,瞬间秒懂。
假设现在GAN的任务是,GTA游戏画面和现实街道画面的转化。
X是游戏数据域,Y是现实街景数据域。
拆出来的第一个GAN任务就是,生成器G的任务就是输入游戏画面,让他变成现实画面,让判别器Dy无法判别到底是由生成器根据游戏画面生成的假的现实画面,还是来自Y的真实的现实画面。
第二个GAN网络和第一个同理,生成器F的任务就是输入现实Y的画面,生成假的游戏画面,让判别器Dx无法判别到底是游戏画面还是根据现实生成出来的假的游戏画面。
所以才有了作者出给的那张图,就是上面这俩GAN拼在一起的图像,比较像一个循环,所以论文名才是CycleGAN。
循环一致性损失(cycle-consistency loss)
作者在论文里给出了下面这张图,翻译过来叫循环一致性损失,这中文怪怪的。
这张图的还是上面的那个意思,X是游戏画面,Y是现实画面,让程序从游戏画面变成现实画面,再让他变回来游戏画面,看看这前后变化的损失,目标是让该损失越来越小。这就是cycle-consistency loss。
所以为什么要加入这个损失函数?
其实这个组合GAN网络面临一个问题,就是当游戏画面变成现实画面的这个过程,很有可能生成器G就是直接把图像变成了现实画面风格,他并没有依据输入的游戏画面进行风格转变,说白了就是没有带着原先图像的特点。
比如我给你输入了一个游戏里的码头,你给我生成了一个现实画面的房子,虽然生成的是现实风格,但是却和原来无关,此时再转变回游戏风格,也不可能转变回码头了,这样转变前后就有巨大差距。
加入这个损失函数以后,就可以控制转化前后的风格变化的差了,这个差越小,则说明带的原图特点就越多。
原理:
给出了公式:
这里其实又是在算一个期望。
可以看到F(G(x)) 和x算了一个L1范数,就是逐元素做差取绝对值再求和。
整体损失函数:
第一个GAN的 +第二个GAN的 + 两个循环一致性损失。
他这个第三项循环一致性损失前面加了一个变量,可以通过这个变量控制循环一致性损失的强度。