GAN 的那些事儿

一、概述

    GAN 从 2014 年被提出到现在才短短四年,从没什么用处到现在可以玩不少东西了,让人感受到 GAN 其实还是有点搞头的。而GAN 的发展,也是数据、算力、算法多方面齐驱并进的体现。之前都没怎么接触 GAN,为了了解 GAN,今天去了解了几篇工作。按时间轴了解到几个工作 GAN、DCGAN、conditional GAN、cycle GAN、pix2pixHD、SN GAN、SA GAN、big GAN,不过 SN GAN、SA GAN 还没进一步了解。接下来将围绕其他几个工作稍微展开记录一下。

二、评估指标

    目前有一个工作总结了评估 GAN 的文章 [1],评估了 5 种评估方式。目前最流行的是 Inception Score (IS) [2],它使用外部模型即谷歌的 Inception 网络评估生成图像的质量和多样性,该模型在大规模 ImageNet 数据集上训练,Inception Score 展示出生成图像的质量和多样性之间的合理关联,这解释了其在实践中广泛应用的原因。还有Fréchet Inception Distance (FID) 是最近由 [3] 引入并用来评估 GAN 的度量方法。这里不展开介绍。公式介绍也可以参考这个

三、方法简介

1. GAN 

    生成对抗网络(Generative Adversarial Networks [4])主要由生成器 (generator) 和判别器 (discriminator) 组成。它的原理也比较清晰,generator 负责输入随机噪声z,输出一个图片 G(z) ,而真实样本x,判别器 D 则用尽全力希望把真实样本和虚假样本区分开来。而 G 则希望产生的 G(z) 以假乱真,欺骗判别器,让其判断不出来。从而有了这么一种对抗的关系。

2. DCGAN

     DCGAN [5] 原理和 GAN 是一样的,DCGAN 可以理解为 GAN 和 CNN 的结合,同时 GAN 其实并不好收敛,DCGAN 在网络收敛上做了一些改进工作。比如,G 网络中采用 transposed convolutional layer 进行上采样,D 加入 stride conv 替代 pooling。G采用ReLU,最后一层采用tanh。D采用LeakyReLU。具体原因,需要去看看论文。G的框架如下。

3. conditional GAN

    之前的 GAN 都是输入噪声,然后输出以假乱真的照片。现在有了新的玩法,我希望指定形状,生成类似真实的图片。从而完成特点风格转换,或者图片上色,或者从骨架到完整图的功能。如下图

而pix2pix, 也就是conditional GAN [6] 这篇文章就是帮你实现这么一个功能。再看下面这个图,我们有一对图片,当前有INPUT 和 TARGET,我希望训练一个 G, 能够生成和 TARGET 类似的图片。

     pix2pix 的训练是基于 图片pair 的。输入不再只是噪声,而是同时传入原图。那么 GAN 损失函数变成:

    GAN 的这一部分和原来的GAN 差别不大。而在此之外,因为我们的生成器是希望生成和 TARGET 类似的图,那么很自然而然的有了以下的损失函数,不用 l2 而 用 l1 是为了生成的图不要那么模糊。(不过这里个人有个疑问,l1如何求导?)

    从而最终的优化目标为:

    在这里还要提到的是,从这里开始到后续很多网络,生成器采用的都是 U-Net 的结构,U-Net 是图像分割中借鉴过来的经典。

4. cycle GAN

    conditional GAN 的训练,需要提供成图片 pair,这其实是一件很麻烦的事。而 cycle GAN 则解决了这个困扰。

    而cycle GAN [7] 提供的一个思路是,我当前有一个 x,我希望有个 G 生成 y = G(x),而同时又有另一个生成器 F 可以生成 F(y) ~= x,也就是 F(G(x)) ~= x。也就是我又一只马,我把马变成斑马,还能把斑马变回来马,从而构成一个轮回。

    GAN 部分的 loss 还是老样子,只是稍微改动:

    而另一部分生成器的 loss 和 cGAN 类似,只不过这里是两个生成器:

    所以最终的优化函数为:

    再训练的时候,这里不再需要指定 x, y。这里可以理解为两个样本空间,X, Y 之间的映射或转化。

5. pix2pixHD

    cycle GAN 只能输出256p或512p的低分辨率图像,而 pix2pixHD [8] 顾名思义,就是解决分辨率问题,它可以生成2048 x 1024大小高质量的图。它有一个贡献是,采用粗到细的生成方式,就是先生成一个中分辨率的,再生成一个高分辨的。另外还有就是feature matching loss,其实就是 perceptural loss,用高层语义的特征求 loss。还有就是 multi-scale 的判别器。

6. big GAN

    big GAN [9] 为了适合大规模训练,在网络架构上做了一些改进,它的参数是前人的2-4倍,批次大小是前人的8倍(256->2048)。训练用的是512块谷歌TPU,并且训练时间会持续24到48个小时。这简直是土豪的表现。这种实验一般人做不来……也就只有 DeepMind 这种级别的地方可以玩了。但它生成的图片是真的真……而且在512x512的分辨率下依然真实。BigGAN的 Inception Score(IS)得分是166.3,一下子比前人52.52的最佳得分提升了100多分,离真实图像的233分更近了。而 Frechet Inception Distance(FID)得分,也从之前的18.65优化到了9.6。

 

四、参考文献

[1] Huang G, Yuan Y, Xu Q, et al. An empirical study on evaluation metrics of generative adversarial networks[J]. 2018.

[2] Che T, Li Y, Jacob A P, et al. Mode regularized generative adversarial networks[J]. arXiv preprint arXiv:1612.02136, 2016.

[3] Salimans, T., Goodfellow, I., Zaremba, W., Cheung, V., Radford, A., & Chen, X. (2016). Improved techniques for training gans. In Advances in Neural Information Processing Systems (pp. 2234–2242).

[4] Goodfellow I, Pouget-Abadie J, Mirza M, et al. Generative adversarial nets[C]//Advances in neural information processing systems. 2014: 2672-2680.

[5] Radford A, Metz L, Chintala S. Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks[J]. Computer Science, 2015.

[6] Isola P, Zhu J Y, Zhou T, et al. Image-to-image translation with conditional adversarial networks[J]. arXiv preprint, 2017.

[7] Zhu J Y, Park T, Isola P, et al. Unpaired Image-to-Image Translation Using Cycle-Consistent Adversarial Networks[J]. 2017:2242-2251.

[8] Wang T C, Liu M Y, Zhu J Y, et al. High-resolution image synthesis and semantic manipulation with conditional gans[C]//IEEE Conference on Computer Vision and Pattern Recognition (CVPR). 2018, 1(3): 5.

[9] Brock, Andrew, Jeff Donahue, and Karen Simonyan. "Large Scale GAN Training for High Fidelity Natural Image Synthesis." arXiv preprint arXiv:1809.11096 (2018).

[10] https://affinelayer.com/pix2pix/

[11] https://affinelayer.com/pixsrv/

[12] https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值