生成对抗网络gan原理_深度学习中的生成对抗网络GAN

深入研究神奇的深度学习世界,释放机器的艺术能力。

"我们不断前进,打开新的门,做新的事情,因为我们很好奇,好奇心不断引领我们走上新的道路。"

沃尔特·迪斯尼

机器学习是我们生活中不可或缺的一部分。 从手机键盘顶部的东西到推动自动驾驶汽车领域的东西无处不在。 机器学习领域日新月异,创新和新思想不断涌现。 机器学习(即深度学习领域)的其中一项贡献就是GAN-生成对抗网络,在我看来,这是科学创造的一种纯粹的魔术形式。

GAN是一类致力于创建新事物的深度学习框架。 与用于检测各种事物的常规深度学习技术不同,GAN用于生成新事物。 将GAN视为画家; 它喜欢画画。 识别特定物品,例如说帽子是任何有识字的人都能做的事情。 我们可以使用深度学习框架在计算机上轻松模拟这一点。 但是,另一方面,GAN则是朝着创造力迈出的一步,这一水平接近于智力。

8f8ea09c35e6191a3e62d75b5508b621.png

> Credit: ThisPersonDoesNotExist

上面显示的图像不是真实人物,而是由机器从头开始生成的。 这就是GAN的全部目的。

GAN由Ian Goodfellow及其同事于2014年提出,当时Ian大约28岁。作为GAN的父亲,他被认为是赋予机器创造力的人。 有传言说,伊恩(Ian)的朋友与一台机器在一晚在酒吧产生图像的机器接触。 现在,让我们仔细看看Ian的GAN。

在我们大致了解GAN的工作原理之前,我要求您阅读一些有关深度学习的知识,所有这些常规算法,例如反向传播和CNN,都是为了更好地理解GAN。 这里是一些有用的链接。

1.反向传播[http://neuralnetworksanddeeplearning.com/chap2.html]

1. CNN [https://brohrer.github.io/how_convolutional_neural_networks_work.html]

3.自适应反卷积网络[https://ieeexplore.ieee.org/document/6126474]

GAN的两个主要支柱是生成器和鉴别器。 这是两个复杂的神经网络,它们是GAN的神奇力量。

让我们首先尝试通过一个例子来理解这些。

认为生成器和鉴别器分别是学生和助教(TA)。 他们两个都在这里进行检查。 假设他们一开始都不知道。 学生(发电机)的工作是编写答案,TA(判别器)的作用是检查答案书中的答案。 最初,学生们随机写出一些答案,并将其传递给TA。 TA会为这些答案随机分配粗略的分数,然后他继续使用答案簿检查答案。 这样,TA会意识到自己的错误并在给予正确分数的同时向他们学习。

此外,一旦学生获得分数的反馈,他就会了解自己的错误并尝试写得更好,接近正确的答案。 这种双循环的循环一直持续到产生的答案真正接近正确答案为止。 简而言之,这就是GAN的工作方式。

82bf845278910fc71b8005de72631cbe.png

> Generative Adversarial Network framework by Thalles Silva

如上所述,生成器和判别器都是神经网络。顾名思义,生成器生成新的数据实例。另一方面,鉴别器充当所生成数据实例的判断者。这两个网络都是从头开始训练的,而它们却在猜谜中相互竞争。该游戏基于数据分布的标准。我们不会深入研究他们工作的数学原理。生成器从样本随机噪声中生成伪图像(老实说,没有什么是真正的随机的,所以我们称其为伪随机),然后将其传递给判别器,以期希望这些伪图像被以下对象接受为真实图像:判别器。鉴别符也与真实性一起传递,即真实的分类数据集。判别器通过首先给图像赋予0(伪)和1(真实)之间的随机概率来尝试识别真实和伪造的照片。然后,它从错误中学习并向后传播错误以提供更好的概率。这个循环一直持续到它为所有图像提供接近正确的概率,即对于真实图片接近1,对于伪图像接近0。完成此操作后,会将虚假图像的概率反馈反向传播到生成器,然后生成器将尝试创建具有更好概率的新图像。这个双循环一直持续到生成图像的可能性接近1为止。简而言之,GAN就是这样工作的。

6026a41ad9ce835a6aa54ae07cfb5cad.png

> Credit: Generative Adversarial Nets

· 生成器根据随机噪声生成图像并将其向前发送。

· 判别器给出接收到的图像的概率。

· 判别器从真实数据集中学习并提供更准确的概率。 然后,它向后返回。

· 生成器从返回的概率中学习,并尝试创建具有更好概率的图像。

c66c4da809390936c956bdc50a5a6cd5.png

> Credits: CycleGAN

现在,让我们谈谈GAN的一些有趣和有趣的现实应用; 这将帮助您了解GAN到底有多神奇。

这是Jason Brownlee列出的GAN的一些出色应用程序的列表。 请浏览他的文章以了解所有这些应用程序。

· 生成图像数据集的示例

· 生成人脸照片

· 生成逼真的照片

· 产生卡通人物

· 图像到图像翻译

· 文字到图片翻译

· 语义图像到照片的翻译

· 人脸正面视图生成

· 产生新的人类姿势

· 照片到表情符号

· 照片编辑

· 面部老化

· 照片融合

· 超分辨率

· 照片修补

· 服装翻译

· 视频预测

· 3D对象生成

您可以在这个惊人的网站thispersondoesnotexist.com上看到GAN的实际应用。 该网站使用StyleGAN2,并在您访问该网站时向您呈现计算机生成的随机照片,该照片真实地存在于现实生活中。 只是不断刷新。 生成的图像令人震惊地逼真,这有助于显示GAN的真正功能。 该网站是由Phillip Wang创建的,旨在展示StyleGAN2和GAN的潜力。 这不是很神奇吗?

现在,我们知道GAN的功能,让我们尝试用python编写我们自己的DCGAN。

非常感谢Hadelin de Ponteves。

首先,您需要由彩色图像组成的数据集。 请访问此链接以下载CIFAR-10 python版本数据集。

https://www.cs.toronto.edu/~kriz/cifar.html

提取数据集并将其放在文件夹" data"中。 另外,在同一目录中创建一个空文件夹以保存输出图像。 在包含数据和空文件夹的目录中启动一个新的python文件。

注意:如果您不想手动下载数据集,或者在下载数据集时遇到问题,请不要担心。 以下Colab文件中的第四个代码单元将为您完成此操作。

Google Colab上的DCGAN

提示:您可以在Google Colab上编写完整的DCGAN。 在您的Goggle Colab笔记本中,转到运行时>更改运行时类型,然后在硬件加速器下选择GPU。

Google Colab Notebook链接— https://colab.research.google.com/drive/1iHnpkzUcnm_vm-A-Z_LWXS4c9lNva9Ez?usp=sharing

05e113fd405fc5a7e9ab08df3a78a99f.gif

> The output images of our model after every 100 steps.

有用的链接

1.生成对抗网络[https://arxiv.org/abs/1406.2661]

2.反向传播[http://neuralnetworksanddeeplearning.com/chap2.html]

1. CNN [https://brohrer.github.io/how_convolutional_neural_networks_work.html]

4.自适应反卷积网络[https://ieeexplore.ieee.org/document/6126474]

5.计算机视觉与GAN [https://www.superdatascience.com/courses/computer-vision-z-learn-opencv-gans-cutting-edge-ai]

(本文翻译自Nirav Agarwal的文章《Generative Adversarial Networks》,参考:https://towardsdatascience.com/gans-generative-adversarial-networks-db42fe064f58)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值