今天将给大家介绍一个有趣的小工具—GAN Lab,这是一款对抗生成网络的可视化工具,对新手非常友好,有助于快速理解GAN的工作流程和原理。

作者&编辑 | 小米粥

编辑 | 言有三

GAN Lab是谷歌开发的一款开源的GAN可视化工具,使用GAN Lab不需要安装过程、不需要深度学习库PyTorch或TensorFlow等、也不需要专门硬件GPU,通过网页浏览器(推荐 Chrome)就可以打开,网址为:

https://poloclub.github.io/ganlab/

如果对源码感兴趣,可访问github自行学习:

https://github.com/poloclub/ganlab/

用户可以利用 GAN Lab交互地训练生成模型并可视化动态训练过程的中间结果,用动画来理解 GAN 训练过程中的每一个细节,画面简洁美观,笔者认为这是GAN可视化工具中整体效果最好的,其主体界面如下:

GAN Lab主体包括三个部分:MODEL OVERVIEW GRAPH、LAYERED DISTRIBUTIONS、METRICS,其中MODEL OVERVIEW GRAPH将GAN模型可视化为图片,展示了GAN的基本结构、数据流,将输入输出数据进行了可视化;LAYERED DISTRIBUTIONS可视化了真实样本、生成器生成样本、生成器梯度等内容;METRICS记录了迭代训练过程中的分布距离的度量。

1. 设置模型

首先,在界面的最上方,我们可以选择不同的数据分布。需要强调的是:可视化工作只能在不超过三维的维度上展示,维度超过三维的数据无法全面展示,故整个GAN Lab中的噪声noise、训练样本real samples、生成样本fake samples均为二维数据。部分关于GAN的实验结果可能与数据维度有关,这在GAN Lab中是无法得到体现的。

为了画面简洁,一些模型参数的调整按钮是被隐藏的,若要将其完全显示出来,请务必将MODEL OVERVIEW GRAPH旁的编辑按钮点亮为黄色。

对于噪声noise的分布,可以选择1D 高斯分布、1D均匀分布、2D高斯分布、2D均匀分布,其中1D 表示样本只在一个维度上表现为高斯/均匀分布,另一个维度保持为定值。当把鼠标放置到生成器Generator上时,GAN Lab会展示出从噪声空间转换成生成数据流形的动态过程,如下图所示:

对于训练数据的分布,可以选择GAN Lab内置的四种类型,如下图所示:

也可以自行使用绘图的功能“描绘”出想要的训练数据分布,选择第五种类型Draw one by yourself,在白板内勾画数据分布,然后点击apply即可,效果如下图所示:

GAN Lab提供的GAN是最简单的GAN,它只支持单生成器单判别器的结构,并且两者均为全连接层,对生成器Generator可设置隐层(hidden layers)的数目以及每个隐层内的神经元(neurons)的数目。若为了简单,可使用已经训练好的模型,只需在页面上方选择use pre-trained model即可。

对于损失函数,GAN Lab提供了Log loss和LeastSq loss,其中前者为原始版本的GAN中的目标函数,后者为最小二乘GAN中的目标函数。

对于生成器和判别器的迭代次数,可以分别设置在每一轮迭代中,生成器/判别器需要训练的次数,手动调整updates per epoch即可。

对于优化算法,GAN Lab对生成器和判别器均提供了SGD和Adam两种算法,只需在Optimizer中选择即可,每种算法均可设置不同的学习速率,在Learning rate中选择即可。

2. 模型训练

把模型的结构、参数等信息设置完成后,即可在界面上方的控制台控制模型的训练过程。

第一个按钮Reset the model表示将模型完全重置,可重新设置参数。

第二个按钮Run/Pause training表示开始/暂停训练过程,训练过程可视化内容在不同的更新,同时数据流也会被展示出来。

第三个按钮Slow-motion mode表示进入慢动作模式,将其点亮为黄色后,GAN的运行流程可分步骤展示出来,在MODEL OVERVIEW GRAPH页面,只有当前步骤涉及到的节点和数据流会被明确展示出来,其他部分虚化显示,有助于理解GAN正向计算和反向传播运算流程,如下图所示分别为判别器和生成器的慢动作模式:

第四个按钮Train for one epoch可用于控制训练的节奏,即只训练一次,将其点亮为黄色后,可选择只训练一次Generator,或只训练一次Discriminator,或两者都分别训练一次Both,每点击一次都会进行一个epoch训练。

最后的epoch记录了目前为止模型的迭代训练次数。

在METRICS部分,记录了生成器和判别器的损失,同时还记录了两个分布的KL散度和JS散度(这里是通过网格化来计算),如下图所示。需要注意,METRICS部分的函数图像每经过2000次epoch才更新一次。

3. 可视化数据

在MODEL OVERVIEW GRAPH模块中,每个节点均被可视化。噪声Noise节点的样本(使用绿色表示)分布、训练数据集Real Samples节点的样本(使用紫色表示)分布、生成数据Fake Samples节点的样本(使用紫色表示)分布均被在二维平面清晰展示出来,如下图所示:

在生成器Generator节点,生成数据的流形会被可视化展示出来,紫色部分表示数据流形的范围,紫色程度的深浅表示了数据分布的概率高低,深紫色表示高概率,浅紫色表示低概率,如下图所示:

在判别器Discriminator节点,判别器的整体预测结果被用热图(hot map)的形式可视化地展示了出来,其中绿色部分表示判别器认为其为真实样本,绿色越深表示判别器输出越接近1;紫色部分表示判别器认为其为虚假样本,紫色越深表示判别器输出越接近0;白色部分表示判别器输出接近于0.5,也可理解为分类器的分类面,如下图所示:

在判别器的预测结果Prediction of Samples节点,每一个真实样本Real Samples和虚假样本Fake Samples经过判别器的输出结果被展示出来,其颜色意义与上相同。

在生成器的梯度Gradients节点,可视化结果将虚假样本即生成样本、梯度共同展示出来,用直线段指示出每个虚假样本计算得到的梯度方向,用线段的长度表示梯度的大小,如下图所示:

LAYERED DISTRIBUTIONS将真实样本、虚假样本、虚假样本的流形、判别器的结果图、虚假样本的梯度等5个节点共同展示在同一幅图中,如下图所示:

可以在LAYERED DISTRIBUTIONS模块调整显示的内容来进行有选择性地展示,只需在下方的介绍中单击real samples, fake samples, discriminator, generator, gradients等字样即可,字样下为实线表示节点的可视化内容会在LAYERED DISTRIBUTIONS中展示,为虚线则不展示,如下图所示:

4. 两个演示

我们举一个例子来看看如何通过GAN Lab来理解GAN的工作流程。首先,训练生成器会使虚假样本(紫色)向真实样本(绿色)靠拢,虚假样本的梯度也表明训练使得两个分布靠近,如下图所示:

接着,训练判别器,判别器不会对样本的分布产生影响,但是会对输出热图产生影响,如下图所示:

不断迭代更新,最后真实样本和虚假样本几乎重合,并且判别器在这些样本点的输出为0.5(白色),如下图所示:

另外,我们可对数据样本分析,理解模式崩溃问题,如下图所示,所有生成的虚假样本都聚到到一个点,生成器完全没有拟合真实样本的分布,这是可以通过GAN Lab体现出来的。

GAN Lab是目前已知的一款非常优秀的GAN可视化软件,简单生动,适合于入门,但对于难度较高的问题,由于各种限制,它还无法做到完全的可视化。

[1]Minsuk K , Nikhil T , Polo C D H , et al. GAN Lab: Understanding Complex Deep Generative Models using Interactive Visual Experimentation[J]. IEEE Transactions on Visualization and Computer Graphics, 2018:1-1.

总结

这一部分给大家介绍了一个有趣的小工具—GAN Lab,这是一款对抗生成网络的可视化工具,对新手非常友好,有助于快速理解GAN的工作流程和原理。

GAN群

有三AI建立了一个GAN群,便于有志者相互交流。感兴趣的同学也可以微信搜索xiaozhouguo94,备注"加入有三-GAN群"。

另外,可关注作者本人知乎。

如何系统性学习GAN

有三AI公众号输出了大量的GAN相关的内容,关于如何系统性学习GAN,请大家参考往期文章。

【杂谈】如何系统性地学习生成对抗网络GAN

在有三AI知识星球网络结构1000变中包含大量GAN的各类应用和实战相关的内容,一些案例如下,感兴趣可以深入学习了解。

转载文章请后台联系

侵权必究

往期精选

  • 【杂谈】有三AI知识星球最近都GAN了哪些内容?

  • 【杂谈】GAN对人脸图像算法产生了哪些影响?

  • 【杂谈】那些底层的图像处理问题中,GAN能有什么作为?

  • 【完结】12篇GAN的优化文章大盘点,浓浓的数学味儿

  • 【GAN优化】长文综述解读如何定量评价生成对抗网络(GAN)

  • 【杂谈】除了生成图像(造假),GAN如何给目标检测,图像分割,图像增强等问题打辅助?

【GAN】如何生动有趣地对GAN进行可视化?Google的GAN Lab推荐你了解一下相关推荐

  1. 基于PyTorch的GAN框架TorchGAN:用架构级API轻松定制GAN项目

    机器之心报道 参与:刘晓坤 TorchGAN 是基于 PyTorch 的 GAN 设计开发框架.该框架旨在为流行的 GAN 提供构造模块,且允许为前沿研究进行定制化. 使用 TorchGAN 的模块化 ...

  2. python office插件_Office 数据可视化8大实用插件推荐

    原标题:Office 数据可视化8大实用插件推荐 1.EasyCharts: http://easychart.github.io/post/Easycharts/ 作者:张杰 EasyCharts是 ...

  3. 「GAN」如何生动有趣地对GAN进行可视化?Google的GAN Lab请了解

    今天将给大家介绍一个有趣的小工具-GAN Lab,这是一款对抗生成网络的可视化工具,对新手非常友好,有助于快速理解GAN的工作流程和原理. 作者&编辑 | 小米粥 编辑 | 言有三 GAN L ...

  4. GAN背后的理论依据,以及为什么只使用GAN网络容易产生

    花了一下午研究的文章,解答了我关于GAN网络的很多疑问,内容的理论水平很高,只能尽量理解,但真的是一篇非常好的文章转自http://www.dataguru.cn/article-10570-1.ht ...

  5. 【百战GAN】自动增强图像对比度和颜色美感,GAN如何做?

    大家好,欢迎来到专栏<百战GAN>,在这个专栏里,我们会进行算法的核心思想讲解,代码的详解,模型的训练和测试等内容. 作者&编辑 | 言有三 本文资源与生成结果展示 本文篇幅:65 ...

  6. 【GAN优化】如何选好正则项让你的GAN收敛

    今天讲述的内容还是GAN的训练,也是最后一期,做几个简单的小实验,告诉大家怎么给GAN加正则项,使得你的GAN尽可能收敛.其实今天的内容本来还是与动力学结合很紧密,但是考虑到复杂的数学内容可能有害无益 ...

  7. 【GAN模型结构】从最简单的全卷积GAN一起开始玩转GAN

    大家好,今天开设新专栏<GAN模型结构>.在这个专栏中,我们会讲述各种各样的GAN的网络结构及其在各类任务中的应用. 作者&编辑 | 言有三 三年前GAN刚出来的时候就开始关注GA ...

  8. GAN系列:代码阅读——Generative Adversarial Networks 李宏毅老师GAN课程P1+P4

    看了一上午简直要头疼死.GAN之前没接触过,学习的时候产生了很多乱七八糟的联想.从上篇文章开始,很多内容都是自己的理解,估计有很多错误,以后学习中发现了可能会回来修改的. 找的是机器之心i的代码:ht ...

  9. 李弘毅老师GAN笔记(一),对抗生成网络(GAN)简单介绍

    更新: 原文已经搬运至网站:https://www.link2sea.com/archives/388,后续也将在该网站进行更新. 查看博主更多文章请前往:https://www.link2sea.c ...

最新文章

  1. 程序员薪资两极分化,如何成为高薪程序员?
  2. html提交表单原理,HTML表单、HTTP Get与Post杂谈
  3. 《Scala机器学习》一一第3章 使用Spark和MLlib
  4. AC日记——[HNOI2008]玩具装箱toy bzoj 1010
  5. 计算两个数的乘积java编写_Java模拟计算机的整数乘积计算功能示例
  6. k8s配置以使得pod可以运行于master上
  7. python爬图mzitu_小白学 Python 爬虫(16):urllib 实战之爬取妹子图
  8. 微信支付商家转账到零钱功能使用教程
  9. 日志审计与分析实验4-1(掌握Linux下安装、删除软件的方法)
  10. 仿钉钉考勤统计圆形控件
  11. oracle季度日均怎么算,求日均值,该如何处理
  12. 水晶报表中几种交叉表的实现方法 (作者阿泰)
  13. 计算机限制打开外接硬盘,在win7中,为什么打开磁盘出现限制提示?
  14. 电脑配件 - 如何选择电脑显示屏幕 - 学习/实践
  15. vue 页面导出excel表格,提示excel文件损坏
  16. 物联卡如何提高安全等级
  17. 电机驱动芯片--DRV8824 DRV8825
  18. 十分钟接入iOS 12新特性——Siri Shortcuts
  19. 机器视觉库之detectron2安装及使用详解
  20. 发现新鲜的画法,文艺极简水彩线描简笔画植物:草叶集(一)

热门文章

  1. 21 款 IDEA 插件,yyds!
  2. 使用CMS垃圾收集器产生的问题和解决方案
  3. 信息系统项目管理知识--组织级项目管理
  4. Java 线程池(ThreadPoolExecutor)原理分析与使用
  5. String类为什么是final
  6. 数据结构与算法—图论之dfs、bfs(深度优先搜索、宽度优先搜索)
  7. Android Wifi开发之WifiConfiguration
  8. Python学习--工具介绍
  9. 开启php,php开启openssl的方法
  10. 计算机用户删除 cmd,用命令行删XP中的用户。除administrator外