上一篇文章的卷积反卷积自编码框架本来我是打算用作GAN的生成器,这样一来我用GAN生成的图像就可以受我控制了,而不是像DCGAN那样生成器的输入是一个随机的100维向量。

但是用卷积与反卷积自编码来作为生成器,我觉得似乎有点麻烦,首先要训练一个编码器网络,然后将编码器网络生成的向量代替类似于DCGAN中的z向量,实现对GAN生成模型输出的控制效果。因为我也不搞GAN,所以不如去找找现成的,于是乎就上IEEE Trans上找到可找篇论文

Creswell A , Bharath A A . Inverting the Generator of a Generative Adversarial Network[J]. IEEE Transactions on Neural Networks and Learning Systems, 2018:1-8.

整篇论文看下来有不少细节问题,比如图文不对应,不过不影响论文内容,整体上来说所用的方法是简洁明了的。

1、什么是生成器反向?

1.1 GAN基本原理

这就要从GAN 的基本原理说起了,放个传送门,简单来说,GAN 由两部分组成:Generator(生成器):生成模型的目的,就是要尽量去模仿、建模和学习真实数据的分布规律;Discriminator(鉴别器:而判别模型则是要判别自己所得到的一个输入数据,究竟是来自于真实的数据分布还是来自于一个生成模型。基本框架如下:

所以对于传统的GAN来说,输入一个随机噪声,生成器生成与样本图像类似的图像,所以说生成器的输入z看作生成图像G(z)的一种表示,而且DCGAN已经证明了GANs能够学习一种rich linear structure”

即对z空间的代数运算常常会导致图像空间在语义上有意义的合成样本

例如假设图片A 对应的输入为ZA , 图片B 对应的输入为ZB , 可以 ZA ZB 之间做插值,并使用G 生成每一个插值对应的图片DCGAN 可以让生成的图像以比较自然的方式A 过渡B。举个栗子:

不仅可以对输入信号z 进行过渡插值,还可以对其进行更复杂的类似于代数的运算。如图8-4 所示,用代表“露出笑容的女性”的z减去”女性“再加上“男性”,最后得到了“露出笑容的男性”。对Z-Space的性质有个大概的理解后,接下来看什么是反向生成。

1.2 反向生成(INVERTING THE GENERATOR)

先上图:

简单来说就是我有一张target image x,我想要用一个训练好的GAN生成我这张x,那我怎么知道该给生成器G的z什么,那按照传统的GAN中z向量都是随机或者说按照一定分布生成的,总不能一个一个z的试,所以本文介绍了一种能够利用经过训练的GANs生成器,将数据样本比如图像投影潜在z空间的反演模型;这么做有啥用?当然有用了,比如由于图像在Z空间的表示通常是有意义的,所以可以直接利用图像集在Z空间的表示进行识别任务;其次可以通过对Z空间的操作生成图像等等

······当然了这一块之前也肯定有人做了,他们怎么做的呢?他们跟我的想法类似,都是借助神经网络实现的,比如说设计一个编码器,这么做有什么不好呢?因为这样增加了参数的数量,参数越多不仅网络参数难调而且容易出现过拟合的情况;

生成器反向这种方法也能用于评估GANs网络的性能,为什么呢,因为如下图所示,将反向过程输出的Z空间向量z,再经过GAN的生成器生成图像,通过生成的图像与原图作对比,就可以大概看出来你训练出来的GAN网络性能如何,学习到了哪些特征,学习到的特征是不是很充分,这就属于该方法可对GAN网络模型进行定性分析,如果对原图与生成图像再求一个均方差MSE,这就属于该方法可对GAN网络模型进行定量分析。所以可以利用该方法来对两个GANs生成模型进行评估对比

这篇文章的贡献贴上:

  • A novel approach to invert the generator of any pretrained GAN, provided that the computational graph for the generator network is available;
  • we are able to infer a Z-space representation for a target image, such that when passed through the GAN, it produces a sample visually similar to the target image;
  • The proposed inversion technique may be used to both qualitatively and quantitatively compare GAN models;
  • We show that batches of z samples can be inferred from batches of image samples, which improve the efficiency of the inversion process by allowing multiple images to be inverted in parallel

2、具体实现

至于说Inverting a Batch of Samples都是唬人的,就是相当于并行多个单sample,类似于深度学习中简化计算用的向量化手段。不过原理还是挺简单的,多的不想写了,做个简单了解算了

Target image?∈R^(m∗m)              Pretrained GANs: G( )

目的:推理出目标image x Z空间的表示 ??

约束条件z 通过生成模型生成的image应当与x很相似;

所以该问题转换为最小化问题,z^∗可通过梯度下降法求得:

Inverting the Generator of a GAN 生成器反向相关推荐

  1. Dashed lines generator for 3dMax 虚线生成器插件使用教程

    Dashed lines generator虚线生成器是一个3DMAX建模工具,可以通过简单的步骤自动生成所有类型的虚线:它可以用于模拟交通标志标准:使用"蒙皮修改器SKIN MODIFIE ...

  2. mybatis generator 自动生成 在线生成器 生成service controller 含基础增删改查 自动生成工具 只需要建表SQL语句

    在线生成(目前只支持mysql):http://tools.49db.cn 已支持生成Service.Controller,含基础增删改查! (妈妈再也不用担心我整天写增删改查了 ^__^ ) 第3点 ...

  3. 2020-4-22 深度学习笔记20 - 深度生成模型 5 (有向生成网络--sigmoid信念网络/可微生成器网络/变分自编码器VAE/生产对抗网络GAN/生成矩匹配网络)

    第二十章 深度生成模型 Deep Generative Models 中文 英文 2020-4-17 深度学习笔记20 - 深度生成模型 1 (玻尔兹曼机,受限玻尔兹曼机RBM) 2020-4-18 ...

  4. 英伟达再出GAN神作!多层次特征的风格迁移人脸生成器

    选自arXiv 作者:Tero Karras.Samuli Laine.Timo Aila 机器之心编译 GAN 自 2014 年提出以来得到了广泛应用.前不久效果令人震惊的 ICLR 2019 论文 ...

  5. (2019, StyleGAN)用于 GAN 的基于样式的生成器架构

    A Style-Based Generator Architecture for Generative Adversarial Networks 公众号:EDPJ 目录 0. 摘要 1. 简介 2. ...

  6. 详解Python中的生成器表达式(generator expression)

    生成器表达式(generator expression)也叫生成器推导式或生成器解析式,用法与列表推导式非常相似,在形式上生成器推导式使用圆括号(parentheses)作为定界符,而不是列表推导式所 ...

  7. 生成器(generator)

    1. 什么是生成器 通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且, 创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元 ...

  8. ES6 生成器(Generator)

    ES6 生成器(Generator) 目录 ES6 生成器(Generator) 什么是生成器? 基本用法 生成器相关操作 斐波那契数列 对象中的Generator 什么是生成器? 生成器就是通过构造 ...

  9. generator(生成器)原理、使用及常见问题集锦

    参考网站: http://es6.ruanyifeng.com/#docs/generator Generator 概念 Generator 函数是 ES6 提供的一种异步编程解决方案. Genera ...

  10. ICML2020:预训练的GAN在有限数据下的生成器

    生成对抗网络可以生成高度逼真的图像,通常与真实图像是无法区分的.这样生成的大多数图像都没有包含在训练数据集中,说明用GAN生成的数据对增强数据集的能力很强.尽管在数据有限的情况下这种情况特别重要,但是 ...

最新文章

  1. 人脸识别技术大总结(1)——Face Detection Alignment
  2. C++编程语言之赋值运算符
  3. pyqt5 点击开始执行_《快速掌握PyQt5》第一章 PyQt5的起点
  4. LSTM TF核心实现代码笔记
  5. python有什么内容_python的类(简介,没什么内容)
  6. WINDOWS如何编写注册表文件
  7. @cosme宣布“@cosme THE BEST COSMETICS AWARDS 2020 ”@cosme上半年美妆新品大赏榜单中获奖新产品
  8. Linux CentOS 内核编译全流程:从安装vmware开始
  9. 为什么很多人上了研究生变得不快乐了?
  10. 将自己的app加入到分享列表中,并适配锤子的one step功能
  11. GanttChart
  12. _012_IDEA_idea 创建工作空间(空项目) 项目组
  13. 初学VUE 走马灯效果
  14. 【tsinsen A1490】osu!(乔明达) 矩阵+线段树
  15. java快速开发平台
  16. 改进的人工鱼群算法求解TSP问题的研究(Matlab代码实现)
  17. Linux kernal API
  18. 前端学习网络资源链接汇总
  19. ASP.NET.MVC登录页面
  20. win10完全卸载office2010

热门文章

  1. eNSP下载安装超详细,华为模拟器下载安装
  2. html5标签含义元素周期表
  3. Setycyas的自定义表情油猴插件
  4. win10硬盘根目录下出现msdia80.dll解决办法
  5. Device Tree(五)移植DM9000,并挂载NFS
  6. PPT流程图这样画,感动老板第一步!
  7. java 数据 excel模板_java导出excel模板数据
  8. 微信小程序广告接入,小程序加广告
  9. 基佬大乱斗自建服务器,玩家必看干货基佬大乱斗怎么联机实现双人作战
  10. matlab数据平滑处理,matlab数据的平滑处理