前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >「史上最强GAN图像生成器」BigGAN的demo出了!

「史上最强GAN图像生成器」BigGAN的demo出了!

作者头像
机器之心
发布2018-12-13 16:57:25
1.9K0
发布2018-12-13 16:57:25
举报
文章被收录于专栏:机器之心机器之心

机器之心报道

参与:刘晓坤、路

BigGAN 一经提出即引起了大量关注,被称为「史上最强 GAN 图像生成器」。今日,DeepMind 放出了 BigGAN 的拿来即用 TF Hub demo,可以在 Colab 上运行图像生成和图像插值任务。

  • TF Hub demo 地址:https://tfhub.dev/s?q=biggan
  • Colab 地址:https://colab.research.google.com/github/tensorflow/hub/blob/master/examples/colab/biggan_generation_with_tf_hub.ipynb#scrollTo=Cd1dhL4Ykbm7

ICLR 2019 大会将在明年 5 月 6 日于美国举行,9 月 27 日论文提交截止后很多论文引起了大家的关注,其中就有一篇 GAN 生成图像的论文。该研究生成图像的目标和背景都高度逼真、边界自然,并且图像插值每一帧都相当真实,简直称得上「创造物种的 GAN」。该论文还引起了 Oriol Vinyals、Ian Goodfellow 的关注。上周,ICLR 2019 的论文评审结果出炉,评审们已经在论文的 openreview 页面公布了他们的评论和分数。这篇 BigGAN 论文获得了 8、7、10 的评分,三位评审人员对该论文给出了很高的评价,参见:https://openreview.net/forum?id=B1xsqj09Fm。

BigGAN 简介

该论文出自 DeepMind,提出了一种新型 GAN 模型 BigGAN,该模型因其出色性能被称为「史上最强 GAN 图像生成器」。该研究的创新点是将正交正则化的思想引入 GAN,通过对输入先验分布 z 的适时截断大大提升了 GAN 的生成性能,在 ImageNet 数据集下 Inception Score 竟然比当前最好 GAN 模型 SAGAN 提高了 100 多分(接近 2 倍)!

该研究展示了 GAN 可以从训练规模中显著获益,并且能在参数数量很大和八倍批大小于之前最佳结果的条件下,仍然能以 2 倍到 4 倍的速度进行训练。作者引入了两种简单的生成架构变化,提高了可扩展性,并修改了正则化方案以提升条件化(conditioning),这可论证地提升了性能。作为修改方法的副作用(side effect),该模型变得服从「截断技巧」,这是一种简单的采样技术,允许对样本多样性和保真度进行精细控制。此外,该研究发现大规模 GAN 带来的不稳定性,并对其进行经验的描述。从这种分析中获得的洞察表明,将一种新型的和已有的技术结合可以减少这种不稳定性,但要实现完全的训练稳定性必须以显著降低性能为代价。

由 BigGAN 生成的类条件样本。

(a)增加截断的效应。从左到右,阈值=2, 1.5, 1, 0.5, 0.04。(b)应用截断和性能差的条件生成模型的饱和度伪影。

由 BigGAN 在 512x512 分辨率下生成的其它样本。

BigGAN 生成网络结构。

现在 DeepMind 终于放出了 BigGAN 的 TF Hub demo,让我们来一探究竟。

教你怎么用 Colab Demo

这个 Colab Demo 的使用非常简单,直接用 Chrome 浏览器打开 Colab 地址,登陆你的谷歌账号,就可以开始耍了。

刚打开 Colab 时,我们可以看到代码总体上分成四大块,分别是 BigGAN Demo、Setup、Explore BigGAN samples of a particular category、Interpolate between BigGAN samples。前面两块给出了大致的使用说明,以及具体实现(从 TF Hub 加载预训练模型、定义函数、创建会话和初始化变量等),之后两块才是重点,提供了特定类别的图像样本生成,以及指定两个类别的图像插值两个任务演示。只需要点击几个按钮,我们就能轻松启动运行和修改参数,完全不需要修改代码。

这个 Colab 的环境配置如下,打开「修改」-「笔记本设置」就可以看到。该 Colab 在 Python 2 环境和 GPU 上运行,这个不用修改,也不能修改,会报错。

那么要怎么开始呢?很简单,直接打开「代码执行程序」-「全部运行」,就可以了。该 GPU 能提供 11G 左右的内存,运行过程中经常会出现内存不足的情况,如果没有报错,直接忽略就行。如果报错了,就打开「代码执行程序」-「重置所有代码执行程序」,重新开始吧。

在执行过程中,我们不一定需要同时执行生成和插值两个任务。为此,我们可以选中 Explore BigGAN samples of a particular category 这个单元格,然后打开「代码执行程序」-「运行当前单元格之前的所有单元格」,然后再分别执行之后的其中一个单元格,这样也能避免内存不足的问题。

在大部分情况下,内存不足并没有导致报错。在启动一个任务后,大概等待 10 秒左右的时间,我们就可以看到生成和插值的结果。

上图是样本生成单元格的控制界面,可以控制:生成样本数量、截断值、噪声种子、和类别的参数。我们可以看看下图的例子来说明各自的作用。

如上图所示,很容易看出,生成样本数量(10)和类别(芝士汉堡)就是字面的意思,那么截断值、噪声种子分别有什么作用呢?仅用一张图看不出来,我们修改一下参数看看区别就行了。

这时,我们只需要拖动滑块来修改参数,然后 Colab 会立刻执行新参数设置下的任务,但这也意味着我们一次只能修改一个参数。

经过多次实验,我们发现,截断值越大,生成样本的多样性越大;实际上,截断值控制的是隐变量分布(一般呈高斯型)的截断距离,也就是采样范围,因此不难理解其对多样性的作用。

从上到下:截断值为 0.02、0.26、0.58、1.0 的芝士汉堡生成结果。

而噪声种子的值对生成结果的影响主要是每次生成样本的初始条件,从而最终生成结果也会不同,可以用它来改善生成多样性。

最后是类别参数的控制,该 Colab 中提供了 1000 个类别选项,可玩性很足,但要找到自己想要的类别实在有点困难。可以这样操作,双击这个单元格,代码会显示在左侧,右侧会出现铅笔图标,点击该图标后就能查看完整列表,在这个列表下用 Ctrl+F 搜索类别的编号,再返回修改,这样就简单多了。

我们尝试生成了埃及猫(285)和大熊猫(388)的样本:

可以发现,埃及猫的眼神不太对,大熊猫有点营养不良。论文给出的结果很真实自然,但在这个 Colab 实验中我们也能发现存在很多「不自然」的生成样本。

接下来,我们来尝试图像插值任务。

如上图所示,这个任务的可控参数有:样本数量、插值数量、截断值、噪声种子、以及用于插值的图像类别 A 和 B。样本数量是指每次插值时类别 A 和类别 B 的的初始样本数量,如下图所示样本数量为 2。下图展示了一些示例,供大家参考。注意该图像插值是生成样本之间的插值,所以左右两侧的原图也会有些不自然。

图像插值结果示例,其中样本数量为 2、插值数量为 5、截断值为 0.2、噪声种子为 0、类别 A 为金毛、类别 B 为鸡。

其它参数不变,插值数量为 10 的插值结果示例。

金毛和埃及猫的图像插值结果。

知道怎么用了吧?自己去耍吧~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-11-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器之心 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档