专栏首页人工智能头条深度卷积对抗生成网络(DCGAN)

深度卷积对抗生成网络(DCGAN)

本文为CSDN优质博文。作者:张雨石,现就职于Google北京输入法团队。

本文是参考文献 [1] 的论文笔记。

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

在非CNN条件下,LAPGAN在图像分辨率提升领域也取得了好的效果。

与其将本文看成是CNN的扩展,不如将其看成GAN的扩展到CNN领域。而GAN的基本算法,可以参考对抗神经网络

GAN无需特定的cost function的优势和学习过程可以学习到很好的特征表示,但是GAN训练起来非常不稳定,经常会使得生成器产生没有意义的输出。而论文的贡献就在于:

  • 为CNN的网络拓扑结构设置了一系列的限制来使得它可以稳定的训练。
  • 使用得到的特征表示来进行图像分类,得到比较好的效果来验证生成的图像特征表示的表达能力
  • 对GAN学习到的filter进行了定性的分析。
  • 展示了生成的特征表示的向量计算特性。

模型结构

模型结构上需要做如下几点变化:

  • 将pooling层convolutions替代,其中,在discriminator上用strided convolutions替代,在generator上用fractional-strided convolutions替代。
  • 在generator和discriminator上都使用batchnorm。
    • 解决初始化差的问题
    • 帮助梯度传播到每一层
    • 防止generator把所有的样本都收敛到同一个点。
    • 直接将BN应用到所有层会导致样本震荡和模型不稳定,通过在generator输出层和discriminator输入层不采用BN可以防止这种现象。
  • 移除全连接层
    • global pooling增加了模型的稳定性,但伤害了收敛速度。
  • 在generator的除了输出层外的所有层使用ReLU,输出层采用tanh。
  • 在discriminator的所有层上使用LeakyReLU。

DCGAN的generator网络结构:

其中,这里的conv层是four fractionally-strided convolution,在其他的paper中也可能被称为是deconvolution.

训练细节

  • 预处理环节,将图像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效果图

经过一次循环的训练(online learning)和收敛后得模型得到的效果分别如下:

这表明了DCGAN不是通过记忆训练数据来生成/过拟合高质量的图片。

DCGAN capabilities验证

为了验证DCGAN的特征表示的有效性,将特征表示输入到L2-SVM中,并将分类结果与其他的无监督学习算法进行对比。

为了做到这一点,使用在ImageNet-1K上训练得到的generator,使用所有层的所有CNN特征作为输入,将每一层的CNN特征使用max-pooling的方式降到4×4,然后展开,形成一个28672维的向量,输入到L2-SVM中。

Mnist数据集上的效果对比:

SVNH数据集上的对比:

漫游隐空间

通过慢慢的调整初始向量来探索隐空间是如何影响最终图片的生成的。这样,既可以探索图片特征是如何折叠到隐空间的,又可以判断这些图片是由于真正学习到了语义特征还是只是记住了图片(如果有sharp的变化)。

由上图,可以看到一些逐渐的变化,比如第六行中,逐渐有了一个窗户。第四行中,电视逐渐消失。

Discriminator Filter

通过分析filter,我们可以看到,在对房屋特征的学习中,GAN确实学习到了床、窗口等特征。

左侧是随机filter,右侧是学习到的filter,可见,右侧的filter还是有意义的。

Semantic Mask

在隐空间上,假设知道哪几个变量控制着某个物体,那么将这几个变量挡住是不是就可以将生成图片中的某个物体消失?

论文中的实验是这样的:首先,生成150张图片,包括有窗户的和没有窗户的,然后使用一个逻辑斯底回归函数来进行分类,对于权重不为0的特征,认为它和窗户有关。将其挡住,得到新的生成图片。

Vector Arithmetic

类似于word2vec,图像是不是也有类似的特点,可以在隐空间里进行加减法来得到新的图像?

实验表明,使用单张图片的表示并不稳定,使用三张图片会比较稳定。

可以看到,单张图片并不稳定,而三张图片则可以学到表情和墨镜等特征。

更甚者,可以学到一个稳定的向量,来进行某种变换,比如,方位变换。

总结

这篇paper的主要贡献看似简单,但其实工作量很大,充分展现出作者在调参大法上的卓越功力。

但我觉得,更大的贡献在于作者对于效果的研究方式,生成模型很难来区分好与坏,而本paper通过探索隐空间,分析网络,比较特征表现能力等一系列手段,证明了DCGAN算法确实是一个强大的算法。

Reference

[1]. Unsupervised Representations Learning With Deep Convolutional Generative Adversarial Networks

本文分享自微信公众号 - 人工智能头条(AI_Thinker),作者:张雨石

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-01-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 深度卷积对抗生成网络(DCGAN)

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

    CSDN技术头条
  • DCGAN:深度卷积生成对抗网络的无监督学习,补全人脸合成图像匹敌真实照片

    【新智元导读】Github 用户 saikatbsk 最近做了一个项目,使用深度卷积生成对抗网络进行图像补完,取得了非常不错的效果。他表示不久后会将具体方法公布...

    新智元
  • 深度卷积生成对抗网络的无监督学习,补全人脸合成图像匹敌真实照

    关键字全网搜索最新排名 【机器学习算法】:排名第一 【机器学习】:排名第二 【Python】:排名第三 【算法】:排名第四 我们会再接再厉 成为全网优质的技术类...

    昱良
  • 【GAN货】生成对抗网络知识资料全集(论文/代码/教程/视频/文章等)

    【导读】当地时间 10月 22 日到10月29日,两年一度的计算机视觉国际顶级会议 International Conference on Computer V...

    WZEARW
  • 基础 | 如何通过DCGAN实现动漫人物图像的自动生成?

    基于生成对抗网络(GAN)的动漫人物生成近年来兴起的动漫产业新技术。传统的GAN模型利用反向传播算法,通过生成器和判别器动态对抗,得到一个目标生成模型。由于训练...

    公众号机器学习与生成对抗网络
  • 【专知荟萃11】GAN生成式对抗网络知识资料全集(理论/报告/教程/综述/代码等)

    生成对抗网络(GAN)专知荟萃 一、理论学习 二、报告 三、教程 四、综述 五、中文博客资料 六、Github资源以及模型 七、最新研究论文 一、理论学习 训...

    WZEARW
  • [GAN学习系列3]采用深度学习和 TensorFlow 实现图片修复(中)

    上一篇文章--[GAN学习系列3]采用深度学习和 TensorFlow 实现图片修复(上)中,我们先介绍了对于图像修复的背景,需要利用什么信息来对缺失的区域进行...

    kbsc13
  • 如何用TensorFlow实现基于深度学习的图像补全?看完这篇就明白了

    作者|Brandon Amos 译者|@MOLLY && 寒小阳 简介 第一步:将图像理解为一个概率分布的样本 你是怎样补全缺失信息的呢? 但是怎样着手统...

    AI科技大本营
  • 《白话深度学习与Tensorflow》学习笔记(6)生成式对抗网络(GAN)

    生成对抗网络(generative adversarial networks): G:生成式模型 用于生成新的结果;D:判别式模型:将G生成的结果输入到D进行判...

    微风、掠过

扫码关注云+社区

领取腾讯云代金券