生成对抗网络之DCGAN

DCGAN原理介绍

我们知道深度学习中对图像处理应用最好的模型是CNN,那么如何把CNN与GAN结合?DCGAN是这方面最好的尝试之一(论文地址:[1511.06434] Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks)

卷积神经网络在有监督学习中的各项任务上都有很好的表现,但在无监督学习领域,却比较少。本文介绍的算法将有监督学习中的CNN和无监督学习中的GAN结合到了一起。

DCGAN的原理和GAN是一样的,这里就不在赘述(GAN网络提出了理论,具体的G,D实现可以我们自己来定)。DCGAN把上述的G和D换成了两个卷积神经网络。D可以理解为一个分类的卷积网络。G则是一个全卷积网络。但不是直接换就可以了,DCGAN对卷积神经网络的结构做了一些改变,以提高样本的质量和收敛的速度,这些改变有:

  • G网络中使用转置卷积(transposed convolutional layer)进行上采样,D网络中用strided convolutions来替代空间池化(pooling)

  • 除了生成器模型的输出层和判别器模型的输入层,在网络其它层上都使用了Batch Normalization,使用BN可以稳定学习,有助于处理初始化不良导致的训练问题。

  • 去掉FC层,使网络变为全卷积网络

  • G网络中使用ReLU作为激活函数,最后一层使用tanh

  • D网络中使用LeakyReLU作为激活函数

DCGAN的generator网络结构:


那么具体说一下DCGAN的网络模型:

(1)G网络:100 z->fc layer->reshape ->deconv+batchNorm+RELU(4) ->tanh 64x64

(2)D网络(版本1):conv+batchNorm+leakyRELU (4) ->reshape -> fc layer 1-> sigmoid

D网络(版本2):conv+batchNorm+leakyRELU (4) ->reshape -> fc layer 2-> softmax

G网络使用4层反卷积,而D网络使用了4层卷积。基本上G网络和D网络的结构正好是反过来的。那么D网络最终的输出有两种做法,一种就是使用sigmoid输出一个0到1之间的单值作为概率,另一种则使用softmax输出两个值,一个是真的概率,一个是假的概率。两种方法本质上是一样的。

上面是DCGAN的生成网络模型的架构,对于LSUN,Imagenet-1k大小的数据集,我们可以使用这个架构,但并不是说对于任何数据集,都可以,比如,更大,或者更小的,那对应的卷积架构就需要进行改变。比如,对于mnist数据集,G和D的网络架构都相应地减小了,否则不能拟合,产生不了好的结果(亲测)。

那对于判别模型的话,就是5层卷积层网络。对与生成模型的,我们可以看到,从开始的Noise采样100维度,到最后生成了64x64x3的图片,经过了“de-convolution”层,实质是transport convolution 或者up-sampling convolution。下一节介绍下什么是反卷积层。

“反卷积”—上采样卷积

本节详细介绍下反卷积的由来。 
反卷积,英文decovolution。根据wiki的定义,其实是对卷积的逆向操作,也就是通过将卷积的输出信号,经过反卷积可以还原卷积的输入信号,还原的不仅仅是shape,还有value。 
但是深度学习中的所讲的反卷积实质是transport convolution。只是从2010年一篇论文[11]将其叫做了deconvolution,然后才有了这个名字。

那为什么叫做transport(转置)?

因为“反卷积”存在于卷积的反向传播中。其中反向传播的滤波器矩阵,是前向传播(卷积)的转置,所以,这就是它的名字的由来。只不过我们把反向传播的操作拿到了前向传播来做,就产生了所谓的反卷积一说。但是transport-convolution只能还原信号的大小,不能还原其value,所以,不能叫做反卷积。

训练细节

  预处理环节,将图像scale到tanh的[-1, 1]。
  • mini-batch训练,batch size是128.
  • 所有的参数初始化由(0, 0.02)的正态分布中随即得到
  • LeakyReLU的斜率是0.2.
  • 虽然之前的GAN使用momentum来加速训练,DCGAN使用调好超参的Adam optimizer。
  • learning rate=0.0002
  • 将momentum参数beta从0.9降为0.5来防止震荡和不稳定。
大规模图像理解(LSUN)
在改善生成图像模型样本视觉质量的同时,也增加了对于训练样本的记忆和过拟合的关注。为证实我们的模型规模在更多的数据和跟高的分辨率怎样生成,我们在LSUN卧室数据集包含一个小的超过300万的训练样本上训练了一个模型。最近Hardt等人的分析表明怎样快速学习模型和泛化能力有着直接的联系。模仿在线学习,如图2所示展示了训练一次的样本,除了手链后的样本,我们显示来自一个周期的训练样本,模仿在线学习,以及收敛后的样本(图3所示),作为论证,我们的模型不是通过简单过拟合/记忆训练例子产生高质量的样本。图像没有用到数据增强。

——删除重复数据

为进一步降低生成器记忆输入样本的可能性(图 2),我们进行了一个简单的删除重复图像的过程。我们在训练样本的32*32下采样中心采样拟合了一个3072-128-3072去噪差正则化RELU自编码。



参考:

https://blog.csdn.net/stdcoutzyx/article/details/53872121

https://blog.csdn.net/u011534057/article/details/54845673


  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DCGAN(Deep Convolutional Generative Adversarial Network)是一种生成对抗网络GAN)的变体,它包括了卷积神经网络(CNN),并且已经功地应用于图像生任务DCGAN 的主要思想是使用 CNN 作为生器和辨别器模型的基础。生器通过反向卷积(也称为转置卷积)操作将随机噪声数据转换为具有特定特征的图像。辨别器则通过卷积操作来判断输入数据是否为真实图像。 在训练过程,生器和辨别器通过对抗的方式相互学习。生器尝试生越来越逼真的图像,而辨别器则尝试区分真实图像和生图像之间的差异。这种对抗训练的结果是生器的输出逐渐变得更加真实,同时辨别器变得更加准确。 以下是 DCGAN 的基本架构: 1. 生器:在 DCGAN ,生器使用反向卷积操作将随机噪声转换为图像。它通常由几个反向卷积层和规范化,每个都带有 ReLU 激活函数。 2. 辨别器:辨别器是一个 CNN,它接收真实图像和生图像,并尝试区分它们之间的差异。它通常由几个卷积层和池化,每个都带有 LeakyReLU 激活函数。 3. 对抗训练:在训练过程,生器和辨别器通过对抗的方式相互学习。生器尝试生越来越逼真的图像,而辨别器则尝试区分真实图像和生图像之间的差异。 4. 损失函数:在 DCGAN ,使用二元交叉熵作为损失函数。对于生器和辨别器,都需要计算二元交叉熵损失,并且将其最小化。 DCGAN 已经被功地应用于图像生任务,例如生手写数字、人脸、自然景观等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值