zoukankan      html  css  js  c++  java
  • GAN相关:PAN(Perceptual Adversarial Network)/ 感知对抗网络

    GAN相关:PAN(Perceptual Adversarial Network)/ 感知对抗网络

    Perceptual Adversarial Networks for Image-to-Image Transformation

    Chaoyue Wang et al

    intro

    首先介绍pixel-wise的图像任务。指出用传统的l1和l2 norm来进行计算会带来一些问题,比如丢失高频造成的模糊,或者丢失perceptual information导致的artifact。而GAN,cGAN可以较好地生成更真实的图片,也有将像素级的loss和GAN loss结合的方法。然后介绍了 perceptual loss,这种loss可以通过penalizing the discrepancy between extracted high-level features, these models are trained to transform the input image into the output which has same high-level features with the corresponding ground-truth. 也就是可以生成具有相同的高阶特征的图片,显然这个可以做风格迁移,也可以做artifact的压制。上述的所有loss都从不同方面惩罚了输出和真实图像之间的discrepancy,然而单一的loss还不够,所以需要多个loss结合起来。而perceptual loss的优点是,可以再各个方面进行优化,自动持续的寻找还没有被优化的discrepancy。 the perceptual adversarial loss provides a strategy to penalize the discrepancy between the output and ground-truth images from as many perspectives as possible。

    所以作者在本文中的贡献在于:提出了principled perceptual adversarial loss ,利用判别器的隐层来评价output和groundtruth。另外,把pan loss 和gan loss结合,并且在各种image-to-image的任务下做了评估。

    传统的CNN做图像转换,应用了per-pixel 的loss以及其他的各种loss形式。并且做了许多任务,比如de-raining,de-snowing等等。GAN在最近得到了很好的发展。有些工作是为了更好的训练generator的,比如InfoGAN,WGAN,Energy-based GAN等,还有一些用GAN来解决经典问题,比如PGN用来做视频预测,SRGAN用来做超分辨率,ID-GAN做de-raining,以及iGAN做interactive application等等。当然还有最近的pix2pix-cGAN。

    下面介绍的是perceptual loss。Therefore, high-level features extracted from hidden layers of a well-trained CNNs are introduced to optimize image generation models. 人们利用训练好的网络中的高层的信息,或者叫feature来提高生成质量。

    methods

    网络结构图:


    这里写图片描述

    作为GAN网络,GAN loss和传统的gan一样:min max E[logD(y)] + E[log(1-D(T(x)))] ,这里的T是Transform网络,D就是判别网络,x是输入,比如snowy,rainy,或者inpainting里用的缺少部分的图片,或者用来补全的图画的轮廓等。y是真是图像。

    下面是perceptual loss,这个loss实际上就是对网络的高层的偏离的一个惩罚,因为我们任务高层网络含有知觉意义上的信息,或者说是类似语义上的信息。具体的操作就是:


    这里写图片描述

    上面的lambda是超参数,Pi是第i层的一个函数,计算T(x)和y的偏差,这里用了l1-norm。这样,最终的loss 函数就是:


    这里写图片描述

    T(就是G)和D的loss 函数分别代表的意义如下:T希望我们生成的图像能够在D的判决下更趋向于1,也就是True,而且希望T(x)和y的perceptual的距离更加接近。而D刚好相反,一方面希望两者尽量分开,另一方面希望两者perceptual距离更大。但是m是一个margin,超过了这一项就变成0,并且没有gradient了。

    然后T网络的参数如下;


    这里写图片描述

    可以看到,这个T网络加跳线用的是concatenate拼接,而且最后一层用了tanh,leaky-relu只出现在某几层。还可以看到用了BN层。

    然后这是D网络的结构:


    这里写图片描述

    下图是一些对参数的讨论:


    这里写图片描述

    上面的比较是针对不同的loss function,下面的是用把lambda向量中的某一项置1,其他置0而得到的perceptual loss function 来训练得到的结果,可以看出,对高层进行perceptual的约束可以更好的回复高频,但是会丢失颜色信息;而对低层约束可以注意颜色,却无法恢复细节,从而产生blurring。所以将不同层的约束integrate起来。

    下面的是跟其他方法如IDGAN或者pix2pix的比较,就不放图了。。。

    conclusion

    这个PAN网络的一个主要的改进就是损失函数,把perceptual loss和gan相结合,得到了更好的效果。(之前的pix2pix是把l1 loss和gan loss相结合)

    2018年03月27日16:52:53

  • 相关阅读:
    git上传本地代码
    oracle 时间格式转化以及计算
    windows 下使用sqlplus
    filter 过滤器加载流程
    vscode java
    vscode cpp
    manual jar
    toy jar
    inteli shortcut
    eng
  • 原文地址:https://www.cnblogs.com/morikokyuro/p/13256761.html
Copyright © 2011-2022 走看看