gan

生成式对抗网络(GAN)

拜拜、爱过 提交于 2019-11-26 22:25:28
  生成对抗网络(GAN),是深度学习模型之一,2014年lan Goodfellow的开篇之作 Generative Adversarial Network , GAN概述   GAN包括两个模型,一个是 生成模型 (generative model),一个是 判别模型 (discriminative model)。生成模型要做的事情就是生成看起来真的和原始数据相似的实例,判断模型就是判断给定的实例是生成的还是真实的(真实实例来源于数据集,伪造实例来源于生成模型)。   生成器试图欺骗判别器,判别器则努力不被生成器欺骗。两个模型经过交替优化训练,互相提升 图1-1 GAN网络整体示意图   如上图所示,我们有两个网络,生成网络G(Generayor)和判别网络D(Discriminator)。生成网络接收一个(符合简单分布如高斯分布或者均匀分布的)随机噪声输入,通过这个噪声输出图片,记做G(z)。判别网络的输入是x,x代表一张图片,输出D(x)代表x为真实图片的概率。 GAN模型优化训练 目的 :将一个随机高斯噪声z通过一个生成网络G得到一个和真实数据分布\({p_{data}}(x)\)差不多的生成数据分布\({p_G}(x;\theta )\),其中的参数\(\theta \)是网络参数决定的,我们希望找到\(\theta \)使得\({p_G}(x;\theta )\)和\

生成式对抗网络(GAN)学习笔记

我的梦境 提交于 2019-11-26 22:25:03
图像识别和自然语言处理是目前应用极为广泛的AI技术,这些技术不管是速度还是准确度都已经达到了相当的高度,具体应用例如智能手机的人脸解锁、内置的语音助手。这些技术的实现和发展都离不开神经网络,可是传统的神经网络只能解决关于辨识的问题,并不能够为机器带来自主创造的能力,例如让机器写出一篇流畅的新闻报道,生成一副美丽的风景画。但随着GAN的出现,这些都成为了可能。 什么是GAN? 生成式对抗网络(GAN, Generative Adversarial Networks)是一种近年来大热的深度学习模型,该模型由两个基础神经网络即生成器神经网络(Generator Neural Network)和判别器神经网络(Discriminator Neural Network)所组成,其中一个用于生成内容,另一个则用于判别生成的内容。 GAN受博弈论中的零和博弈启发,将生成问题视作判别器和生成器这两个网络的对抗和博弈:生成器从给定噪声中(一般是指均匀分布或者正态分布)产生合成数据,判别器分辨生成器的的输出和真实数据。前者试图产生更接近真实的数据,相应地,后者试图更完美地分辨真实数据与生成数据。由此,两个网络在对抗中进步,在进步后继续对抗,由生成式网络得的数据也就越来越完美,逼近真实数据,从而可以生成想要得到的数据(图片、序列、视频等)。 发展历史 GAN最早是由Ian J.

深度学习-DCGAN论文的理解笔记

懵懂的女人 提交于 2019-11-26 12:36:19
训练方法 DCGAN 的训练方法跟GAN 是一样的,分为以下三步: (1)for k steps:训练D 让式子[logD(x) + log(1 - D(G(z)) (G keeps still)]的值达到最大 (2)保持D 不变,训练G 使式子[logD(G(z))]的值达到最大 (3)重复step(1)和step(2)直到G 与D 达到纳什均衡 Alec Radford等人于2016年初提出DCGAN以改善GAN的可训练性。他们认为传统GAN之所以不稳定,一个原因便是判别器D搭载的是初级的多层感知机模型,为了将火热的CNN纳入GAN的体系中,作者将多层感知机用CNN进行替换,并做了如下改进:  1 将池化层用stride=1stride=1的卷积层代替 2 将输给生成器G的100维噪声映射为四维张量用作CNN输入而不是向量 3 每进行一次卷积操作就进行批规一化(Batch Normalization) 4 使用ReLU层替换传统的Sigmoid函数,并对输出层使用Tanh激活 5 对判别器D使用LeakyReLU函数作为激活函数 6 移除所有全连接层   在以上改进的支撑下,论文给出了生成器G的网络结构:     经实验验证,该模型生成的图像较为稳定,虽然只能生成64*64大小的图像,但是这可以通过一些基本的图像处理方法,如金字塔来提升生成图像的分辨率

Keras:DCGAN实践试坑记

痞子三分冷 提交于 2019-11-26 04:03:02
前言吐槽: 上周微机终于考完了,可以愉快地学习GAN一GAN了。根据GAN的综述文章所说的来看,最适合入手的肯定还是DCGAN(别问我为啥不试一试原版GAN,看着就不好调……) 说实话,这几天是真的调试得我欲仙欲死, BN层有巨坑,学习率有巨坑 ,甚至网络结构也有坑……各种尝试、模式崩塌、峰回路转,直到昨天才基本吃明白。我这几天真的是进一步的明白了一个好显卡的重要性。感谢老爹的生日礼物!(二手1080Ti~) 特别鸣谢: 《卷积神经网络:原理与实践》——图书馆借到的,连着看了一个月,直接照亮了我的深度学习之路,让我有了个“广博”的基础 《Deep Learning with Python》(Manning)——里面的内容很务实,为我直接提供了可运行的Keras代码,是本次的调试基础 实验环境: Anaconda3 5.1.0 + Keras-gpu 2.2.4(Tensorflow后端) + PyCharm + CIFAR10 关于DCGAN: 论文网址在这里: https://arxiv.org/abs/1511.06434 原文所述的训练参数和结构图: No pre-processing was applied to training images besides scaling to the range of the tanh activation function [-1,

基于生成对抗网络(GAN)的人脸变形

牧云@^-^@ 提交于 2019-11-26 02:22:10
作者:Rudra Raina 翻译:张一豪 校对:吴金笛 本文约 2100字, 建议阅读 10分钟。 本文详细介绍了生成对抗网络(GAN)的知识,并用其变换人脸,并探寻如何利用StyleGAN生成不同属性(如年龄、微笑等)的人脸。 概述 直到最近,我才开始探索深度学习的全部内容,并在计算机视觉中遇到了这些有趣的想法和项目。 即使我的知识和经验有限,我也希望这可以帮助其他一些初学者对该领域产生兴趣并尝试一些令人兴奋的新事物。 我找到一个非常棒的YouTube频道,叫做Arxiv Insights(或者简称AI,这是个巧合吗?我看不是)。在这个频道,我发现其中一个视频是相当有趣的:如何使用生成对抗网络对人脸变形!本文是对我从上述视频中学到的知识的总结,我希望到结束时您对这个想法有一个很好的了解,并且可能想自己尝试一下。 上图中的人在现实生活中并不存在,他们是计算机生成的。朋友们,那就是GAN的力量。果这引起了您的注意,请继续阅读以了解更多信息。 第一部分:GAN是什么 GAN有一个非常简单的任务要做,就是从头开始生成数据,而这种数据甚至可以欺骗人类。 该模型由Ian Goodfellow及其同事于2014年发明,由两个神经网络组成(生成器和判别器),它们相互竞争,从而产生了一些真实的内容。 使用两个网络的目的可以概括为尽可能多地学习输入数据的基础结构,并利用该知识来创建相似的内容

PyTorch(二次元头像--GAN实战)

依然范特西╮ 提交于 2019-11-26 00:44:58
1.预处理函数(这里有一个问题,transforms.Normalize()函数的使用) 有博主写了 https://blog.csdn.net/xys430381_1/article/details/85724668 2.定义鉴别器 计算方式参考上一张 迁移学习的内容。最后输出向量的类型为256*6*6. 同时每次卷积过后,进行批归一化(这点与传统的方式不一样)+LeaKy ReLU 3.定义生成器(理解为鉴别器的逆过程,反卷积的过程) 4.训练(初始化参数) def train(d,g,criterion,d_optimizer,g_optimizer,epochs=1,show_every=1000,print_every=10): iter_count = 0 for epoch in range(epochs): for inputs,_ in trainloader: real_inputs = inputs fake_inputs = g(torch.randn(5,100)) real_labels = torch.ones(real_inputs.size(0)) fake_labels = torch.zeros(5) real_outputs = d(real_inputs) d_loss_real = criterion(real_outputs,real