GAN生成对抗网络基础知识

GAN

2014年提出GAN的概念,里面有很多复杂的公式推导,简单分析一下。

在GAN里面训练两个MLP,一个是生成器G,一个是判别器D。整个网络输入是一个随机噪声,通过真实值来进行监督,让生成器把这段随机噪声变成和真实值相似的分布。其中,D用来对生成器的质量进行评估。形象来说,生成器就像印假钞的团队,判别器像警官。首先训练警官,团队想要把白纸变成钞票,钞票上有花纹水印数字等等。第一次团队把白纸给警官看,警官发现显然和真钞不一样,于是团队回去印刷数字,给警官看,警官发现有数字,但是没有花纹,于是警官知道需要有花纹,判断没有花纹,团队加工花纹,再拿给警察,警察学习到没有水印,发现没有水印之后团队加工水印。直到警察发现不出团队制作的钞票和真钞有什么区别,团队也就成功将白纸变成了钞票。

在两者训练的过程中,G尽可能让D做出更多错误的判断,同时G尽可能少的做出改变,这样G做得少,D严格,生产出的值才是最真实的。这也是文中提出的minimax问题。D输出一个二分类0/1,尽可能让生成器产生的数据真实性接近二分之一。G和D都是MLP。
在这里插入图片描述
在文中最重要的公式是这个。这两个酷似交叉熵损失函数。其中两个E是两个期望,第一个是真实的x分布趋近于生成的x分布,判别器试图将他们区分开来,第二个是生成器的部分,将原始的随机样本z分布化成生成的样本pz,使用判别器判断错误的概率,也就是1-D(生成器生成的样本)这样就可以看出,判别器想要使得生成的样本和真是样本相似,而生成器尽量减少判别器出错的概率。这样就可以理解。具体算法如下
在这里插入图片描述
训练一个GAN可能很困难,它经常会遇到各种问题,其中最主要的问题有以下三点:

  • 消失梯度:这种情况经常发生,特别是当判别器太好时,这会阻碍生辰器的改进。使用最佳的判别器时,由于梯度的消失,训练可能失败,因此无法提供足够的信息给生成器改进。
  • 模式塌缩:这是指生成器开始反复产生相同的输出(或一小组输出)的现象。如果判别器陷入局部最小值,那么下一个生成器迭代就很容易找到判别器最合理的输出。判别器永远无法学会走出陷阱。
  • 收敛失败:由于许多因素(已知和未知),GANs经常无法收敛。

WGAN做了一个简单的修改,用Wasserstein距离(也称为推土机(EM)距离)代替GAN中的Jensen-Shannon散度损失函数。不要忽视这一修改的意义:这是自GAN诞生以来本课题最重要的进展之一,因为EM距离的使用有效地解决了基于散度的GAN的一些突出缺点,从而可以减轻GANs训练中常见的故障模式。

参考网址

后面也有还能多文章是根据WGAN进行修改的。

StyleGAN

看了stylegan,有点难

解决的问题

在图片合成中的很多方面的理解例如随机特征是缺失的.

生成器将输入的隐码z嵌入一个中间的隐空间。因为输入的隐空间Z必须服从训练数据的概率密度,这在一定程度上导致了不可避免的纠缠,而嵌入的中间的隐空间W不受这个限制,因此可以被解耦。

总之就是输入的latent code容易纠缠,一个特征的变化容易引起其他特征的改变,本文构建了latent space来解耦特征

解决方法

无监督地分离高级属性(人脸姿势、身份)和随机变化(例如雀斑,头发)
实现对生成图像中特定尺度的属性的控制。

引入了风格迁移的思路,将latent code通过FCN映射成为不同的向量控制不同的特征.

同时引入感知路径长度和线性可分性概念.新的生成器允许更线性,更解耦的表示不同的变化因素.
在这里插入图片描述
传统的生成器如左图,就是不断地上采样卷积.取消传统的左侧的输入方式,采用右面,使用mapping network f进行投影,将z投影到W空间内,再通过W映射到各个可适应的归一化实例输入,在每一维都有输入(AdaIN),用来添加到每个卷积后面.A是预学习的affine 变化,B是噪声输入每个通道上的扩展参数
由于z是符合均匀分布或者高斯分布的随机变量,所以变量之间的耦合性比较大。举个例子,比如特征:头发长度和男子气概,如果按照z的分布来说,那么这两个特征之间就会存在交缠紧密的联系,头发短了你的男子气概会降低或者增加,但其实现实情况来说,短发男子、长发男子都可以有很强的男子气概。所以我们需要将latent code z进行解耦,才能更好的后续操作,来改变其不同特征。

将latent code转换得到w后,然后经过仿射变换生成A,分别送入Synthesis network的每一层网络,进行控制特征,因为Synthesis network的网络层有18层,所以我们才会说通过w生成得到了18个控制向量,用于控制不同的视觉特征。
如果仅通过z来控制视觉特征,那么其能力十分有限,因为它必须遵循训练数据的概率密度。比如数据集中长头发的人很常见,那么更多的输入值便会映射到该特征上,那么z中其他变量也会向着该值靠近、无法更好地映射其他特征。

计算过程
①首先每个特征图xi(feature map)独立进行归一化(和高斯分布里面的含义一样,分别代表均值(期望)和方差(标准差)那种​ 特征图的均值和方差中带有图像的风格信息。所以在这一层中,特征图减去自己的均值除以方差,去掉自己的风格。再乘上新风格的方差加上均值,以实现转换的目的。StyleGAN的风格不是由图像的得到的,而是w生成的。) 。特征图中的每个值减去该特征图的均值然后除以方差
在这里插入图片描述
②一个可学习的仿射变换A(全连接层)将w转化为style中AdaIN的平移和缩放因子y =(ys,i,yb,i),
③然后对每个特征图分别使用style中学习到的的平移和缩放因子进行尺度和平移变换。

​ 所以通过Mapping network,该模型可以生成一个不必遵循训练数据分布地向量w,减少了特征之间的相关性,完成解耦。

此处参考:原文链接

具体实现细节

初始化时,每个通道归一化成0-1标准高斯分布,零均值和1标准方差。每个style控制一个卷积,B是单通道噪声.

每个style在网络中是局部性的,例如修改某个style的子集,最终只会影响图像的特定某几个方面

用两个随机的latent code来生成图像而不是一个。在合成网络中随机选择点从一个code切换到另一个,叫做style mixing。例如让z1和z2生成图像,w1,w2控制style,那么让w1在交叉点之前应用,w2在之后应用,防止相邻的style发生关联。

由于只是了解该方法,并没有了解实验结果

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: PyTorch是前沿的深度学习框架之一,具有易用性和高效性的特点。生成对抗网络GAN)是一种深度学习算法,用于生成具有逼真外观的图像、语音和其他媒体。GAN的学习需要对抗两个网络:生成判别。其中,生成生成伪造的数据,判别则评估数据的真实性。两个网络的训练目标是最小化损失函数,以提高生成的质量和判别的准确性。 《PyTorch生成对抗网络编程》是一本介绍GAN架构和算法的实用指南。本书覆盖了GAN的基本原理、生成判别的结构,以及训练和优化GAN的方法。本书以PyTorch为基础,从代码层面详细介绍了GAN的实现和调优。 本书的内容包括: 1. GAN的基本原理和应用 2. PyTorch框架概述和相关模块 3. 判别和生成的构建和优化 4. GAN的调试和性能优化技巧 5. 优化GAN的高级方法,如图像风格转换和视频生成 通过本书的学习,读者将深入了解生成对抗网络的核心概念和实现方法,掌握通过PyTorch实现GAN的技能。本书的读者包括Python开发者、深度学习从业人员和学生,有深度学习和Python编程经验的读者将更容易理解和实现本书的示例和应用。 ### 回答2: 生成对抗网络GAN)是一种强大的深度学习方法,它可以用于生成各种真实世界数据,如图像、音频和文本。Pytorch是一种非常流行的开源深度学习框架,它在GAN的实现方面提供了广泛的支持和便利。在这本《Pytorch生成对抗网络编程》PDF中,读者将学习如何使用Pytorch实现各种GAN模型。 该书将从介绍GAN和Pytorch的基础开始,然后给出各种GAN模型的实现方法。首先,我们将深入了解带有全连接层的简单GAN模型,然后介绍条件GAN、半监督GAN和循环GAN等高级模型。读者将学习如何生成图像、人脸、手写数字等多种数据类型。此外,该书还介绍了如何调整网络架构、损失函数和超参数以优化GAN模型的性能。 随着深度学习和GAN的发展,GAN在虚拟现实、视频游戏、艺术设计等各种领域中得到越来越广泛的应用。这本《Pytorch生成对抗网络编程》PDF不仅提供了实现GAN基础知识,也为读者提供了深入了解GAN的机会。对于想要学习GAN和Pytorch的研究人员和工程师来说,这本书是一个很好的选择。 ### 回答3: PyTorch生成对抗网络编程是一本关于PyTorch深度学习框架的书籍,着重介绍了生成对抗网络GAN)的实现,以及GAN在图像生成、语音合成、自然语言处理等领域的应用。本书共分为7章,由浅入深地介绍了GAN的基本概念、生成判别、训练技巧等内容,最后还提供了几个GAN的实战项目供读者练手。 第一章介绍了GAN的背景和基本概念,包括GAN的目的、优化目标、网络结构等;第二章介绍了如何使用PyTorch实现一个最简单的GAN,即通过一个多层感知机生成手写数字图像;第三章和第四章分别介绍了生成判别的设计原则和优化方法;第五章讲述了如何使用DCGAN生成高清逼真的图像,该方法曾经在2015年的ImageNet竞赛上获得了第二名;第六章讨论了生成对抗网络的训练技巧,包括学习率调整、正则化、噪声注入等;第七章提供了几个GAN实战项目,包括生成手写数字、风景照片、卫星图像等。 本书系统地介绍了GAN的实现和应用,能够大大加深读者对GAN的理解,对于希望学习深度学习和图像处理的人士来说,是一本非常有用的参考书。同时,本书使用简洁明了的语言和详细的代码说明,适合初学者和中级开发者阅读和使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值