美文网首页gan
论文阅读笔记:Cyclegan

论文阅读笔记:Cyclegan

作者: LiBiscuit | 来源:发表于2019-10-30 20:01 被阅读0次

    冒泡!拖延的小李要补上上一周的论文阅读笔记
    上周事情压力大 人丧丧的就一直拖着 现在就来更新一下。
    ——————
    论文名称:
    《Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks》
    论文地址:
    https://arxiv.org/pdf/1703.10593.pdf
    论文翻译:
    https://blog.csdn.net/luojun2007/article/details/81157378
    https://zhuanlan.zhihu.com/p/45394148
    代码地址:
    https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix

    ————————

    Background

    先交代一下背景,论文涉及到的领域是:Image-to-image translation即图像到图像的转换,就是将图像从一个领域(例如,斑马的图像)转换成另一个领域(例如,马的图像)理想情况下,图像的其他功能 - 任何与这两个域都不直接相关的功能(例如背景)都应该保持相同。(如下图所示)

    那么,在这个过程中我们的目标是:使用成对的图片训练数据集来学习输入图片和输出图片之间的映射,然而现实中,寻找成对的数据比较困难而且花费较为昂贵,那么问题来了--没有成对的图片下要如何去完成我们的训练?

    Assume

    因此,我们需要寻求一种算法,它可以在没有成对的输入输出例子的情况下在域之间进行转换。这里作者做了一个假设:在源域和目标域存在一种潜在的关系。其实就是两者从分布上而言,是存在相似性的。
    那么就可以联想到生成对抗的思想(GAN):给定源域的图片集合X以及另一个域的图片集合Y,我们使用对抗的思想学习一个映射G:X→Y,其输出\hat{y}=G(x),x∈X,与y∈Y无法区分。
    但是如果单纯的只是用GAN又会出现一些问题:
    1.无法保证对于一个输入x,可以得到有意义的输出y,因为使用了不成对的训练集,可以学到无数种的映射G,而这些G都可以使生成的分布y^逼近与目标域。
    2.单独优化对抗损失非常困难,导致了一些问题,如模型崩溃。举例说明一下模型崩溃:例如训练集有很多种类别(如猫狗牛羊),但是我们只能生成狗(或猫或牛或羊),虽然生成的狗的图片质量特别好,但是整个G就只能生成狗,根本没法生成猫牛羊,陷入一种训练结果不好的状态。
    那么面对新的问题,又该如何解决?回到问题的本身,我们做的是图像到图像的翻译,那么在联系到现实中文本的翻译,从英文翻译到中文,再从中文翻译回去,这两个翻译之间要有一致性,双射互逆循环,基于这样的特点作者提出了:
    Cycle-Consistent Adversarial Networks(CycleGan)实现了非配对的图像到图像转换

    CycleGan

    Model

    用数学符号来表示下:
    我们有一个转换器(映射):G:X→Y,和另一个转换器F:Y→X。
    那么根据刚刚所说的翻译的性质来看:G和F应该是互逆的,即两者是一个双向映射。于是可以同时训练G和F来确保这个性质,在这其中增加一个循环一致性损失,使得F(G(x))≈x以及G(F(x))≈y组合该损失和对抗损失,得到了整体的非正对的图像到图像迁移的优化目标。此外,我们还引入了两个对抗性判别器Dx 和 Dy, Dx的目的是区别图像x和翻译后的图像F(y),Dy的目的是区分y和G(x)。
    图解:

    在这个图中,我们可以看到:A通过G生成一个造假的B图,这个造假的B图通过F重构再生成一个假的A,这个假的A和输入的原始A之间的损失即为循环一致损失,判别器此时判断的是假B和真B之间的差异。通过这个过程我们可以看到:实际上它把生成的图片引入另一个训练的过程 中,是另一个生成器训练的训练集,所以假的B相当于一个中间表示,A通过中间表示把图像映射到自身。
    刚刚图是一个单向的过程,完整如下: 此图中,
    前向:X→G→Y1→F→X1 X≈x1
    反向:Y→F→X1→G→y1 Y≈y1
    这两个训练是交替进行的,随机选取数据集,共享两个生成器G、F。(注意:不成对是A/B两个数据集都存在,但没有成对出现,而不是另一方完全缺失。)

    Loss

    Adversarial Loss

    对抗损失即原来GAN的损失,生成器G和F各有一个表达如下:

    注:G的作用是使得生成的图片越逼真,D的作用是判别出假的照片差异。log(DY(y))是判断真的样本故越大越真,那么就要求D要大,DY(G(x)))判断的是假的照片,那么这个时候结果应该是越小越好,那就要求G要小。故G最小,D最大的情况下是我们的目标函数。
    这个对抗性损失的意义在于:促使生成图像分布与目标域的图像分布相逼近
    Cycle Consistency Loss
    满足的是:
    x → G(x) → F(G(x)) ≈ x
    y → F(y) → G(F(y)) ≈ y.
    此损失函数的意义在于:以防止学习的映射G和F相互矛盾
    Full Objective

    我们的模型可以看作是训练两个“自编码器”:我们学习一个自动编码Fo G: X -> X与另外一个自编码Go F:Y -> Y。然而,这些自动编码都有特殊的内部结构:它们通过将图像转换为另一域的中间表示,将图像映射到自身。这样的设置也可以看作是“对抗性自动编码”的特例。它使用一个对抗性损失来训练一个自动编码器的瓶颈层,以匹配人意的目标分布。在我们的例子中,X -> X 自动编码的目标分布是域Y(中间表示)。

    Experiments

    Network Architecture

    采用了适合我们使用的网络架构-Johnson等人的生成网络。该网络包括:两个stride-2卷积,几个残差块和两个分步长卷积。对128X128图像使用6个块,对256X256和更高分辨率的训练图像使用9个块。对于判别网络,我们使用70个PatchGANs,其目的是对70X70的重叠图像块进行是真是假分类。这样的判别器架构比全图判别器具有更少的参数,并且可以以全卷积的方式应用于任意大小的图像。

    Training details

    1.对于Lgan,我们用最小二乘损失替代负对数似然目标。这种损失在训练和生成高质量结果时更稳定。可参考:生成对抗网络GAN系列(四)--- LSGAN---最小二乘GAN(Least Squares Generative Adversarial Networks
    2.减少模型的震荡,我们遵循Shrivastava等人的策略,使用历史生成的图片更新鉴别器,而不是网络最新生成的图片。我们保留了一个图像缓冲区,存储50幅以前生成的图像。
    3.对于所有的实验,我设置了lamda = 10,使用Adam,batch size = 1。所有网络都从零开始训练,学习率为0.0002。在前100个epoch保持相同的学习率,并在接下来的100个epoch中线性衰减为0。

    Results

    1.与最近的非成对的图像到图像的迁移方法进行对比;
    2.自身进行对比,限制使用不同的损失项;
    3.证明了算法的通用性

    与极限模型的对比:CoGANPixel、 loss+GAN、Feature loss+GAN、BiGAN/ALI pix2pix 消融研究(Ablation study )---就是通过简化模型,看效果,就不如我们的模型里面,去掉GAN,去掉cycle等等一部分,做实验,看效果如何,如下图:
    通过上述对比可以看出,通过实验证明了cyclegan算法的有效性,提高了图像翻译的准确度。下图是应用cyclegan的效果图:
    Limitation

    cyclegan在涉及纹理或颜色的之类的图像转换效果好一点,但是存在一定的局限性,

    1.在涉及几何转换上有失败,例如下图(狗转变成猫或相反):
    2.由训练及分布特征导致的,比如训练野马和斑马转换时,并没有考虑到马上可能骑着一个人,个人猜测有可能只提取了轮廓部分。

    3.在匹配的数据集上训练和不匹配的数据集上训练仍然会有差距,作者提出要解决这种问题需要融合一些弱语义监督,这样仍然只会带来比全监督系统低得多的标注成本。

    Conclusions

    总的来说,cyclegan在图像翻译的领域里面取得了不错的成绩,我们可以把cyclegan看做是两个镜像对称的gan构成了一个环形网络,里面共享两个生成器G、F,而且有两个判别器,损失除了原有的GAN损失,还引入了新的循环一致损失,两个损失结合在一起就是我们目标的损失函数。
    ————————
    ending~
    参考资料:Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks(CycleGAN)
    Cycle GAN 论文解析

    相关文章

      网友评论

        本文标题:论文阅读笔记:Cyclegan

        本文链接:https://www.haomeiwen.com/subject/gtcavctx.html