zoukankan      html  css  js  c++  java
  • 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, 目标物体变形等。但是也有失败的例子,文中作者就说了不能够保持物体的几何形状。

  • 相关阅读:
    利用相关的Aware接口
    java 值传递和引用传递。
    权限控制框架Spring Security 和Shiro 的总结
    优秀代码养成
    Servlet 基础知识
    leetcode 501. Find Mode in Binary Search Tree
    leetcode 530. Minimum Absolute Difference in BST
    leetcode 543. Diameter of Binary Tree
    leetcode 551. Student Attendance Record I
    leetcode 563. Binary Tree Tilt
  • 原文地址:https://www.cnblogs.com/yongjieShi/p/12222227.html
Copyright © 2011-2022 走看看