科普 | 生成对抗网络(GAN)的发展史
来源:https://en.wikipedia.org/wiki/Edmond_de_Belamy
五年前,Generative Adversarial Networks(GANs)在深度学习领域掀起了一场革命。这场革命产生了一些重大的技术突破。Ian Goodfellow等人在“Generative Adversarial Networks”中提出了生成对抗网络。学术界和工业界都开始接受并欢迎GAN的到来。GAN的崛起不可避免。
首先,GAN最厉害的地方是它的学习性质是无监督的。GAN也不需要标记数据,这使GAN功能强大,因为数据标记的工作非常枯燥。
其次,GAN的潜在用例使它成为交谈的中心。它可以生成高质量的图像,图片增强,从文本生成图像,将图像从一个域转换为另一个域,随年龄增长改变脸部外观等等。这个名单是远远不够的。我们将在本文中介绍一些流行的GAN架构。
第三,围绕GAN不断的研究是如此令人着迷,以至于它吸引了其他所有行业的注意力。我们将在本文后面部分讨论重大技术突破。
诞生
生成对抗网络(GAN)具有两个网络,生成器网络和鉴别器网络。这两个网络可以是神经网络,从卷积神经网络,递归神经网络到自动编码器。在这种配置中,两个网络参与竞争游戏并试图相互超越,同时帮助他们完成自己的任务。经过数千次迭代后,如果一切顺利,生成器网络可以完美生成逼真的虚假图像,并且鉴别器网络可以很好地判断的图像是真实的还是虚假的。换句话说,生成器网络将来自潜在空间的随机噪声矢量(不是来自潜在空间的所有GAN样本)变换为真实数据集的样本。GAN的训练是一个非常直观的过程。
GAN具有大量的实际用例,如图像生成,艺术品生成,音乐生成和视频生成。此外,它还可以提高图像质量,图像风格化或着色,面部生成以及其他更多有趣的任务。
图片来源:O'Reilly
上图表示了一般的GAN网络的架构。首先,从潜在空间采样D维的噪声矢量并发送到生成器网络。生成器网络将该噪声矢量转换为图像。然后将生成的图像发送到鉴别器网络以进行分类。鉴别器网络不断地从真实数据集和由发生器网络生成的图像获得图像。它的工作是区分真实和虚假的图像。所有GAN架构都遵循这样的设计。
青春期
在青春期,GAN产生了许多流行的架构,如DCGAN,StyleGAN,BigGAN,StackGAN,Pix2pix,Age-cGAN,CycleGAN等。这些结构的结果都非常令人满意。下面详细讨论这些GAN架构。
DCGAN
这是第一次在GAN中使用卷积神经网络并取得了非常好的结果。之前,CNN在计算机视觉方面取得了前所未有的成果。但在GAN中还没有开始应用CNNs。Alec Radford,Luke Metz,Soumith Chintala等人“Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks”提出了DCGAN。这是GAN研究的一个重要里程碑,因为它提出了一个重要的架构变化来解决训练不稳定,模式崩溃和内部协变量转换等问题。从那时起,基于DCGAN的架构就被应用到了许多GAN架构。
来源:https://arxiv.org/pdf/1511.06434.pdf
BigGAN
这是GAN中用于图像生成的最新进展。一个谷歌的实习生和谷歌DeepMind部门的两名研究人员发表了一篇“Large Scale GAN Training for High Fidelity Natural Image Synthesis”的论文。本文是来自Heriot-Watt大学的Andrew Brock与来自DeepMind的Jeff Donahue和Karen Simonyan合作的实习项目。
来源:https://arxiv.org/pdf/1809.11096.pdf
这些图像都是由BigGAN生成,正如你看到的,图像的质量足以以假乱真。这是GAN首次生成具有高保真度和低品种差距的图像。之前的最高初始得分为52.52,BigGAN的初始得分为166.3,比现有技术(SOTA)好100%。此外,他们将Frechet初始距离(FID)得分从18.65提高到9.6。这些都是非常令人印象深刻的结果。它最重要的改进是对生成器的正交正则化。
来源:https://arxiv.org/pdf/1809.11096.pdf
StyleGAN
StyleGAN是GAN研究领域的另一项重大突破。StyleGAN由Nvidia在题为“A Style-Based Generator Architecture for Generative Adversarial Network”的论文中介绍。
来源:https://medium.com/syncedreview/gan-2-0-nvidias-hyperrealistic-face-generator-e3439d33ebaf
StyleGAN在面部生成任务中创造了新记录。算法的核心是风格转移技术或风格混合。除了生成面部外,它还可以生成高质量的汽车,卧室等图像。这是GANs领域的另一项重大改进,也是深度学习研究人员的灵感来源。
StackGAN
StackJANs由Han Zhang,Tao Xu,Hongsheng Li还有其他人在题为StackGAN: Text to Photo-Realistic Image Synthesis with Stacked Generative Adversarial Networks的论文中提出。他们使用StackGAN来探索文本到图像的合成,得到了非常好的结果。一个StackGAN由一对网络组成,当提供文本描述时,可以生成逼真的图像。
来源:https://arxiv.org/pdf/1612.03242.pdf
正如上图所看到的,提供文本描述时,StackGAN生成了逼真的鸟类图像。最重要的是生成的图像正类似于所提供的文本。文本到图像合成有许多实际应用,例如从一段文本描述中生成图像,将文本形式的故事转换为漫画,创建文本描述的内部表现。
CycleGAN
CycleGAN有一些非常有趣的用例,例如将照片转换为绘画,将夏季拍摄的照片转换为冬季拍摄的照片,或将马的照片转换为斑马照片,或者相反。CycleGANs 由Jun-Yan Zhu,Taesung Park,Phillip Isola和Alexei A. Efros在题为“Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks”的论文中提出。CycleGAN用于不同的图像到图像翻译。
来源:https://arxiv.org/pdf/1703.10593.pdf
Pix2pix
对于图像到图像的翻译任务,pix2pix也显示出了令人印象深刻的结果。无论是将夜间图像转换为白天的图像还是给黑白图像着色,或者将草图转换为逼真的照片等等,Pix2pix在这些例子中都表现非常出色。pix2pix网络由Phillip Isola,Jun-Yan Zhu,Tinghui Zhou和Alexei A. Efros在他们的题为“Image-to-Image Translation with Conditional Adversarial Networks”的论文中提出。
来源:https://phillipi.github.io/pix2pix/
这是一个交互式的演示,能够从草图生成真实图像。
Age-cGAN(Age Conditional Generative Adversarial Networks)
面部老化有许多行业用例,包括跨年龄人脸识别,寻找失踪儿童,或者用于娱乐。Grigory Antipov,Moez Baccouche和Jean-Luc Dugelay在他们的题为“Face Aging with Conditional Generative Adversarial Networks”的论文中提出了用条件GAN进行面部老化。
1_p1VK22zXlezG-T712nEhbQ
该图显示了Age-cGAN是怎样从原来的年龄转换为目标年龄的。
这些都是非常流行的GAN架构。除了这些,还有数以千计的GAN架构。这取决于哪种架构适合您的需求。
崛起
正如着名理论物理学家理查德费曼所说:
“What I can’t create, I don’t understand”
GAN背后的思想是训练已知数据的网络。GAN开始了解数据,通过这种了解,GAN开始创建逼真的图像。
Edmond de Belamy
由GAN创作的Edmond de Belamy在佳士得拍卖会上以432,500美元的价格成交。这是GAN发展的重要一步,全世界第一次目睹了GAN及其潜力。在此之前,GAN主要局限于研究实验室,并由机器学习工程师使用。这一行为使GAN成为面向公众的一个入口。
这个人并不存在
您可能会熟悉 https://thispersondoesnotexist.com 这个网站。它是由优步的软件工程师Philip Wan创建。他根据NVIDIA发布的名为StyleGAN的代码创建了这个网站。每当你刷新时,它都会生成一个新的不存在的人脸,看起来无法判断它是否是假的。这项技术有可能创造一个完全的虚拟世界。
来源:https://thispersondoesnotexist.com/
实在是太棒了!
Deep Fakes
DeepFakes是另一个可怕的具有破坏性的技术。基于GAN,可以将人脸粘贴到视频中的目标人物上。人们找到这项技术的缺点,但对于AI研究人员来说,这是一个重大突破。这项技术有可能在电影行业节省数百万美元,在那里需要数小时的编辑来改变面对的特技演员。
这项技术很可怕,但我们也可以把他用在对社会好的一面。
来源:https://thenextweb.com/artificial-intelligence/2018/02/21/deepfakes-algorithm-nails-donald-trump-in-most-convincing-fake-yet/
未来发展
StyleGAN目前是GitHub上第六热门的python项目。到目前为止提出的GAN的数量已经达到了数千。这个GitHub仓库有一个受欢迎的GAN列表及论文:https://github.com/hindupuravinash/the-gan-zoo
现在
GAN已被用于增强游戏图形。我对GAN的这种用例感到非常兴奋。最近,NVIDIA发布了一个视频,其中展示了如何使用GAN对视频中的环境进行游戏化。
结论
在本文中,我们看到了GAN如何发展壮大并成为一种全球现象。我希望在未来几年GAN达到民主化。在本文中,我们从GAN的诞生开始,然后了解了一些流行的GAN架构,最后,我们看到了GAN的崛起。当我看到关于GAN的负面新闻时感到一些困惑。我相信,我们有责任让每个人都了解GAN带来的影响,以及我们如何在伦理道德上尽可能使用GAN。
欢迎关注磐创博客资源汇总站:
http://docs.panchuang.net/
欢迎关注PyTorch官方中文教程站:
http://pytorch.panchuang.net/
科普 | 生成对抗网络(GAN)的发展史的更多相关文章
- 用MXNet实现mnist的生成对抗网络(GAN)
用MXNet实现mnist的生成对抗网络(GAN) 生成式对抗网络(Generative Adversarial Network,简称GAN)由一个生成网络与一个判别网络组成.生成网络从潜在空间(la ...
- TensorFlow从1到2(十二)生成对抗网络GAN和图片自动生成
生成对抗网络的概念 上一篇中介绍的VAE自动编码器具备了一定程度的创造特征,能够"无中生有"的由一组随机数向量生成手写字符的图片. 这个"创造能力"我们在模型中 ...
- 人工智能中小样本问题相关的系列模型演变及学习笔记(二):生成对抗网络 GAN
[说在前面]本人博客新手一枚,象牙塔的老白,职业场的小白.以下内容仅为个人见解,欢迎批评指正,不喜勿喷![握手][握手] [再啰嗦一下]本文衔接上一个随笔:人工智能中小样本问题相关的系列模型演变及学习 ...
- 生成对抗网络GAN介绍
GAN原理 生成对抗网络GAN由生成器和判别器两部分组成: 判别器是常规的神经网络分类器,一半时间判别器接收来自训练数据中的真实图像,另一半时间收到来自生成器中的虚假图像.训练判别器使得对于真实图像, ...
- 生成对抗网络(GAN)
基本思想 GAN全称生成对抗网络,是生成模型的一种,而他的训练则是处于一种对抗博弈状态中的. 譬如:我要升职加薪,你领导力还不行,我现在领导力有了要升职加薪,你执行力还不行,我现在执行力有了要升职加薪 ...
- 深度学习-生成对抗网络GAN笔记
生成对抗网络(GAN)由2个重要的部分构成: 生成器G(Generator):通过机器生成数据(大部分情况下是图像),目的是“骗过”判别器 判别器D(Discriminator):判断这张图像是真实的 ...
- 深度学习框架PyTorch一书的学习-第七章-生成对抗网络(GAN)
参考:https://github.com/chenyuntc/pytorch-book/tree/v1.0/chapter7-GAN生成动漫头像 GAN解决了非监督学习中的著名问题:给定一批样本,训 ...
- 利用tensorflow训练简单的生成对抗网络GAN
对抗网络是14年Goodfellow Ian在论文Generative Adversarial Nets中提出来的. 原理方面,对抗网络可以简单归纳为一个生成器(generator)和一个判断器(di ...
- 原始的生成对抗网络GAN
论文地址:https://arxiv.org/pdf/1406.2661.pdf 1.简介: GAN的两个模型 判别模型:就是图中右半部分的网络,直观来看就是一个简单的神经网络结构,输入就是一副图像, ...
随机推荐
- Selenium 实现自动下载文件(FirefoxOptions,FirefoxProfile) - 根据Selenium Webdriver3实战宝典
Firefox 版本是72geckodriver 是 0.24selenium 是3.14 代码中注释有关于FirefoxOptions,FirefoxProfile的解释,请各位寻找一下,不做另外解 ...
- Go-数据类型以及变量,常量,函数,包的使用
Go-数据类型以及变量,常量,函数,包的使用 一.数据类型 1.字符串类型 string -双引号包裹的:"xxx" -反引号包裹,可以换行, 注意: 区别于python,是没有单 ...
- 基于Noisy Channel Model和Viterbi算法的词性标注问题
给定一个英文语料库,里面有很多句子,已经做好了分词,/前面的是词,后面的表示该词的词性并且每句话由句号分隔,如下图所示 对于一个句子S,句子中每个词语\(w_i\)标注了对应的词性\(z_i\).现在 ...
- echarts实现饼图及横向柱状图的绘制
项目中需要绘制饼图,因此简单学习了下echarts的基本使用.head中引入js文件: <script src="/static/frame/echarts/echarts.min.j ...
- C++冒险攻略(持续更新中。。。)
C++语言程序设计 我的C++冒险之旅 绪论 计算机系统基本概念 计算机硬件 计算机程序语言 计算机解决问题是程序控制的 程序就是操作步骤 程序要使用语言来表达 机器语言 计算机能识别的是机器语言 机 ...
- 基于springcloud搭建项目-Ribbon篇(三)
这篇文章主要是介绍一下ribbon的用法,我们都知道ribbon是负载均衡,但是却不知道他是怎么样的负载均衡,怎么用,能干嘛? ● 其实,简单的说,Spring Cloud Ribbon是基于Netf ...
- js数组方法全
js数组方法大全 一:前言 转载 作者:九夏 出处:https://www.cnblogs.com/jiuxia/ 我们在学到js中数组的时候,我们会接触到js中数组 ...
- Git使用ssh公钥
Git使用ssh公钥 一. 何谓公钥 1.很多服务器都是需要认证的,ssh认证是其中的一种.在客户端生成公钥,把生成的公钥添加到服务器,你以后连接服务器就不用每次都输入用户名和密码了. 2.很多gi ...
- openwrt 为软件包添加服务
手动修改 rc.local 加入也可以实现自启动,缺点手动修改太麻烦,停止只能用 kill . 配置成服务最方便了,可以启用或禁用,启动,停止,重启非常方便. 在openwrt 中使用服务 servi ...
- express第三方中间件研究之bodyParser中间件
转载至:http://www.cnblogs.com/lianer/p/5178693.html 接触nodejs已有一段时间了,但最近才开始落实项目,于是使用express应用生成器生成了一个应用. ...