深度卷积生成对抗网络

article/2025/9/24 17:19:20

理解与学习深度卷积生成对抗网络

一.GAN

引言:生成对抗网络GAN,是当今的一大热门研究方向。在2014年,被Goodfellow大神提出来,当时的G神还是蒙特利尔大学的博士生。据有关媒体统计:CVPR2018的论文里,有三分之一的论文与GAN有关。由此可见,GAN在视觉领域的未来多年内,将是一片沃土。而我们入坑GAN,首先需要理由,GAN能做什么,为什么要学GAN。

》》GAN的初衷就是生成不存在于真实世界的数据,类似于使得 AI具有创造力或者想象力。应用场景如下:

》AI作家,AI画家等需要创造力的AI体;

》将模糊图变清晰(去雨,去雾,去抖动,等);

》进行数据增强,根据已有数据生成更多新数据供以feed,可以减缓模型过拟合现象。

接下来我们对GAN进行讨论:

(1)GAN的思想是是一种二人零和博弈思想(two-player game),博弈双方的利益之和是一个常数,比如两个人掰手腕,假设总的空间是一定的,你的力气大一点,那你就得到的空间多一点,相应的我的空间就少一点,相反我力气大我就得到的多一点,但有一点是确定的就是,我两的总空间是一定的,这就是二人博弈,但是呢总利益是一定的。

引申到GAN里面就是可以看成,GAN中有两个这样的博弈者,一个人名字是生成模型(G),另一个人名字是判别模型(D)。他们各自有各自的功能。比如,我们有一些真实数据,同时也有一把乱七八糟的假数据。(G)拼命地把随手拿过来的假数据模仿成真实数据,并揉进真实数据里。(D)则拼命地想把真实数据和假数据区分开。这里,(G)就是一个生成模型,类似于卖假货的,一个劲儿地学习如何骗过 (D)。而(D)则是一个判别模型,类似于警察叔叔,一个劲儿地学习如何分辨出(G)的骗人技巧。如此这般,随着(D)的鉴别技巧越来越牛,(G)的骗人技巧也越来越纯熟了。

相同点是:

这两个模型都可以看成是一个黑匣子,接受输入然后有一个输出,类似一个函数,一个输入输出映射。

不同点是:

生成模型(G)功能:比作是一个样本生成器,输入一个噪声/样本,然后把它包装成一个逼真的样本,也就是输出。

判别模型(D):比作一个二分类器(如同0-1分类器),来判断输入的样本是真是假。(就是输出值大于0.5还是小于0.5).

(2)训练这样的两个模型的大方法就是:单独交替迭代训练.

我们可以实现定义一个迭代次数,交替迭代到一定次数后停止即可。这个时候我们再去看一看噪声Z生成的假样本会发现,原来它已经很真了。看完了这个过程是不是感觉GAN的设计真的很巧妙,个人觉得最值得称赞的地方可能在于这种假样本在训练过程中的真假变换,这也是博弈得以进行的关键之处。

在这里插入图片描述(3)生成对抗网络的运作过程:

在a图中,初始状态生成数据与真实数据相比具有很大的差距,判别器具备初步划分是否是真实数据的能力,但是由于存在噪声,效果仍有缺陷;

》》》在b图中,通过对于判别器的训练,判别器D开始逐渐向一个比较完善的的方向收敛;

》》》在c图中,我们让生成数据向真实数据移动,使得生成数据更容易被判别器判别别为真实数据;

》》》在d图中,达到理想的p(生成)=p(真实),此时D与G都无法再更进一步优化!D(x)=1/2.我们的生成模型跟源数据拟合之后就没法再继续学习了(因为常数线 y = 1/2 求导永远为 0)。

(如下图a,b,c,d所示)
在这里插入图片描述
(4)GAN的特点:

● 相比较传统的模型,他存在两个不同的网络,而不是单一的网络,并且训练方式用的是对抗训练方式.

● GAN中G的梯度更新信息来自判别器D,而不是来自数据样本.

(5)GAN的优缺点:

优点:

● GAN是一种生成式模型,相比较其他生成模型(玻尔兹曼机和GSNs)只用到了向传播,而不需要复杂的马尔科夫链;
● 相比其他所有模型, GAN可以产生更加清晰,真实的样本;
● GAN采用的是一种无监督的学习方式训练,可以被广泛用在无监督学习和半监督学习领域;
● 相比于变分自编码器, GANs没有引入任何决定性偏置( deterministic bias),变分方法引入决定性偏置,因为他们优化对数似然的下界,而不是似然度本身,这看起来导致了VAES生成的实例比GANs更模糊;
● 相比VAE, GANs没有变分下界,如果鉴别器训练良好,那么生成器可以完美的学习到训练样本的分布.换句话说,GANs是渐进一致的,但是VAE是有偏差的;
● GAN应用到一些场景上,比如图片风格迁移,超分辨率,图像补全,去噪,避免了损失函数设计的困难,不管三七二十一,只要有一个的基准,直接上判别器,剩下的就交给对抗训练了。

缺点:

● 训练GAN需要达到纳什均衡,有时候可以用梯度下降法做到,有时候做不到.我们还没有找到很好的达到纳什均衡的方法,所以训练GAN相比VAE或者PixelRNN是不稳定的,但我认为在实践中它还是比训练玻尔兹曼机稳定的多
● GAN不适合处理离散形式的数据,比如文本
● GAN存在训练不稳定、梯度消失、模式崩溃的问题(目前已解决)

二.DCGAN(深度卷积对抗网络)

引言:

DCGAN的创始论文发表于2015年,在GAN的基础上提出了DCGAN,其主要的改进是在网络结构上,在训练过程中状态稳定,并且可以有效实现高质量图片的生成以及相关的生成模型应用。DCGAN的生成器网络结构如下图:
在这里插入图片描述
(1) DCGAN的改进:

● 使用步长卷积代替上采样层,卷积在提取图像特征上具有很好的作用,并且使用卷积代替全连接层;
● 生成器G和判别器D中几乎每一层都使用batchnorm层,将特征层的输出归一化到一起,加速了训练,提升了训练的稳定性。(生成器的最后一层和判别器的第一层不加batchnorm);
● 在判别器中使用leakrelu激活函数,而不是RELU,防止梯度稀疏,生成器中仍然采用relu,但是输出层采用tanh;
● 使用adam优化器训练,并且学习率最好是0.0002。(有的实验者也试过其他学习率,但不得不说0.0002是表现最好的了)
●生成器G和判别器D中几乎每一层都使用batchnorm层,将特征层的输出归一化到一起,加速了训练,提升了训练的稳定性。(生成器的最后一层和判别器的第一层不加batchnorm)

(2) DCGAN的矢量计算:
在这里插入图片描述(smiling woman - neutral woman + neutral man = smiling man )
在这里插入图片描述(man with glasses -man +woman = woman with glasses)
存在问题:DCGAN虽然有很好的架构,但是对GAN训练稳定性来说是治标不治本,没有从根本上解决问题,而且训练的时候仍需要小心的平衡G,D的训练进程,往往是训练一个多次,训练另一个一次。

(3)网上关于DCGAN的实现:

》》》DCGAN实现动漫头像生成:

》首先需要用爬虫爬取大量的动漫图片;》我们的目标是生成动漫头像,所以需要进行人脸检测截取图像;》搭建tensorflow框架》训练,生成结果如以下图片:

Epoch0:
在这里插入图片描述Epoch20:
在这里插入图片描述
Epoch300:
在这里插入图片描述
结果:从以上图片可以看到,第300个Epoch的图片几乎可以以假乱真。

(4)我们对于人脸图片的生成:

》搭建并激活虚拟环境

》执行第一个.py文件,批量转换图片成统一格式文件,会生成一个设定好的文件夹,在该目录下生成符合要求的图片;

》开始训练,执行另一个.py文件,会生成设定好的文件夹,在该目录下找到训练好的图片。(若因某种原因导致训练终止,执行上述命令会在原有基础上继续训练)

》结果:

Epoch0:
在这里插入图片描述
Epoch25:
在这里插入图片描述
Epoch100:
在这里插入图片描述
》结果:我们使用的是6400张人脸图片数据集进行训练,train200-20000是我们通过DCGAN对人物头像的生成,可以看到第1个Epoch-train200很模糊,但是train-5000可以看到有人脸生成,而train-20000几乎可以看到清晰可辨的人脸!

》DCGAN的缺陷以及我的收获:

在实际实践中,生成数据和真实数据在空间中完美重合的概率是非常低的,大部分情况下我们可以找到一个完美的判别器加以划分。(一句话概括,在原始GAN中的问题在于:判别器越好,生成梯度消失越严重)导致在网络训练的反向传播中,梯度更新几乎为零,即网络很难在这过程中学到东西。

而对于DCGAN的训练1,10,25个epoch,生成器优化的梯度快速下降。但是修改梯度函数可以有效避免梯度消失的问题。但是呢,随着训练迭代次数的上升,梯度上升非常快,同时曲线的噪声也在变大,也就是说梯度的方差也在增加,这会导致样本质量低的情况。


http://chatgpt.dhexx.cn/article/XHcqCgG4.shtml

相关文章

【论文阅读】PU-GAN:点云上采样的对抗生成网络

【论文阅读】PU-GAN:点云上采样的对抗生成网络 在本文中,作者提出了一种点云上采样的对抗网络模型,那么什么是点云的上采样任务呢? 简单来说,点云上采样任务就是输入稀疏点云,输出稠密点云,同时…

生成对抗网络——CGAN

1.生成模型原理 1)CGAN的原理 传统的GAN或者其他的GAN都是通过一堆的训练数据,最后训练出了G网络,随机输入噪声最后产生的数据是这些训练数据类别中之一,我们提前无法预测是那哪一个? 因此,我们有的时候…

基于对抗生成网络的滚动轴承故障检测方法

人工智能技术与咨询 点击蓝字 关注我们 来源:《人工智能与机器人研究》 ,作者华丰 关键词: 不平衡工业时间序列;异常检测;生成对抗网络;滚动轴承数据 关注微信公众号:人工智能技术与咨询。了解更多咨询&…

深度学习 - 生成对抗网络

目录 1 GAN产生背景 2 GAN模型 3 CGAN 4 InfoGAN 5 Improved Techniques for Training GANs 6 DCGAN -- Deep convolutional generative adversarial networks 7 GAN应用 1 GAN产生背景 1. 机器学习方法 生成方法,所学到的模型称为生成式模型 生成方法通过观测…

对抗生成网络GAN系列——f-AnoGAN原理及缺陷检测实战

🍊作者简介:秃头小苏,致力于用最通俗的语言描述问题 🍊专栏推荐:深度学习网络原理与实战 🍊近期目标:写好专栏的每一篇文章 🍊支持小苏:点赞👍🏼、…

对抗生成网络原理和作用

我们通过一个demo(gan.py )来讲解对抗生成网络的原理和作用 1、创建真实数据 2、使用GAN训练噪声数据 3、通过1200次的训练使得生成的数据的分布跟真实数据的分布差不多 4、通过debug方式一步步的讲解 二、原理: 1、G(x&…

生成对抗网络

论文阅读笔记,论文链接 Generative Adversarial Network 生成对抗网络 GAN 理解gan的原理 网络思想 在GAN网络当中,有两个网络,一个是生成网络G,另外一个是判别网络D。生成网络G的目的是生成数据,这里的数据可以是图片…

对抗生成网络GAN系列——CycleGAN简介及图片春冬变换案例

🍊作者简介:秃头小苏,致力于用最通俗的语言描述问题 🍊往期回顾:对抗生成网络GAN系列——GAN原理及手写数字生成小案例    对抗生成网络GAN系列——DCGAN简介及人脸图像生成案例 🍊近期目标:写…

MATLAB代码:对于对抗生成网络GAN的风光场景生成算法 关键词:场景生成 GAN 对抗生成网络 风光场景

MATLAB代码:对于对抗生成网络GAN的风光场景生成算法 关键词:场景生成 GAN 对抗生成网络 风光场景 仿真平台: pythontensorflow 主要内容:代码主要做的是基于数据驱动的风光新能源场景生成模型,具体为,通过构建了一种对…

对抗生成网络GAN系列——GAN原理及手写数字生成小案例

🍊作者简介:秃头小苏,致力于用最通俗的语言描述问题 🍊往期回顾:目标检测系列——开山之作RCNN原理详解    目标检测系列——Fast R-CNN原理详解   目标检测系列——Faster R-CNN原理详解 🍊近期目标&a…

GAN——对抗生成网络

GAN的基本思想 作为现在最火的深度学习模型之一,GAN全称对抗生成网络,顾名思义是生成模型的一种,而他的训练则是处于一种对抗博弈状态中的。它使用两个神经网络,将一个神经网络与另一个神经网络进行对抗。 基本思想:&…

一文读懂对抗生成网络的3种模型

https://www.toutiao.com/i6635851641293636109/ 2018-12-17 14:53:28 基于对抗生成网络技术的在线工具edges2cats, 可以为简笔画涂色 前言 在GAN系列课程中分别讲解了对抗生成网络的三种模型,从Goodfellow最初提出的原始的对抗生成网络,到…

对抗生成网络(GAN)详解

目录 前言 目标函数 原理 训练 给定生成器,训练判别器 给定判别器,训练生成器 总结 前言 之前的生成模型侧重于将分布函数构造出来,然后使用最大似然函数去更新这个分布函数的参数,从而优化分布函数,但是这种方法…

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

一、简介 生成对抗网络(Generative Adversarial Netword,简称GAN),是一种生成式机器学习模型,该方法由伊恩古德费洛等人于2014年提出,曾被称为“机器学习这二十年来最酷的想法”,可以用来创造虚…

对抗生成网络(Generative Adversarial Net)

好久没有更新博客了,但似乎我每次更新博客的时候都这么说(泪)。最近对生活有了一些新的体会,工作上面,新的环境总算是适应了,知道了如何摆正工作和生活之间的关系,如何能在有效率工作的同时还能…

【PaddleOCR-det-finetune】一:基于PPOCRv3的det检测模型finetune训练

文章目录 基本流程详细步骤打标签,构建自己的数据集下载PPOCRv3训练模型修改超参数,训练自己数据集启动训练导出模型 测试 相关参考手册在PaddleOCR项目工程中的位置: det模型训练和微调:PaddleOCR\doc\doc_ch\PPOCRv3_det_train.…

模型微调(Finetune)

参考:https://zhuanlan.zhihu.com/p/35890660 ppt下载地址:https://github.com/jiangzhubo/What-is-Fine-tuning 一.什么是模型微调 给定预训练模型(Pre_trained model),基于模型进行微调(Fine Tune)。相…

fine-tuning

微调(fine-tuning) 在平时的训练中,我们通常很难拿到大量的数据,并且由于大量的数据,如果一旦有调整,重新训练网络是十分复杂的,而且参数不好调整,数量也不够,所以我们可…

大模型的三大法宝:Finetune, Prompt Engineering, Reward

编者按:基于基础通用模型构建领域或企业特有模型是目前趋势。本文简明介绍了最大化挖掘语言模型潜力的三大法宝——Finetune, Prompt Engineering和RLHF——的基本概念,并指出了大模型微调面临的工具层面的挑战。 以下是译文,Enjoy! 作者 | B…

RCNN网络源码解读(Ⅲ) --- finetune训练过程

目录 0.回顾 1.finetune二分类代码解释(finetune.py) 1.1 load_data(定义获取数据的方法) 1.2 CustomFineTuneDataset类 1.3 custom_batch_sampler类( custom_batch_sampler.py) 1.4 训练train_mod…