pix2pix

作者: Mordekaiser | 来源:发表于2018-11-18 08:29 被阅读3次

    论文:pix2pix
    代码:GitHub

    本文最大的贡献在于提出了一个统一的框架解决了图像翻译问题。所谓图像翻译,指从一副图像到另一副图像的转换。可以类比机器翻译,一种语言转换为另一种语言。常见的图像翻译任务有:

    • 图像去噪
    • 图像超分辨
    • 图像补全
    • 风格迁移
    • ...
      在这篇paper里面,作者提出的框架十分简洁优雅(好用的算法总是简洁优雅的)。相比以往算法的大量专家知识,手工复杂的loss。这篇paper非常粗暴,使用CGAN处理了一系列的转换问题。下面是一些转换示例:


      pix2pix结果示例

    上面展示了许多有趣的结果,比如分割图\longrightarrow街景图,边缘图\longrightarrow真实图。对于第一次看到的时候还是很惊艳的,那么这个是怎么做到的呢?我们可以设想一下,如果是我们,我们自己会如何设计这个网络。

    直观的想法

    最直接的想法就是,设计一个CNN网络,直接建立输入-输出的映射,就像图像去噪问题一样。可是对于上面的问题,这样做会带来一个问题。生成图像质量不清晰。

    拿左上角的分割图\longrightarrow街景图为例,语义分割图的每个标签比如“汽车”可能对应不同样式,颜色的汽车。那么模型学习到的会是所有不同汽车的评均,这样会造成模糊。

    pix2pix语义地图L1loss结果

    如何解决模糊呢?

    这里作者想了一个办法,即加入GAN的Loss去惩罚模型。GAN相比于传统生成式模型可以较好的生成高分辨率图片。思路也很简单,在上述直观想法的基础上加入一个判别器,判断输入图片是否是真实样本。模型示意图如下:


    pix2pix模型示意图

    上图模型和CGAN有所不同,但它是一个CGAN,只不过输入只有一个,这个输入就是条件信息。原始的CGAN需要输入随机噪声,以及条件。这里之所有没有输入噪声信息,是因为在实际实验中,如果输入噪声和条件,噪声往往被淹没在条件C当中,所以这里直接省去了。

    其他tricks

    从上面两点可以得到最终的Loss由两部分构成:

    • 输出和标签信息的L1 Loss。
    • GAN Loss
    • 测试也使用Dropout,以使输出多样化


      pix2pix Loss

    采用L1 Loss而不是L2 Loss的理由很简单,L1 Loss相比于L2 Loss保边缘(L2 Loss基于高斯先验,L1 Loss基于拉普拉斯先验)。

    GAN Loss为LSGAN的最小二乘Loss,并使用PatchGAN(进一步保证生成图像的清晰度)。PatchGAN将图像换分成很多个Patch,并对每一个Patch使用判别器进行判别(实际代码实现有更取巧的办法),将所有Patch的Loss求平均作为最终的Loss。

    相关文章

      网友评论

        本文标题:pix2pix

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