【深度学习】Generative Adversarial Networks ,GAN生成对抗网络分类

简介: 文章概述了生成对抗网络(GANs)的不同变体,并对几种经典GAN模型进行了简介,包括它们的结构特点和应用场景。此外,文章还提供了一个GitHub项目链接,该项目汇总了使用Keras实现的各种GAN模型的代码。

1 思维导图

1.png

2 大纲

序号对应论文中的参考文献《A Review on Generative Adversarial Networks: Algorithms, Theory, and Applications》

按损失函数分
    Original GAN
    f-GAN
    Energy-based GAN
    Least-square GAN
    Loss-sensitive GAN
    W-GAN、improved W-GAN
    Boundary-equilibrium GAN
    Boundary-seekingGAN

按网络结构分
    Conditional GAN
    InfoGAN
    Stacked GAN
    CycleGAN、DualGAN、 DiscoGAN
    Triple GAN
    Triangle GAN
    TAC-GAN
    CVAE-GAN

按应用领域分
    图像处理和计算机视觉
        超分辨
            SRGAN【63】
            ESRGAN【64】
            CyCle-In-Cycle GANs【65】
            SRDGAN【66】
            TGAN【67】
        图像合成和处理
            DR-GAN【68】
            TP-GAN【69】
            PG【70】
            PSGAN【71】
            APDrawingGAN【72】
            IGAN【73】
            Introspective adversarial networks【74】
            GuaGN 【75】
        纹理合成
            MGAN【76】
            SGAN【77】
            PSGAN【78】
        目标检测
            Segan【79】
            perceptual GAN【80】
            MIGAN【81】
        视频
            VGAN【82】
            DRNET【83】
            Pose-GAN【84】
            video2video【85】
            MoCoGan【86】
    序列数据
        自然语言处理
            RANKGAN【87】
            IRGAN【88】
            TAC-GAN【92】
        音乐
            RNN-GAN【91】
            ORGAN【92】
            SeqGAN【93-94】

3 经典GAN简介

GitHUb代码汇总https://github.com/823316627bandeng/Keras-GAN

3.1 SGAN

是在半监督学习的背景下提出的,与监督学习(其中每个样本都需要一个标签)和非监督学习(其中不提供标签)不同,半监督学习具有一小部分示例的标签。与FCGAN相比,SGAN的鉴别器是multi-headed的,即具有softmax和Sigmoid,以对真实数据进行分类并分别区分真实和生成样本。作者在MNIST数据集上训练SGAN,结果表明与原始GAN相比,SGAN中的鉴别器和生成器均得到了改进。

2.png

3.2 Conditional GAN

CGAN将随机噪声 和类别标签 作为生成器的输入,判别器则将生成的样本或真实样本与类别标签作为输入。以此学习标签和图片之间的关联性。具体看代码,用了两次鉴别器。一次是鉴别真样本,一次鉴别生成的样本

3.png

3.3 Bidirectional GAN (BiGAN)

  • 整个结构包括三部分:Encode网络,G网络,D网络。 Encode网络,提取原始图片的隐变量。G网络,将噪声生成图片。D网络,判断这个配对(原始图片和隐变量 生成图片和噪声)是来自encoder还是decoder

  • 中文翻译是“双向Gan”,对于配对“原始图片和隐变量 ”原始图片是已知的,隐变量 是学习噪声,对于配对“生成图片和噪声”,噪声是已知的,生成图片是学习原始图片,这就是一个双向学习过程。

4.png

3.4 InfoGAN

  • 提出把输入的噪声向量分成两部分:(1)z,可以看成是输入的噪声向量。(2)c,对应的语义向量。其中Info代表互信息,它表示生成数据x与隐藏编码c之间关联程度大小。

  • InfoGAN提出一种无监督的方式,让生成网络输入噪声变量z、隐藏编码c,即生成数据可以表示成:G(z,c)。然而,在标准GAN中,如果直接这样作为网络的输入进行训练,那么生成器将忽略隐藏编码的作用,或者可以看成z与c相互独立、不相关。为了解决这个问题,文章提出正则化约束项:隐藏编码c与生成样本G(z,c)的互信息量应该较大,即I(c;G(z,c))应该较大。

5.png

3.5 Auxiliary Classifier GAN (AC-GAN)

ACGAN的原理GAN(CGAN)相似。对于CGAN和ACGAN,生成器输入均为潜在矢量及其标签,输出是属于输入类标签的伪造图像。对于CGAN,判别器的输入是图像(包含假的或真实的图像)及其标签, 输出是图像属于真实图像的概率。对于ACGAN,判别器的输入是一幅图像,而输出是该图像属于真实图像的概率以及其类别概率

6.png

3.6 Boundary Equilibrium GAN (BEGAN)

  • 应用auto-encoder实现Discriminator
  • Discriminator的Loss_D由输入原图(input_img)与Decoder恢复的输出图(recover_img)之间的逐点error构成
  • Loss_D可看成是随机的分布,由real_img所形成的Loss_D_Real分布与由Generator生成的假图(fake_img)所形成的Loss_D_Fake分布,出现了两个分布,用Wasserstein Distance(简称WD)来衡量这两个分布的距离。Discriminator的目标是尽量拉开这两个分布的距离,而Generator的目标是缩小这两个分布的距离——GAN的基本思想。
  • 引入了一个均衡的概念来调节Discriminator训练时的两个目标的比重:目标1,是提高auto-encoder的重构能力,即auto-encoder恢复输入input_img的能力;目标2,提高D的分辨真伪的能力。该均衡控制量是可以变动的,就像是电路中的反馈环,构成了反馈比例控制(Proportional Control)迭代机制。

7.png

3.7 Self-attention GAN (SAGAN)

《Self-Attention Generative Adversarial Networks(SAGAN)》网络主要引入了注意力机制,不仅解决了卷积结构带来的感受野大小的限制,也使得网络在生成图片的过程中能够自己学习应该关注的不同区域。

GAN之前存在的问题: 对于含有较少结构约束的类别,比如海洋、天空等,得到结果较好;而对于含有较多几何或结构约束的类别则容易失败,比如合成图像中狗(四足动物)的毛看起来很真实但手脚很难辨认。这是因为复杂的几何轮廓需要long-range dependencies(长距离依赖),卷积的特点就是局部性,受到感受野大小的限制很难提取到图片中的这些长距离依赖。虽然可以通过加深网络或者扩大卷积核的尺寸一定程度解决该问题,但是这会使卷积网络丧失了其参数和计算的效率优势。

论文的主要贡献:
把self-attention机制引入到了GAN的框架中,对卷积结构进行了补充,有助于对图像区域中长距离,多层次的依赖关系进行建模,并对该机制做了可视化实验;
在判别器和生成器中均使用spectral normalization,提升生成器的性能;
训练中使用Two Timescale Update Rule (TTUR),对判别器使用较高学习率,从而可以保证生成器和判别器可以更新比例为1:1,加快收敛速度,减少训练时间。

8.png

3.8 Deep Convolutional GAN (DCGAN)

该网络主要用的是卷积层,而之前的简单的一些网络用的都是全连接层。

9.png

3.9 MSG-GAN

在训练 GAN 的过程中常遇到的一个问题是训练不够稳定, 提出了一种方法, 通过研究如何使用多个尺度的梯度来生成高分辨率图像 (由于数据维数而更具挑战性), 而无需依靠先前的贪婪方法 (例如渐进式生长技术), 来解决图像生成任务的训练不稳定性.

左半部分是生成器, 右半部分是鉴别器. 在生成器中, 粉色的方块是特征图, 将特征图通过 1 ×1 的卷积核来生成下面的图像, 将这些图像传递到鉴别器中对应尺度的位置

10.png

目录
相关文章
|
24天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
眼疾识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了4种常见的眼疾图像数据集(白内障、糖尿病性视网膜病变、青光眼和正常眼睛) 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,实现用户上传一张眼疾图片识别其名称。
87 4
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
|
1月前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
310 55
|
15天前
|
机器学习/深度学习 监控 算法
基于yolov4深度学习网络的排队人数统计系统matlab仿真,带GUI界面
本项目基于YOLOv4深度学习网络,利用MATLAB 2022a实现排队人数统计的算法仿真。通过先进的计算机视觉技术,系统能自动、准确地检测和统计监控画面中的人数,适用于银行、车站等场景,优化资源分配和服务管理。核心程序包含多个回调函数,用于处理用户输入及界面交互,确保系统的高效运行。仿真结果无水印,操作步骤详见配套视频。
44 18
|
1月前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
202 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
1月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于yolov4深度学习网络的公共场所人流密度检测系统matlab仿真,带GUI界面
本项目使用 MATLAB 2022a 进行 YOLOv4 算法仿真,实现公共场所人流密度检测。通过卷积神经网络提取图像特征,将图像划分为多个网格进行目标检测和识别,最终计算人流密度。核心程序包括图像和视频读取、处理和显示功能。仿真结果展示了算法的有效性和准确性。
73 31
|
1月前
|
机器学习/深度学习 算法 信息无障碍
基于GoogleNet深度学习网络的手语识别算法matlab仿真
本项目展示了基于GoogleNet的深度学习手语识别算法,使用Matlab2022a实现。通过卷积神经网络(CNN)识别手语手势,如"How are you"、"I am fine"、"I love you"等。核心在于Inception模块,通过多尺度处理和1x1卷积减少计算量,提高效率。项目附带完整代码及操作视频。
|
1月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于深度学习网络的宝石类型识别算法matlab仿真
本项目利用GoogLeNet深度学习网络进行宝石类型识别,实验包括收集多类宝石图像数据集并按7:1:2比例划分。使用Matlab2022a实现算法,提供含中文注释的完整代码及操作视频。GoogLeNet通过其独特的Inception模块,结合数据增强、学习率调整和正则化等优化手段,有效提升了宝石识别的准确性和效率。
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
深入理解深度学习中的卷积神经网络(CNN)##
在当今的人工智能领域,深度学习已成为推动技术革新的核心力量之一。其中,卷积神经网络(CNN)作为深度学习的一个重要分支,因其在图像和视频处理方面的卓越性能而备受关注。本文旨在深入探讨CNN的基本原理、结构及其在实际应用中的表现,为读者提供一个全面了解CNN的窗口。 ##
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
深入理解深度学习中的卷积神经网络(CNN)
深入理解深度学习中的卷积神经网络(CNN)
|
1月前
|
机器学习/深度学习 人工智能 算法
深度学习入门:用Python构建你的第一个神经网络
在人工智能的海洋中,深度学习是那艘能够带你远航的船。本文将作为你的航标,引导你搭建第一个神经网络模型,让你领略深度学习的魅力。通过简单直观的语言和实例,我们将一起探索隐藏在数据背后的模式,体验从零开始创造智能系统的快感。准备好了吗?让我们启航吧!
98 3