对抗生成网络(GAN)简介及生成数字实战

一、简介

生成对抗网络(Generative Adversarial Netword,简称GAN),是一种生成式机器学习模型,该方法由伊恩·古德费洛等人于2014年提出,曾被称为“机器学习这二十年来最酷的想法”,可以用来创造虚构的人物和场景,人脸置换、模拟人脸老化,图像风格变换,以及产生化学分子式等等,被广泛应用于广告、娱乐、游戏、制药等等行业。

对抗生成网络(GAN)简介及生成数字实战_第1张图片

二、组成部分

生成对抗网络(GAN)由2个重要的部分构成:

①生成器(Generator):通过机器生成数据(大部分情况下是图像),目的是“骗过”判别器。

②判别器(Discriminator):判断这张图像是真实的还

生成器从潜在空间(latent space)中随机取样作为输入,其输出结果需要尽量模仿训练集中的真实样本。判别器的输入则为真实样本或生成网络的输出,其目的是将生成网络的输出从真实样本中尽可能分辨出来。而生成网络则要尽可能地欺骗判别网络。两个网络相互对抗、不断调整参数,最终目的是使判别网络无法判断生成网络的输出结果是否真实。工作原理如图所示。

对抗生成网络(GAN)简介及生成数字实战_第2张图片

从博弈论的角度来看,如果是零和博弈(zero-sum game),两者最终会达到纳什均衡(Nash equilibrium),即存在一组策略(g, d),g和d相互成就达到均衡。如果Generator不选择策略g,那么对于Discriminator来说,总存在一种策略使得Generator输得更惨;同样地,将Generator换成Discriminator也成立。

三、公式原理

GAN公式如图所示,其中前半部分公式表示真实数据X输入到判别器D中并得到是否为真实概率值,此时优化目标是希望判别器输出真即1。

后半部分表示噪声z生成的生成数据G(z)输入到判别器D中并输出是否为真的概率值,此时对于判别器来说优化目标是输出假即0,对于生成器来说优化目标是输出真即1

四、应用

现有的GANs算法有很多,比如GAN、CGAN、DCGAN、CycleGAN、CoGAN、ProGAN、WGAN、SAGAN、BigGAN。实际应用多种多样。

1、生成图像数据集,GAN 可以自动的生成一些数据集,提供低成本的训练数据。

对抗生成网络(GAN)简介及生成数字实战_第3张图片

2、文字到图像的转换,StackGAN网络实现从鸟类和花卉等简单对象的文本描述中生成逼真的照片。

对抗生成网络(GAN)简介及生成数字实战_第4张图片

3、图像风格转化

对抗生成网络(GAN)简介及生成数字实战_第5张图片

4、语义–图像–照片的转换,在语义图像或草图作为输入的情况下使用条件GAN生成逼真图像。

对抗生成网络(GAN)简介及生成数字实战_第6张图片

5、照片到Emojis,GANs 可以通过人脸照片自动生成对应的表情(Emojis).

对抗生成网络(GAN)简介及生成数字实战_第7张图片

6、提高照片分辨率,让照片更清晰。

对抗生成网络(GAN)简介及生成数字实战_第8张图片

7、照片修复,GAN可以修复这个区域,还原成原始的状态。

对抗生成网络(GAN)简介及生成数字实战_第9张图片

五、项目实战(生成手写数字

本项目参考日月光华gan-pytorch教程并结合自己的想法制作完成,编写了一个最简易的生成对抗网络实现手写数字的自动生成模型。项目使用torch1.12.1,cuda11.3实现的。(源码获取见文末)

生成器模块

对抗生成网络(GAN)简介及生成数字实战_第10张图片

判别器模块

对抗生成网络(GAN)简介及生成数字实战_第11张图片

损失计算模块

对抗生成网络(GAN)简介及生成数字实战_第12张图片

对抗生成网络(GAN)简介及生成数字实战_第13张图片

绘图模块

对抗生成网络(GAN)简介及生成数字实战_第14张图片

最后实现的效果如下,下面是模型自动生成的图片,分别是第0、20、40、60、80个epoch生成的图片效果图。

对抗生成网络(GAN)简介及生成数字实战_第15张图片

对抗生成网络(GAN)简介及生成数字实战_第16张图片

对抗生成网络(GAN)简介及生成数字实战_第17张图片

对抗生成网络(GAN)简介及生成数字实战_第18张图片

获取源码关注公众号【OurTwenty】回复【gan生成数字】即可获取

对抗生成网络(GAN)简介及生成数字实战_第19张图片

你可能感兴趣的:(生成对抗网络,人工智能,神经网络)