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

一、简介

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

二、组成部分

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

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

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

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

从博弈论的角度来看,如果是零和博弈(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 可以自动的生成一些数据集,提供低成本的训练数据。

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

3、图像风格转化

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

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

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

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

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

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

生成器模块

判别器模块

损失计算模块

绘图模块

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

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

11

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

科研小条

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值