赞
踩
GAN在2015年DCGAN[1]论文提出之后,开始迅速的被关注和被应用到各个领域。比较有影响力的应用,比如Image translation; Image Inpainting; Face image manipulation 以及 Semi-supervised learning等。当然作为当前最有竞争力的生成模型,相对于VAE, GAN虽然不稳定,相对于PixelCNN, GAN虽然没有提供明确的likelihood, 但是GAN在较短的训练之后就可以生成及其真实的样本。生成更加真实的样本在GAN领域也是一个研究的热点。就像刚才提到了,GAN能火,一方面就是因为DCGAN生成的质量很高的64x64 像素的样本。也只有当样本能达到一定真实度的时候,GAN本身才可能被关注,以及应用到Image transformation[5]。
我们将GAN分为两类,一类是无条件下的生成;另一类自然是基于条件信息的生成。之所以要分开,是因为基于条件本身可以作为一个优化,一般来说,把无条件的GAN加上条件会提高样本的质量。无条件下的样本生成,可以关注以下论文:
[1]DCGAN(https://arxiv.org/abs/1511.06434)
[2]WGAN(https://arxiv.org/abs/1701.07875)
[3]LS-GAN(https://arxiv.org/abs/1611.04076)
[4]WGAN-GP(https://arxiv.org/abs/1704.00028)
以及今天要讲解的PG-GAN: PROGRESSIVE GROWING OF GANS FOR IMPROVED QUALITY, STABILITY, AND VARIATION.
从DCGAN到PG-GAN,在我的测试下,生成的人脸质量变得越来越高。尤其是PG-GAN。一个过程化生成,在celebA-hq数据集下生成1024x1024 的及其真实的样本,要知道WGAN-gp生成128x128已经相当困难而且质量得不到保证。那么PG-GAN是如何生成如此惊人的样本的呢?
Figure: 第一行为生成样本;第二行为真实样本
PG-GAN的生成样本质量是惊人的,但是PG-GAN并不是完美的。后面会提到它的一些缺点。
对PG-GAN的一句话总结就是: 过程化的生成方式使得生成高质量,高分辨率的样本成为了可能,使用的一些trick即使没有太多的启发性,但是在本文中却出奇的有效。
PG-GAN可以生成1024 pixels的样本,很明显,使用单纯的GAN,建立从latent code 到 1024x1024 pixels样本的映射网络G,肯定是很难工作的。
过程化的训练方式也就是不采用一步到位,而是先试着生成低分辨率或者低质量的图像,然后不断地增加分辨率或者细节。我将过程化的训练方式分为两种: 一种是不改变网络的;一种是需要改变的。
不改变网络:意味着网络结构不变,所以肯定是建立从latent code 到1024的映射,但是训练数据是从低质量的样本开始,然后不断地增加细节,当然我们需要把训练数据先下采样都要resize到 1024。PG-GAN是属于第二种情况,也就是网络结构先从 4x4的生成,然后不断地给D和G添加层,然后最终输出1024x1024的。
Figure:过程化的训练方式
这种改变网络,过程化生成的方式是一个符合人类直觉,而且很容易想到的。但是PG-GAN能达到如此惊人的效果是和它的一些trick及细节处理分不开的。
为了确保完全理解这篇论文,我使用tensorflow复现了PG-GAN。在celebA数据集上训练,生成的64x64的样本质量也是相当好的。Github地址:
https://github.com/zhangqianhui/PGGAN-tensorflow
下面是我的实验结果:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。