生成对抗网络(三)DCGAN讲解

生成对抗网络DCGAN讲解

  • Abstract
  • 1. Introduction
  • 2. Related Work
  • 3. 模型架构的改进
    • Reference

                生成对抗网络(三)DCGAN讲解_第1张图片

原文:Deep Convolution Generative Adversarial Networks
代码:pytorch
收录:ICLR 2016
 

注:fractional-strided convolution(微步卷积),属于反卷积,反卷积下还有转置卷积。


Abstract

        卷积网络CNNs在监督学习领域取得很高的成就,但是在无监督学习领域CNNs则研究很少,因此作者想在无监督学习领域尝试下CNNs,提出了将CNNs和GAN结合的DCGAN

        后来,通过在大量的数据集上的训练,证明DCGAN的生成器G和判别器D无论是在物体组成部分还是场景方面都学习到丰富的层次表达。
 

※论文核心思想:DCGAN相比GAN,对CNN进行改进:

  1. 使用卷积(D)和微步卷积(G)代替池化层;
  2. 只对生成器的输出层和鉴别器的输入层使用BN,别的层没有使用;
  3. 使用全局平均池化去替代FC;
  4. 生成器的输出层使用Tanh 激活函数,其他层使用RELU,判别器的所有层都是用LeakyReLU 激活函数。

 


1. Introduction

        从大量未标签的数据中学习到有用的特征表达一直是非常热门的研究领域,在计算机视觉背景下,我们能从大量的未标记图片以及视频中学习到良好的中间表现形式,然后将其运用到监督学习中。我们提议通过训练GAN来建立好的图像中间表现形式,但是GAN的一大问题就是其训练非常不稳定,有的时候会得到奇怪的结果,而且对于建立中间形式研究较少。
 
※我们有如下几个贡献

  • 提出并评估一系列的卷积GAN结构的限制,为了能确保在大多数情况下,DCGAN可以稳定使用;
  • 我们使用训练好的判别器来进行图像分类任务,这和其他无监督算法相比,结果更具优势;
  • 可视化DCGAN的filters,结果表明特定的filter能学习绘制特定的目标;
  • 生成器G具有有趣的向量运算性质,这使得我们可以对生成的样本进行语义上的操作。

 


2. Related Work

        对于无监督学习,使用的方法有聚类(例如K-means)、auto-encoders以及深度信念网络(deep blief networks)。

        对于产生自然图片,这一步分为参数和非参数的:

  • 非参数:从已有图像数据库中对图像的小块(patch)进行匹配,一般被用于纹理合成(texture synthesis)、超分辨率图片合成以及图像修补等方面。
  • 参数:这种方法以前研究的就比较多,2014年提出GAN之后,这种模型可以生成图片,但是不稳定,而且有的时候会产生噪声以及奇怪的图片。这之后,2015年提出了laplacian pyramid extension的GAN,生成图片的质量更好,但是由于引入多个模型噪声,仍不稳定。后来提出了recurent network approach 和 deconvolution(反卷积)的方法,可以产生一定质量的图片,但是他们没有利用生成器G来完成监督任务。

 


3. 模型架构的改进

        LAPGAN作者尝试迭代地将低分辨率的图片逐步转化为更好的图片,从而产生更可靠的结果。文中作者在使用传统的监督学习CNN架构扩展GAN的过程中,也遇到了困难。在反复实验和尝试之后,作者提出一系列的架构,可让GAN+CNN更加稳定,可以deeper,并且产生更高分辨率的图像。核心的工作是对现有的CNN架构做了如下三个方面的修改:

  • 全卷积网络:使用卷积替代确定性的空间池化操作,让网络自己学习downsampling(下采样)。作者对生成器和判别器都采用了这种方法,让它们可以学习自己的空间下采样。;
  • 取消全连接层使用全局平均池化去替代FC,全局平均池化虽然可以提高模型稳定性,但降低收敛速度。GAN的第一层以均匀噪声分布Z作为输入,可能称之为全连接(因为只是一个矩阵相乘),然后结果reshape成一个4维张量,用作卷积堆栈起点,对于判别器,最后的卷积层可以先展平flatten,然后将其输入到sigmoid分类器中
  • 批量标准化BNBN可以加速学习和收敛,通过将每个单元的输入归一化,使其均值和单位方差为零,从而稳定学习,这被证明是深度学习中非常重要的加速收敛和减缓过拟合的手段。它可以帮助由于初始化不当而导致的训练困难,并且有助于在更深层次的模型中实现梯度流。这被证明是让深层发生器开始学习的关键,防止发生器将所有样本压缩到一个单点,这是GAN中常见的问题。实践表明, 如果直接将BN应用到all layers,会导致样本震荡和模型不稳定,所以我们只对生成器的输出层和鉴别器的输入层使用BN
  • 激活函数:对于生成器G,其输出层使用tanh 激活函数,其余层使用relu 激活函数。我们发现使用bounded 激活函数可以加速模型的学习,使得颜色空间饱和和覆盖。对于判别器D,我们发现在D中所有层使用leaky relu 更好,尤其是对于生成高分辨率的图片。

总结如下
            生成对抗网络(三)DCGAN讲解_第2张图片

生成对抗网络(三)DCGAN讲解_第3张图片

反卷积 包含转置卷积和微步卷积,两者的区别在于padding 的方式不同,如下图所示:
                生成对抗网络(三)DCGAN讲解_第4张图片                生成对抗网络(三)DCGAN讲解_第5张图片


 

Reference

  1. DCGAN 论文简单解读
  2. 从头开始GAN【论文】(二) —— DCGAN

你可能感兴趣的:(图像处理)