一篇介绍GAN应用的文章。今后GAN模型学习的主要内容。

中文链接:萌物生成器:如何使用四种GAN制造猫图

原文链接:https://ajolicoeur.wordpress.com/cats/


项目 GitHub:https://github.com/AlexiaJM/Deep-learning-with-cats

我尝试使用几种对抗生成网络(GAN)来生成猫脸,其中包括 DCGANWGANWGAN-GP,以及低和高分辨率。训练模型则使用 CAT 数据集(是的,真的有这么个东西)。这一数据集包含 10000 余张猫的图片。

在训练之前,我们必须让图片集中于正面猫脸,剔除数据集中其他方向的图片(作者是手动挑选的,这花了好几个小时...)。

最后,用于训练的图片为 9304 张大于 64×64 像素的图片,以及 6445 张大于 128×128 的图片。

  • CAT 数据集链接:https://web.archive.org/web/20150703060412/http://137.189.35.203/WebUI/CatDatabase/catData.html

DCGAN

DCGAN 生成器在两到三个小时后就可以收敛出非常逼真的图像,只用了 209 个 epoch,但为了让收敛效果更佳,我们需要做适当的调整。你必须为鉴别器与生成器选择单独的学习速率,以避免它们有一方表现过于出色——这需要非常小心的平衡,不过一旦成功,你就会得到收敛。在 64×64 像素的图片中,鉴别器的最佳学习率是 0.00005,生成器的则是 0.0002。这样就不会出现模型崩溃,得到真正可爱的图片了!

高分辨率 DCGAN 和 SELU

初步尝试 DCGAN 生成 128×128 像素猫图的所有努力都失败了。但是,把批量规范化(batch normalization)的方法和 ReLU 用 SELU 代替问题就轻松地解决了,这让我可以缓慢(需要六个小时以上)但稳定地收敛和此前相同的学习速率。

SELU 是自标准化的,因此不需要进行批量规范化。SELU 论文是在 2017 年 6 月 8 日出现的,目前还没有太多使用它的 GAN 研究,这种方法看起来可以大幅度提高 GAN 的稳定性。

【SELU就好似及时雨】

在结果中我们可以看到,猫不像之前那么好看了,还会出现大量类似面孔的黑猫。这主要是因为样本大小为 N = 6445 而非原来的 N = 9304(这次实验只对大于 128×128 的图片进行了训练)。不过,其中的一些结果看起来质量很高,而且因为分辨率的提升,该结果仍可以被视为有意义。

  • SELU 论文《Self-Normalizing Neural Networks》链接:https://arxiv.org/abs/1706.02515

WGAN

WGAN 生成器收敛的速度非常慢(需要花费四五个小时,600 以上个 epoch),且只会在使用 64 个隐藏节点的情况下收敛。我无法让生成器在 128 个隐藏节点时收敛。

  • 使用 DCGAN 意味着必须进行大量学习速率的调整,但你可以快速看到是否收敛的结果(鉴别器损失为 0,或生成器损失为 0);
  • 但在 WGAN 里,你需要运行完大量 epoch 之后才能得到结果。

看起来,WGAN 的结果有些崩坏,很多猫的两只眼睛都呈现异色,只睁一只眼睛,有些还长着奇怪的鼻子。总体而言,这样的结果并不如 DCGAN,但考虑到 WGAN 的网络复杂性更低,这样的比较或许不太公平。另外,这些结果看起来也陷入了局部最佳的状态,总体而言,WGAN 令人失望。

WGAN-GP

WGAN-GP(一种改进版本的 WGAN,用正则化代替了权重裁剪)或许可以解决这些问题。在 Gulrajani 等人(2017)的一篇论文中,他们成功训练了 101 层的神经网络来生成图片!所以,我怀疑训练一个有 5 层和 128 个隐藏节点的猫生成器还差得很远。

Adam 优化器的一些特性也可以降低模型崩溃并陷入错误局部最佳陷阱的可能性。这些方法可能会帮助 WGAN,因为 DCGAN 和 WGAN-GP 都使用了 Adam。

WGAN-GP 生成器收敛的速度非常慢(超过 6 个小时),但它几乎已经帮你完成了所有设置。它是开箱即用的,无需任何调试。你也可以增加或减少学习速率,这不会造成太多问题。所以在这个任务中,WGAN-GP 赢得了我的青睐。

如下图所示,WGAN-GP 生成的猫图具有多样性,也没有明显的模型崩溃,这是与 WGAN 相比最大的提升。但另一方面,这些猫看起来十分粗糙,就像是用高分辨率的屏幕在看低分辨率的图片,我也不知道这是为什么。或许这是 Wasserstein 损失函数的特点?我认为使用不同的学习率和体系结构将可以提升一下性能。不过,这还需要进一步的尝试,肯定还有很大的潜力。

  • WGAN-GP 论文《Improved Training of Wasserstein GANs》链接:https://arxiv.org/abs/1704.00028

LSGAN(Least Squares GAN)

LSGAN 是一种略为不同的方法,在这里我们得试图最小化鉴别器输出和分配标签的平方距离;研究者建议:对于真实图像为 1,对于鉴别器更新时的假图像使用 0。

Hejlm 等人(2017)的研究则认为:对于真实图像为 1,对于鉴别器更新时的假图像使用 0,而生成器更新时的假图像用 0.5 以寻找边界。

作者还没有时间运行整个流程,但它看起来非常稳定,而且可以输出漂亮的猫图。尽管它总体稳定,有一次损失函数和梯度还是爆炸了,猫变成了无意义的图片。如下图所示。

所以,LSGAN 不是完全稳定的。通过 Adam 选择更好的超参数可以帮助解决这个问题。在失败时(很少见),它可以让你无须像 DCGAN 那样调整学习速率,这个方法可以让你生成漂亮的猫图。

  • LSGAN 论文《Least Squares Generative Adversarial Networks》链接:https://arxiv.org/abs/1611.04076

Update:LSGAN 论文的第一作者毛旭东(香港城市大学)给我发来使用 LSGAN 生成的 128×128 分辨率猫图(如下图),结果证明了这种方法至少可以生成和 DCGAN 一样质量的结果。

[GAN] How to use GAN - Meow Generator的更多相关文章

  1. 【GAN与NLP】GAN的原理 —— 与VAE对比及JS散度出发

    0. introduction GAN模型最早由Ian Goodfellow et al于2014年提出,之后主要用于signal processing和natural document proces ...

  2. 你的GAN训练得如何--GAN 的召回率(多样性)和精确率(图像质量)方法评估

    生成对抗网络(GAN)是当今最流行的图像生成方法之一,但评估和比较 GAN 产生的图像却极具挑战性.之前许多针对 GAN 合成图像的研究都只用了主观视觉评估,一些定量标准直到最近才开始出现.本文认为现 ...

  3. 生成式对抗网络(GAN)学习笔记

    图像识别和自然语言处理是目前应用极为广泛的AI技术,这些技术不管是速度还是准确度都已经达到了相当的高度,具体应用例如智能手机的人脸解锁.内置的语音助手.这些技术的实现和发展都离不开神经网络,可是传统的 ...

  4. Improved GAN

    https://www.bilibili.com/video/av9770302/?p=16 从之前讲的basic gan延伸到unified framework,到WGAN 再到通过WGAN进行Ge ...

  5. GAN (Generative Adversarial Network)

    https://www.bilibili.com/video/av9770302/?p=15 前面说了auto-encoder,VAE可以用于生成 VAE的问题, AE的训练是让输入输出尽可能的接近, ...

  6. GAN笔记——理论与实现

    GAN这一概念是由Ian Goodfellow于2014年提出,并迅速成为了非常火热的研究话题,GAN的变种更是有上千种,深度学习先驱之一的Yann LeCun就曾说,"GAN及其变种是数十 ...

  7. [Deep-Learning-with-Python]GAN图片生成

    GAN 由Goodfellow等人于2014年引入的生成对抗网络(GAN)是用于学习图像潜在空间的VAE的替代方案.它们通过强制生成的图像在统计上几乎与真实图像几乎无法区分,从而能够生成相当逼真的合成 ...

  8. EB-GAN系(Energy-based GAN)

    学习总结于国立台湾大学 :李宏毅老师 EB-GAN: Energy-based Generative Adversarial Network MA-GAN:MAGAN: Margin Adaptati ...

  9. (转) GAN应用情况调研

    本文转自: https://mp.weixin.qq.com/s?__biz=MzA5MDMwMTIyNQ==&mid=2649290778&idx=1&sn=9816b862 ...

随机推荐

  1. print2flash文档在线预览应用(java,.net)

    一.背景 前段时间,LZ的boss突然给了出了这样一个需求:将原项目中的所有文章关联的附件TXT.PDF.office相关文件全部以flash的形式在网页上进行展示,便于预览.看似简单的需求,整个研发 ...

  2. shell自动补全功能:bash和zsh

    首要一点:shell有多种,比如bash.zsh.csh.ksh.sh.tcsh等 因此,制作自动补全功能时,要先搞清楚,你使用的是哪种shell,各个shell制作方法是不同的,网上大部分介绍的是关 ...

  3. CSS 布局整理

    1.css垂直水平居中 效果: HTML代码: <div id="container"> <div id="center-div">&l ...

  4. 外网IP监测上报程序(使用Poco库的SMTPClientSession发送邮件)

    目录 IPReport 项目介绍 编译说明 安装使用说明 获取外网IP方式 邮件发送关键代码 IPReport 代码地址https://gitee.com/solym/IPReport 项目介绍 外网 ...

  5. 【LeetCode】240. Search a 2D Matrix II

    Search a 2D Matrix II Write an efficient algorithm that searches for a value in an m x n matrix. Thi ...

  6. no accounts with itunes connect access

    有时候打包上传的时候 会遇见  no accounts with itunes connect access 的报错 原因主要如下: 1. 你没有被开发者管理员加入 itunes connect 权限 ...

  7. 记一次数据库参数compatible降级[转]

    转:http://dbzone.iteye.com/blog/1042455 众所周知,Oracle参数compatible 主要用于启用Oracle针对某一版本的新特性.但此参数设置时,只能往上调, ...

  8. apache的性能调配 MaxClients 与MaxRequestsPerChild

    因近期服务不稳定,现象和这个比较类似http://hi.baidu.com/xinfeng999/blog/item/1aea470e214ab1cd7acbe1ed.html根据现象来对APACHE ...

  9. alter日志报WARNING: too many parse errors

    数据库版本:12.2.0 操作系统版本:RHEL7.2 最近观察到一个数据库alert日志老是报硬解析太多错误,且对应的sql语句都是查看数据字典表: 2017-06-16T08:46:46.4174 ...

  10. 4.翻译系列:EF 6 Code-First默认约定(EF 6 Code-First系列)

    原文地址:http://www.entityframeworktutorial.net/code-first/code-first-conventions.aspx EF 6 Code-First系列 ...