• Cycle-GAN论文阅读笔记


    Cycle-GAN论文阅读笔记

    很久之前就看过这篇文章,而且还在上面做了一些实验,发现确实鲁帮性很强,今天重新review这一篇paper。

    图像到图像的翻译,是一个比较古老的任务,作者是第一个用cycle-consistent结合gan这种思想来做图像翻译,而且效果显著。

    introduction and motivation

    paired training data会比较难以获取,unpaired比较容易获取,针对这个问题,作者提出了他们的方法。从(X) domain到(Y) domain会有无数个映射,而且作者在做实验的过程中,发现模型容易崩溃,而且无论什么样子的输入都会导致同一个输出。这一系列的问题使得需要添加一些其他的目标约束在网络架构里。一个直观的想法就是循环一致性,意思是,一个句子从英文翻译到法文,并且从法文翻译回英文,得到的英文和原始英文应该是一致的。从数学上来讲,如果有一个映射(G:X ightarrow Y),以及另外一个映射(F:Y ightarrow X),(G)(F)应该是互为inverse的关系。

    根据这个出发点 ,作者分别在网络中添加了(G)(F),并且添加了循环一致性的loss来使得网络满足(F(G(x))approx x)以及(G(F(y))approx y),除此之外,作者还添加了adversarial loss来约束generator。

    网络结构

    网络结构的detail作者并没有绘制,只是画了一个流程的示意图

    网络结构示意图如上图所示。作者定义了两个discriminator,同时也势必有两个discriminator

    loss term一共包括两项,一个是adversarial loss一个是cycle consistency loss。其中adversarial loss是衡量生成图像的分布和目标区域的距离。cycle consistency loss是为了阻止(F)(G)互相矛盾。

    目标函数如下图

    (D_Y)是对生成的(Y),即(G(x))和真实的(Y)进行判别,这个判别其区别与对x进行判别的(D_X)。总是,(D_Y)的优化方向是使得其能够准确的判别生成的样本和fake的样本,也即loss最小,通过上述loss,能够看出,使得loss最小即使得(D_Y(y))接近于0,(D_Y(G(x)))接近于1.之后的很多gan的变形都是玩变不离其宗。

    对于cycle consistency loss,比较粗暴,直接用L1 loss

    total的loss如下

    1579591309484

    1579591331035

    实验设定

    作者做实验,用的图像是256×256的,并且使用的是70×70的patch gan(实际上是感受野为70×70的discriminator),在真正实验的时候,作者用least-square GAN替代了原始的gan,因为least-square gan更加的稳定,举个例子

    上面这个式子,(G)的优化目标是让(D(G(x)))更加接近与1,而(D)的优化目标是让啊(D(G(x)))更加接近与0,同时使得(D(y))接近于1,trade off!!!

    作者做实验用的batch size为1,很多图像任务里面都是1,以及用的是instance normalization。initial 的learning rate为0.0002,在前100个epoch keep the same learning rate,在后100个epoch,线性变为0.

    评价指标

    第一个评价指标是AMT perceptual study, 就是根据人眼来直观评价图像真假。

    第二个评价指标是FCN score来评价“label to photo”这个task。

    同时作者在处理分割任务中,也用了一些分割任务中的评价指标。

    实验结果

    作者首先和最近的unpaired image2image的方法相比较,注意这种unpaired的图像在每一个domain是有ground truth的,所以作者可以进行定量的比较。然后作者探讨了cycle consistency loss和adversarial loss。最后,作者把他们的方法推广到了更加一般的没有gt的图像翻译任务上面。

    作者的baseline包括pixel2pixel,以及一些其他的方法,来一起compare这些指标。作者的结果能够达到是sota的结果。

    ablation study

    同时作者也比较了,如果用Cycle alone,或者是只有一个cycle,试验结果也不如都添加上好。假设不添加discriminator,只用循环一致性来约束的话,

    即只用cycle-alone,结果比较差;只用GAN,不用cycle约束的话,结果也没那么差,相对于只用cycle约束的话,也会好很多。

    如果只加一个forward cycle的话,在label2photo这个任务中,感觉结果会比添加forward cycle 和backward cycle要好,amazing,作者也没有讨论其原因。在photo2label这个任务中有截然不同的结果。

    同时作者比较了一下重建的结果

    可见重建的结果也是挺好的。

    作者在其他任务上,也广泛的应用了cycle-gan,比如style transfer, 目标物体变形等。但是也有失败的例子,文中作者就说了不能够保持物体的几何形状。

  • 相关阅读:
    Javascript 笔记与总结(2-1)Javascript 与 DOM
    单元测试Struts2的Action(包含源码)
    读书、学习、工作和生活中收集的20条经典语录:1-20
    读书、学习、工作和生活中收集的20条经典语录:1-20
    2013年工作中遇到的20个问题:201-220
    2013年工作中遇到的20个问题:201-220
    《大话设计模式》读书总结
    《大话设计模式》读书总结
    中国象棋程序的设计与实现(三)--2012本科毕业论文等重要文档资料
    中国象棋程序的设计与实现(三)--2012本科毕业论文等重要文档资料
  • 原文地址:https://www.cnblogs.com/yongjieShi/p/12222227.html
Copyright © 2020-2023  润新知