1、什么是GAN

背景知识:

  • 快速掌握 机器学习(Machine Learning) 常用概念术语,常用算法
    https://gwj1314.blog.csdn.net/article/details/120873124
    快速掌握 深度学习(Deep Learning) 常用概念术语,常用模型
    https://gwj1314.blog.csdn.net/article/details/120932539

从人工到自动的机器学习

  • 从人工提取特征 到 自动提取特征
    相对于传统的机器学习,深度学习厉害的地方就是能够自己学习特征提取。
    机器学习:数据预处理 -> 特征提取 -> 选择分类器
    深度学习:数据预处理 -> 设计模型 -> 训练
  • 从人工判断生成结果的好坏自动判断和优化
    训练集需要大量的人工标注数据,这个过程是成本很高且效率很低的。而人工判断生成结果的好坏也是如此。
    GAN 能自动完成这个过程,且不断的优化,这是一种效率非常高,且成本很低的方式。

GAN的原理:

  • 生成对抗网络(GAN)由2个重要的部分构成
    1、生成器(Generator):通过机器生成数据(大部分情况下是图像),目的是“骗过”判别器
    2、判别器(Discriminator):判断这张图像是真实的还是机器生成的,目的是找出生成器做的“假数据”
  • 对抗过程
    1:固定「判别器」,训练「生成器」
    使用一个还 OK 判别器,让一个生成器不断生成“假数据”,然后给这个判别器去判断。
    一开始,「生成器」还很弱,所以很容易被揪出来。
    但是随着不断的训练,「生成器」技能不断提升,最终骗过了「判别器」。
    2:固定「生成器」,训练「判别器」
    当通过了第一阶段,继续训练「生成器」就没有意义了。这个时候我们固定「生成器」,然后开始训练「判别器」。
    「判别器」通过不断训练,提高了自己的鉴别能力,最终他可以准确的判断出所有的假图片。
    到了这个时候,「生成器」已经无法骗过「判别器」。
    3、循环阶段一和阶段二
    通过不断的循环,「生成器」和「判别器」的能力都越来越强。
    最终我们得到了一个效果非常好的「生成器」,我们就可以用它来生成我们想要的图片了。
  • 简单形象的例子
    警察严打小偷导致小偷水平提升。
    警察为了破案提高自己水平。
    小偷为了生存提高自己水平。
    警察和小偷的水平都越来越高。

GAN的应用:

  • 生成图像数据集
    人工智能的训练是需要大量的数据集的,如果全部靠人工收集和标注,成本是很高的。GAN 可以自动的生成一些数据集,提供低成本的训练数据。
  • 生成人脸照片、动物照片、漫画人物
    生成人脸照片,漫画人物等
  • 图像到图像的转换
    把一种形式的图像转换成另外一种形式的图像,就像加滤镜一样。
    把草稿转换成照片、把照片转换成油画、三次元转化为二次元
  • 文字到图像的转换
    StackGAN,从鸟类和花卉等简单对象的文本描述中生成逼真的照片
  • 照片到Emojis
    GANs 可以通过人脸照片自动生成对应的表情(Emojis)
  • 人脸照片编辑
    使用GAN可以生成特定的照片,例如更换头发颜色、更改面部表情、甚至是改变性别。
  • 预测不同年龄的长相
    给一张人脸照片, GAN 就可以帮你预测不同年龄阶段你会长成什么样。
  • 提高照片分辨率,让照片更清晰
    生成一张分辨率更高的照片,使得这个照片更加清晰
  • 照片修复
    假如照片中有一个区域出现了问题(例如被涂上颜色或者被抹去),GAN可以修复这个区域,还原成原始的状态。
  • 自动生成3D模型
    给出多个不同角度的2D图像,就可以生成一个3D模型。

2、GAN的发展历程

GAN的缺陷

  • 多样性不足的问题
    模式缺失(Mode Collapse)问题。GANs的学习过程可能出现模式缺失,生成器开始退化,总是生成同样的样本点,无法继续学习。
    以使用GANs训练人脸图像为例,当生成分辨率较小的图像时,GANs生成的图像的多样性尚且能得到保证。但是当生成较高分辨率的图像,就会出现GANs生成的人脸图像都非常相似的情况,也就是多样性不足的问题。
  • 高分辨率图像生成质量差的问题
    难训练,不稳定。生成器和判别器之间需要很好的同步,但是在实际训练中很容易D收敛,G发散。D/G 的训练需要精心的设计。
    所以使用GANs生成算法去生成高分辨率图像时,通常存在两大问题。其一,生成的图像失真的问题。其二,生成的高分辨率图像高频细节模糊的问题。
    于是围绕着缺陷有很多的优化和变种

GAN的种类

  • GAN 算法有数百种之多,大家对于 GAN 的研究呈指数级的上涨,目前每个月都有数百篇论坛是关于对抗网络的。
    GANs动物园 收录了几乎所有的GAN算法实现,论文地址。
    开源地址:https://github.com/hindupuravinash/the-gan-zoo

  • 9个比较有代表性的GAN算法

    算法 论文 代码
    GAN 论文地址 代码地址
    DCGAN 论文地址 代码地址
    CGAN 论文地址 代码地址
    CycleGAN 论文地址 代码地址
    CoGAN 论文地址 代码地址
    ProGAN 论文地址 代码地址
    WGAN 论文地址 代码地址
    SAGAN 论文地址 代码地址
    BigGAN 论文地址 代码地址

附:高分辨率生成的一种解决方案
参考资料:https://www.jiqizhixin.com/articles/2017-11-16-20

  • 基于上下文约束渐进式生成对抗网络
    PG-GAN:
    采用 progressive growing 的训练方式,先训一个小分辨率的图像生成,训好了之后再逐步过渡到更高分辨率的图像。然后稳定训练当前分辨率,再逐步过渡到下一个更高的分辨率。
    充分利用上个分辨率训练的结果,通过缓慢的过渡(w 逐渐增大),使得训练生成下一分辨率的网络更加稳定。
    LAP-GAN:
    借助 CGAN,高分辨率图像的生成是以低分辨率图像作为条件去生成残差,然后低分辨率图上采样跟残差求和得到高分辨率图,通过不断堆叠 CGAN 得到我们想要的分辨率。
    PC-GAN
    首先通过GAN生成局部的小尺寸图像,通过内容扩展网络(Content Extension Network, CEN)在小尺寸图像的基础上生成更大尺寸的图像。接着通过多个CEN逐步的放大图像的尺寸,最终生成大尺寸的图像。
    通过多个CEN,将最初的图像中心的小尺寸部分向四周扩展,在分辨率不变的情况下逐渐生成越来越大尺寸的图像。
  • 多层次感知特征约束
    多层感知机是指具有至少三层节点,输入层,一些中间层和输出层的神经网络。
    感知机(Perceptron)一般只有一个输入层与一个输出层,导致了学习能力有限而只能解决线性可分问题。多层感知机(Multilayer Perceptron)是一类前馈(人工)神经网络及感知机的延伸,它至少由三层功能神经元(functional neuron)组成(输入层,隐层,输出层),每层神经元与下一层神经元全互连,神经元之间不存在同层连接或跨层连接,其中隐层或隐含层(hidden layer)介于输入层与输出层之间的,主要通过非线性的函数复合对信号进行逐步加工,特征提取以及表示学习。
    多层感知机的强大学习能力在于,虽然训练数据没有指明每层的功能,但网络的层数、每层的神经元的个数、神经元的激活函数均为可调且由模型选择预先决定,学习算法只需通过模型训练决定网络参数(连接权重与阈值),即可最好地实现对于目标函数的近似,故也被称为函数的泛逼近器(universal function approximator)。
    首先在图像数据集上训练一个对称的自编码器网络,通过自编码器提取每一张图像对应的多个不同层次的语义特征表达,从而获得图像数据集对应的多个不同层次的语义特征数据集。
    其次,利用多个不同层次的语义特征数据集训练得到多个不同层次的语义特征判别器,用于判断输入值是否符合相应语义特征数据集的分布。
    最后,在图像生成的过程中,利用上一步中得到的语义特征判别器对生成器的多个中间层加以约束。通过引入多个权重参数用于平衡多个特征判别器之间的约束权重,最终在多个语义判别器共同约束下,使得图像生成过程中的网络中间层都处于可控的范围,使得生成图像的过程更加稳定更加可靠。
  • 增加生成多样性
    两种可行的方法:通过 loss 让网络自己调整、通过设计判别多样性的特征人为引导
    WGAN 属于前者,它采用更好的分布距离的估计。模型收敛意味着生成的分布和真实分布一致,能够有多样性的保证。PG-GAN 则属于后者。
    PG-GAN 不引入新的参数,利用特征的标准差作为衡量标准。

生成对抗网络 GAN 基本原理与发展历程相关推荐

  1. [人工智能-深度学习-59]:生成对抗网络GAN - 基本原理(图解、详解、通俗易懂)

    作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址:https://blog.csdn.net/HiWangWenBing/article/detai ...

  2. ECCV2022 | 生成对抗网络GAN论文汇总(图像转换-图像编辑-图像修复-少样本生成-3D等)...

    图像转换/图像可控编辑 视频生成 少样本生成 图像外修复/结合transformer GAN改进 新数据集 图像增强 3D 图像来源归属分析 一.图像转换/图像可控编辑 1.VecGAN: Image ...

  3. 一文看懂「生成对抗网络 - GAN」基本原理+10种典型算法+13种应用

    生成对抗网络 – Generative Adversarial Networks | GAN 文章目录 GAN的设计初衷 生成对抗网络 GAN 的基本原理 GAN的优缺点 10大典型的GAN算法 GA ...

  4. [Python图像识别] 四十九.图像生成之什么是生成对抗网络GAN?基础原理和代码普及

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...

  5. [论文阅读] (06) 万字详解什么是生成对抗网络GAN?经典论文及案例普及

    <娜璋带你读论文>系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢.由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正,非常欢迎大家给我留言评论,学 ...

  6. [Python人工智能] 二十九.什么是生成对抗网络GAN?基础原理和代码普及(1)

    从本专栏开始,作者正式研究Python深度学习.神经网络及人工智能相关知识.前一篇文章分享了Keras实现经典的深度学习文本分类算法,包括LSTM.BiLSTM.BiLSTM+Attention和CN ...

  7. 万字详解什么是生成对抗网络GAN

    摘要:这篇文章将详细介绍生成对抗网络GAN的基础知识,包括什么是GAN.常用算法(CGAN.DCGAN.infoGAN.WGAN).发展历程.预备知识,并通过Keras搭建最简答的手写数字图片生成案. ...

  8. [人工智能-深度学习-63]:生成对抗网络GAN - 图片创作:普通GAN, pix2pix, CycleGAN和pix2pixHD的演变过程

    作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址:https://blog.csdn.net/HiWangWenBing/article/detai ...

  9. 【机器学习】生成对抗网络 GAN

    文章目录 GAN能干什么? GAN的设计初衷 GAN 的基本原理(大白话) 生成对抗网络(GAN)由2个重要的部分构成 训练过程 GAN的总结 GAN的提出:"Generative Adve ...

最新文章

  1. python实现简单计算器功能键介绍_Python实现的简单计算器功能详解
  2. Leecode15. 三数之和——Leecode大厂热题100道系列
  3. C++STL容器排序查找效率测试
  4. 中断系统详解、外部中断
  5. 读c语言深度剖析 -- 单引号与双引号、逻辑运算符、位运算符、花括号
  6. Arduino笔记-调节呼吸灯频率实验
  7. 2014-06-29 Web-Front的学习(5)-----DOM学习及JavaScript的扩展
  8. 一些值得注意的算法题——哈希表
  9. MIT机器人轻松搞定桌游叠叠乐:你能玩过它算我输 | 《科学》子刊
  10. 视频编码方案之间的比较(HEVC,H.264,MPEG2等)
  11. opencv和caffe编译后怎么添加路径
  12. 发布Android开源库,看这个文章就够了!
  13. pads中如何设置等长_如何给PDF中的文本设置高亮显示
  14. 注意,Windows7只能安装Python 3.8以下的版本
  15. DoIP诊断概念入门
  16. 单反相机和镜头 怎么样才可以吧身边的mm拍的很漂亮!!
  17. 智能手持PDA是什么?
  18. 王兴的190条程序员技术人生的思考!
  19. input框点击时去掉默认的外层边框
  20. 红外光波长对血氧饱和度的影响

热门文章

  1. 测试 —— 与开发双手互搏的艺术
  2. 一题多解(六)—— 一个数二进制形式 1 的个数
  3. 快慢指针 —— 链表中点
  4. 推理集 —— 举一反三
  5. 计算机网络基石 —— 集线器
  6. php生成随机汉字,PHP随机生成中文段落示例【测试网站内容时使用】
  7. 怎么设置电脑屏幕一直亮着_电脑屏幕分辨率的调节方法
  8. python怎么读取excel-Python|读、写Excel文件(三种模块三种方式)
  9. O-矩阵相乘-Warshall算法详解
  10. 二倍图css,css二倍图的使用