核心要点  

  StackGAN旨在生成高分辨率的真实图片。

  • stackGAN-v1架构包含两个阶段:用于文本到图像的合成,阶段1GAN根据给定的文本描述绘制对象的形状和颜色,生成低分辨率图像。阶段2将阶段1的结果和文本作为输入,生成具有真实图片细节的高分辨率图像。
  • StackGAN-V2:针对有条件和无条件生成任务,提出了一种先进的多阶段生成式对抗网络体系结构StackGAN-v2。由树状结构中中的多个生成器和鉴别器组成:同一场景对应的多个尺度的图像来自于树的不同分支。通过联合逼近多个分布,stackGAN-v2比stackGAN-v1表现出更稳定的训练行为。

StackGAN++

创新点:

1.在StackGAN++模型中,有3个生成器,3个判别器,分别学习三种不同尺度的图像分布

2.联合条件分布和无条件分布估计

  如果是无条件分布估计,需在图像生成的过程中,加入隐变量z,即连接到不同尺度的图像分布

  如果是条件分布估计,就将串接的隐变量z替换成语义变量c,并同时也串接到判别器的隐层特征中

3.颜色一致性正则化。动机是因为生成的图像在不同尺度中应该保持共有的基本结构和颜色。

1.介绍

  生成对抗模型是goodfellow等人提出的一种生成模型,在最初的设计中,GAN是由一个生成器和一个具有竞争目标的判别器组成。训练生成器生成面向真实数据分布的样本以欺骗判别器,优化判别器以区分来自真实数据分布的真实样本和生成器生成的虚假样本。近年来,GAN在模拟样本,图像,视频等复杂数据分布方面显示出了巨大的潜力。

  尽管获得了成功,GAN模型很难去训练。训练过程通常不稳定,和对超参数敏感。一些文献认为,不稳定的部分原因是数据分布和隐含的模型分布的不相交支持。

  这个问题在生成高分辨率(256*256)时更加严重,因为高分辨率图像分布和模型分布在高维空间中的共享支持的机会非常少。此外,GAN训练的常见故障现象是模型崩溃:生成的许多样本包含相同的颜色或文理图像。

  为了稳定GAN的训练过程,提高样本的多样性,一些方法尝试通过提出新的网络架构,引入启发式技巧或修改学习目标来应对挑战。但是大多是方法设计来近似单个数据分布(例如,相同大小的图像)。由于模型与数据分布高维空间中存在少量重合,使得直接逼近高分辨率图像数据分布十分困难,以往的方法局限于生成低分辨率图像。在这项工作中,我们观察到,真实世界的数据,特别是自然图像,可以在不同尺度中建模。可以将多分辨率的数字化图像看作是对相同的连续图像信号以不同的采样率进行采样,因此,图像在多个离散尺度上的分布是相关的。除了不同尺度的多个分布外,图像加上或者不带有条件变量,都可以看作条件分布和无条件分布,他们也是相关的分布。基于这些观察结果,认为将复杂的生成任务分解为渐进目标的子问题,GAN可以被稳定的训练来生成高分辨率图像。在此基础上,我们提出stackGAN来模拟低到高维数据的分布。

  首先,我们提出一个两阶段生成对抗网络,stackGAN-V1,通过草图细化过程从文本描述生成图像,通过Stage1GAN生成低分辨率图像,在第一个阶段的基础上,与第二个阶段叠加在一起生成高分辨率的图像。通过再一次对第一阶段的结果和文本进行条件设置,第二个阶段GAN学会捕捉第一阶段GAN省略的文本信息,并绘制更多的细节,进一步,我们提出了一个新颖的条件平滑技术,以鼓励平滑的潜在条件集。允许在条件集中的随机扰动,增加了合成图像的多样性。

  第二,提出了一个先进的生成式对抗网络架构,StackGAN-V2,用于有条件和无条件生成任务,StackGAN-v2有多个生成器,它们在树状结构中,共享大部分参数。网络的输入可以看作树的根,多尺度图像由树的不同分支生成。位于最深分支的生成器的最终目标是生成逼真的分辨率图像。中间分支的生成器具有逐步生成小到大图像的目标,以帮助实现最终目标。整个网络被联合训练来近似不同但高度相关的图像在不同分支上的分布。一个分布模型的正反馈可以改善其他分布的学习。对于图像生成任务,我们提出的StackGAN-v2同时近似于无条件的纯图像分布和基于文本描述的图像分布。这两种分布是互补的。此外,我们提出了一个颜色一致性正则化项,以指导我们的生成器在不同尺度上生成更多的一致性样本。正则化提供了额外的约束,以促进多分布近似,这是特别有用的无条件设置,其中没有实例监督之间的图像和输入噪声矢量。

  总之,stackGAN三个贡献:

  1.stackGAN-v1首次从文本描述生成具有照片般逼真细节的256*256分辨率图像,

  2.提出了一种新的条件增强技术来稳定条件GANS训练,来提高样本的多样性。

  3.stackGANs-v2通过联合近似多个分布,进一步提高了生成图像的质量,稳定了GANs的训练

StackGAN-v2

  是端到端网络,对一系列多尺度图像进行建模,StackGAN-v2在树形结构中,包含了多个生成器和判别器,从低分辨率到高分辨率的图像来自树的不同分支。在每一个分支,生成器捕获在该尺度上的图像分布,判别器估计样本来之该尺度的训练图像的概率。生成器联合训练去逼近多维分布,生成器和判别器交替训练。讨论两种类型的多维分布,多尺度图像分布和无条件与有条件的图像分布。

  1.多尺度图像分布

  噪声向量z ∼ pnoise 作为输入,使用多个生成器生成不同尺度的图像。噪声pnoise通常是标准正态分布,经过层与层,潜在变量z转换为隐层特征。通过非线性转换,计算每个生成器的隐藏特征。

代表第i个分支的隐藏特征,m分支的总数。为了捕获在预处理中省略的信息,噪声向量z和隐层特征hi-1共同作为计算hi的Fi的输入。在不同层的隐藏特征的基础上,生成器产生小尺度到大尺度的样本(s0,s1,...,sm-1)

Gi是第i个分支的生成器。

  在生成器之后,每一个判别器以真实图像xi或者假样本si作为输入,被训练分成两类。

  StackGan-v2是联合近似多个图像分布增加这些数据分布与模型分布共享的机会。对中间的分支增加辅助任务,为训练整个网络提供更多的梯度信号。例如,近似在第一个分支上的低分辨率的图像分布导致具有基本颜色和结构的图像。然后,后续分支的生成器集中完成更高分辨率图像的细节。

  2.联合无条件和有条件分布

  对于无条件图像生成,训练stackGAN-v2来区分真假图片。处理条件图像生成,图像和他们相应的调节变量被输入到鉴别器中,以确定条件对是否匹配。这引导生成器近似条件图像分布。对于有条件的StackGan-v2,F0,Fi将条件向量c作为输入,比如h0 = F0(c,z),hi = Fi(hi-1,c).对于Fi,条件向量c代替了噪声向量z来鼓励生成器通过条件变量来描绘具有更多细节的图像。因此,多尺度样本由si= Gi(hi)生成。有条件的StackGAN的判别器Di的目标函数由两项组成,无条件损失和有条件损失。无条件损失决定图片是真是假,有条件损失决定图像和条件是否匹配。

每个尺度的发生器Gi联合近似无条件和条件图像分布。

  3.颜色一致性正则化

  在不同的生成器上增加图像分辨率,不同尺度的生成图片应该共享相似的基本结构和颜色。颜色一致性项使具有相同输入的不同生成器生成的图片在颜色上增加一致性来提高生成图片的质量。 

  4.实现细节

  StackGAN-v2模型生成256*256的图像。输入向量(无条件的是z,有条件的是z和 c)先转换成4*4*64的特征张量,然后这个张量在不同的网络层上通过6次上采样转换成64*64*4,128*128*2,最终变成256*256*1。中间的64*64*4,128*128*2,256*256*1特征使用3*3的卷积生成相应尺度的图片。c或z也直接加入到中间层中,来保证c或z中的编码信息不被省略。所有的判别器都有下采样和3*3卷积使输入图像转换成4*4*8的张量,最后使用sigmoid的函数计算输出概率。

torch_10_stackGAN-V2的更多相关文章

  1. 如何搭建自己的SPRING INITIALIZR server

    这两天在慕课学Spring boot ,用idea通过spring initializr新建项目 即使用代理连不上.无奈. 参考了 GitHub - spring-io/initializr: A w ...

  2. Atitit. 破解  拦截 绕过 网站 手机 短信 验证码  方式 v2 attilax 总结

    Atitit. 破解  拦截 绕过 网站 手机 短信 验证码  方式 v2 attilax 总结 1. 验证码的前世今生11.1. 第一代验证码 图片验证码11.2. 第二代验证码  用户操作 ,比如 ...

  3. [Android]Android端ORM框架——RapidORM(v2.1)

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/6020412.html [Android]Android端ORM ...

  4. [Android]Android端ORM框架——RapidORM(v2.0)

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5626716.html [Android]Android端ORM ...

  5. JuCheap V2.0响应式后台管理系统模板正式发布beta版本

    JuCheap V1.* 查看地址: http://blog.csdn.net/allenwdj/article/details/49155339 经过半年的努力,JuCheap后台通用响应式管理后台 ...

  6. Atitit. 项目文档目录大纲 总集合  v2

    Atitit. 项目文档目录大纲 总集合  v2 -----Atitti.原有项目源码的架构,框架,配置与环境说明 v3 q511 -----Atitit.开发环境 与 工具 以及技术框架 以及 注意 ...

  7. python gettitle v2.0

    #!/usr/bin/env python # coding=utf-8 import threading import requests import Queue import sys import ...

  8. ".NET Compact Framework v2.0 could not be found."

    参考: http://blog.csdn.net/godcyx/article/details/7348431 问题原因: That's a known issue where VS can't di ...

  9. ASP.NET Identity V2

    Microsoft.AspNet.Identity是微软在MVC 5.0中新引入的一种membership框架,和之前ASP.NET传统的membership以及WebPage所带来的SimpleMe ...

  10. Atitit.自然语言处理--摘要算法---圣经章节旧约39卷概览bible overview v2 qa1.docx

    Atitit.自然语言处理--摘要算法---圣经章节旧约39卷概览bible overview v2 qa1.docx 1. 摘要算法的大概流程2 2. 旧约圣经 (39卷)2 2.1. 与古兰经的对 ...

随机推荐

  1. 【VM配置】配置主机名称、网卡和yum源配置

    一,.配置主机名 为了对主机能进行分区,除了要有ip地址外还需要主机名,主机之间可以通过这个类似域名的名称来相互访问.linux系统中主机名配置文件一般在/etc/hostname文件中.另外我们也可 ...

  2. 【文本处理命令】之sed命令详解

    sed行处理命令详解 一.简介 sed命令是一种在线编辑器.一个面向字符流的非交互式编辑器,也就是说sed不允许用户与它进行交互操作.sed是按行来处理文本内容的,它一次处理一行内容.处理时,把当前处 ...

  3. pymongo和mongoengine安装和使用教程 包含常用命令行和代码示例 | pymongo and mongoengine tutorial on ubuntu 16.04

    本文首发于个人博客https://kezunlin.me/post/e88f04e5/,欢迎阅读最新内容! pymongo and mongoengine tutorial on ubuntu 16. ...

  4. Core源码(三) Lazy<T>

    Lazy<T>解决什么问题? 1.大对象加载 考虑下面的需求,有个对象很大,创建耗时,并且要在托管堆上分配一大块空间.我们当然希望,用到它的时候再去创建.也就是延迟加载,等到真正需要它的时 ...

  5. 采用邻接矩阵表示图的深度优先搜索遍历(与深度优先搜索遍历连通图的递归算法仅仅是DFS的遍历方式变了)

    //采用邻接矩阵表示图的深度优先搜索遍历(与深度优先搜索遍历连通图的递归算法仅仅是DFS的遍历方式变了) #include <iostream> using namespace std; ...

  6. Python 内置函数补充匿名函数

    Python3 匿名函数 定义一个函数与变量的定义非常相似,对于有名函数,必须通过变量名访问 def func(x,y,z=1): return x+y+z print(func(1,2,3)) 匿名 ...

  7. shell 练习题1

    1.实现每次打开一个xx.sh时,自动添加注释信息 [root@chengyinwu ~]# cat .vimrc set ignorecase set nu set autoindent autoc ...

  8. JavaScript初探 二 (了解数据)

    JavaScript初探 (二) JavaScript 事件 HTML事件 HTML事件是可以在浏览器或用户做的某些事情 HTML事件的例子: HTML网页完成加载 HTML输入字段被修改 HTML按 ...

  9. JavaScript—图片与base64编码互相转换

    图片转换为base64编码 <input type = "file" id = "file" onchange="popFileName(thi ...

  10. 五分钟搞懂什么是B-树(全程图解)【转】

    前戏 我们大家都知道动态查找树能够提高查找效率,比如:二叉查找树,平衡二叉查找树,红黑树.他们查找效率的时间复杂度O(log2n),跟树的深度有关系,那么怎么样才能提高效率呢?当然最快捷的方式就是减少 ...