【深度解读】GANs实现:比较生成对抗网络(无需择优挑选)

一些理论性的GANs(生成对抗网络)的实现包括:DCGAN, LSGAN, WGAN, WGAN-GP, BEGAN,还有DRAGAN。

这篇文章执行了与论文结构相同的模型结构,并在没有进行择优挑选的情况下将其与CelebA数据集进行了比较。

内容

  • 特征
  • 模型
  • 数据集
    • CelebA
  • 结果
    • DCGAN
    • LSGAN
    • WGAN
    • WGAN-GP
    • BEGAN
    • DRAGAN
  • 结论
  • 使用
    • 要求
  • 类似的工作

特征

  • 模型架构与每个论文中提出的架构相同
  • 每个模型都没有太大的调优,因此可以改进结果
  • 良好的结构
    • 用于输入管道的TensorFlow queue runner
    • 单一的训练机(单一的评估器)-多模型结构
    • 训练和配置的日志记录在TensorBoard上

数据集

CelebA http://mmlab.ie.cuhk.edu.hk/projects/CelebA.html

  • 所有的实验都是在64×64的CelebA数据集上进行的
  • 数据集有202599个图像
  • 一个epoch包含1580次迭代,批处理大小为128(注:1个epoch等于使用训练集中的全部样本训练一次)

结果

  • 默认batch_size=128,z_dim=100(来自DCGAN)

DCGAN

论文:Radford, Alec, Luke Metz, and Soumith Chintala. “Unsupervised representation learning with deep convolutional generative adversarial networks.” arXiv preprint arXiv:1511.06434 (2015).

  • 相对简单的网络
  • 鉴别器(D_lr)的学习率是2e-4,而生成器(G_lr)的学习率是2e-4(上面论文中提到)和1e-3

第二行(50k,30k)表示每次训练迭代

生成器的更高的学习率(1e-3)产生了更好的结果。然而,在这种情况下,由于其巨大的学习速率,生成器有时会崩溃。

降低两个学习速率可能带来稳定性,如https://ajolicoeur.wordpress.com/cats/这个网站所展示的,其中D_lr=5e-5, G_lr=2e-4。

LSGAN

论文:Mao, Xudong, et al. “Least squares generative adversarial networks.” arXiv preprint ArXiv:1611.04076 (2016).

  • 不同寻常的是,LSGAN使用了巨大的潜在空间维度 (z_dim=1024)
  • 但在我的实验中,z_dim=100的结果比在论文中最开始使用的z_dim=1024的结果要好得多

WGAN

论文:Arjovsky, Martin, Soumith Chintala, and Léon Bottou. “Wasserstein gan.” arXiv preprint arXiv:1701.07875 (2017).

  • 与令人印象深刻的理论相比,WGAN的样本并不令人印象深刻
  • 也没有提出具体的网络架构,所以DCGAN架构被用于实验

WGAN-GP

论文:Gulrajani, Ishaan, et al. “Improved training of wasserstein gans.” arXiv preprint arXiv:1704.00028 (2017).

  • 尝试了两种网络架构,DCGAN架构和appendix C中的ResNet架构
  • 与DCGAN架构相比,ResNet具有更复杂的架构和更好的性能
  • 有趣的是,样本的视觉质量提高得很快((ResNet WGAN-GP在7000次迭代中拥有最好的样本),但在继续训练时情况会变得更糟
  • 根据DRAGAN来看,WGAN的约束太过严格,无法学习优秀的生成器

面部崩溃现象

当迭代增加时,WGAN-GP比其他模型崩溃的更大。

DCGAN架构

ResNet架构

ResNet架构在早期阶段展示了最好的视觉质量样本,有7000次迭代(以我的标准)。这可能是由于剩余的体系结构造成的。批量大小为64.

不管面部崩溃原理,Wasserstein距离都在稳步下降。它应该来自于鉴别器网络未能找到上确界(supremum)函数和K-Lipschitz函数。

有趣的是,在训练结束的时候,W_dist < 0。这表明了E[fake] > E[real],并且在原始GAN的视图中,这意味着生成器在鉴别器中占主导。

BEGAN

论文:Berthelot, David, Tom Schumm, and Luke Metz. “Began: Boundary equilibrium generative adversarial networks.” arXiv preprint arXiv:1703.10717 (2017).

  • 根据我所知,最好的模型能产生最好的视觉效果
  • 它还展示了这个项目中最好的性能
    • 尽管可选的改进没有实现(论文中的第3.5.1部分)
  • 然而,这些样品所产生的样本与其他模型略有不同,看起来细节有些消失
  • 因此,我想知道不同数据集的结果是什么

batch_size=16, z_dim=64, gamma=0.5.

DRAGAN

论文:Kodali, Naveen, et al. “How to Train Your DRAGAN.” arXiv preprint arXiv:1705.07215 (2017).

  • 与其他论文提到的内容不同的是,DRAGAN的动机是为了提高GAN的工作效率
  • 这种通过博弈论(game theory)的方法是非常独特和有趣的
  • 它也显示了良好的结果
  • 这个算法看起来与WGAN-GP相似

结论

  • BEGAN展示了最好的表现
    • 部分原因是网络架构和参数设置非常谨慎
    • 它是否会对其他数据集起作用
  • WGAN和WGAN-GP的结果并不像它的美丽的理论那样令人印象深刻
  • 由于缺乏定量的测量方法,除了BEGAN之外,很难对模型进行排名。从每个模型中生成的样本的视觉质量都是相似的
  • 相反地,自DCGAN以来,已经有了很多GANs,但是在视觉质量方面并没有显著的提高(除了BEGAN)

使用

下载CelebA数据集:

$ python download.py celeba

将图像转换为tfrecords格式。转换的选项是硬编码(hard-coded)的,因此确保在运行convert.py之前修改它。

$ python convert.py

如果你想要更改每个模型的设置,你必须直接修改代码。

$ python train.py --help 

usage: train.py [-h] [--num_epochs NUM_EPOCHS] [--batch_size BATCH_SIZE] 

           [--num_threads NUM_THREADS] --model MODEL [--name NAME] 

           [--renew] 

optional arguments: 

-h, --help show this help message and exit 

--num_epochs NUM_EPOCHS 

default: 20 

--batch_size BATCH_SIZE 

default: 128 

--num_threads NUM_THREADS 

# of data read threads (default: 4) 

--model MODEL DCGAN / LSGAN / WGAN / WGAN-GP / EBGAN / BEGAN / 

DRAGAN 

--name NAME default: name=model 

--renew train model from scratch - clean saved checkpoints and 

summaries

通过TensorBoard监控:

$ tensorboard --logdir=summary/name

评估(生成假样本):

$ python eval.py --help 

usage: eval.py [-h] --model MODEL [--name NAME] 

optional arguments: 

-h, --help show this help message and exit 

--model MODEL DCGAN / LSGAN / WGAN / WGAN-GP / EBGAN / BEGAN / DRAGAN 

--name NAME default: name=model

要求

  • python 2.7
  • tensorflow 1.2
  • tqdm
  • (可选) pynvml – 自动gpu选项

类似的工作

  • wiseodd/generative-models;地址:https://github.com/wiseodd/generative-models
  • hwalsuklee/tensorflow-generative-model-collections;地址:https://github.com/hwalsuklee/tensorflow-generative-model-collections
  • sanghoon/tf-exercise-gan;地址:https://github.com/sanghoon/tf-exercise-gan
  • YadiraF/GAN_Theories;地址:https://github.com/YadiraF/GAN_Theories
  • https://ajolicoeur.wordpress.com/cats/

原文发布于微信公众号 - ATYUN订阅号(atyun_com)

原文发表时间:2017-10-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器之心

资源 |《TensorFlow深度学习》前两章提供开放下载

选自Matroid 机器之心编译 参与:黄小天 最近,《TensorFlow 深度学习》(TensorFlow for Deep Learning)一书发布前...

2655

超级网络

在这篇文章中,我将介绍一下我们最近的文章[1609.09106] HyperNetworks。我作为Google Brain Resident工作在这篇论文上-...

2027
来自专栏量化投资与机器学习

如何使用LSTM网络进行权重正则化来进行时间序列预测

作者 / Jason Brownlee 翻译 / 编辑部翻译组 来源 / http://machinelearningmastery.com 权重正则化是一种对...

2638
来自专栏PPV课数据科学社区

【源码】机器学习算法清单!附Python和R代码

本文约6000字,建议阅读8分钟。 通过本文为大家介绍了3种机器学习算法方式以及10种机器学习算法的清单,学起来吧~ 前言 谷歌董事长施密特曾说过:虽然谷歌的无...

2463
来自专栏ATYUN订阅号

使用Keras创建一个卷积神经网络模型,可对手写数字进行识别

在过去的几年里,图像识别研究已经达到了惊人的精确度。不可否认的是,深度学习在这个领域击败了传统的计算机视觉技术。 将神经网络应用于MNIST的数据集以识别手写的...

2583
来自专栏机器人网

十种深度学习算法要点及代码解析

谷歌董事长施密特曾说过:虽然谷歌的无人驾驶汽车和机器人受到了许多媒体关注,但是这家公司真正的未来在于机器学习,一种让计算机更聪明、更个性化的技术。 也许我们生活...

6596
来自专栏量化投资与机器学习

强化学习在量化投资中应用(理论简介)

什么是强化学习? 强化学习任务通常用马尔科夫决策过程(MarkovDecision Process,MDP)来描述:机器处于环境E中,状态空间为S,其中每个状...

2438
来自专栏机器之心

入门 | TensorFlow的动态图工具Eager怎么用?这是一篇极简教程

项目链接:https://github.com/madalinabuzau/tensorflow-eager-tutorials

940
来自专栏数据派THU

机器学习算法清单!附Python和R代码

来源:数据与算法之美 通过本文为大家介绍了3种机器学习算法方式以及10种机器学习算法的清单,学起来吧~ 前言 谷歌董事长施密特曾说过:虽然谷歌的无人驾驶汽车和机...

4147
来自专栏ArrayZoneYour的专栏

TensorFlow强化学习入门(3)——构建仿真环境来进行强化学习

在上一篇文章中,我演示了如何设计一个基于策略的强化学习agent来解决CartPole任务。在本文中,我们将从另一个角度重新审视这个问题——如何构建仿真环境来提...

9636

扫描关注云+社区