刘晓坤 路参与

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

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

ICLR 2019 大会将在明年 5 月 6 日于美国举行,9 月 27 日论文提交截止后很多论文引起了大家的关注,其中就有一篇 GAN 生成图像的论文。该研究生成图像的目标和背景都高度逼真、边界自然,并且图像插值每一帧都相当真实,简直称得上「创造物种的 GAN」。该论文还引起了 Oriol VinyalsIan 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 的插值结果示例。

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

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

工程Deepmind图像生成BigGAN
5
相关数据
DeepMind机构

DeepMind是一家英国的人工智能公司。公司创建于2010年,最初名称是DeepMind科技(DeepMind Technologies Limited),在2014年被谷歌收购。在2010年由杰米斯·哈萨比斯,谢恩·列格和穆斯塔法·苏莱曼成立创业公司。继AlphaGo之后,Google DeepMind首席执行官杰米斯·哈萨比斯表示将研究用人工智能与人类玩其他游戏,例如即时战略游戏《星际争霸II》(StarCraft II)。深度AI如果能直接使用在其他各种不同领域,除了未来能玩不同的游戏外,例如自动驾驶、投资顾问、音乐评论、甚至司法判决等等目前需要人脑才能处理的工作,基本上也可以直接使用相同的神经网上去学而习得与人类相同的思考力。

奥里奥尔·温亚尔斯人物

Oriol Vinyals是DeepMind的研究科学家,主要研究深度学习,博士毕业于加州大学伯克利分校。

Ian Goodfellow人物

Ian Goodfellow 是机器学习领域备受关注的年轻学者之一,他在本科与硕士就读于斯坦福大学,师从吴恩达,博士阶段则跟随蒙特利尔大学的著名学者Yoshua Bengio研究机器学习。Goodfellow 最引人注目的成就是在2014年6月提出了生成对抗网络(GAN)。这一技术近年来已成为机器学习界最火热的讨论话题,特别是在最近几个月里,与GAN有关的论文不断涌现。GAN已成为众多学者的研究方向。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

插值技术

数学的数值分析领域中,内插或称插值(英语:interpolation)是一种通过已知的、离散的数据点,在范围内推求新数据点的过程或方法。求解科学和工程的问题时,通常有许多数据点借由采样、实验等方法获得,这些数据可能代表了有限个数值函数,其中自变量的值。而根据这些数据,我们往往希望得到一个连续的函数(也就是曲线);或者更密集的离散方程与已知数据互相吻合,这个过程叫做拟合。

正则化技术

当模型的复杂度增大时,训练误差会逐渐减小并趋向于0;而测试误差会先减小,达到最小值后又增大。当选择的模型复杂度过大时,过拟合现象就会发生。这样,在学习时就要防止过拟合。进行最优模型的选择,即选择复杂度适当的模型,以达到使测试误差最小的学习目的。

图网技术

ImageNet 是一个计算机视觉系统识别项目, 是目前世界上图像识别最大的数据库。

推荐文章
暂无评论
暂无评论~