StackGAN: Text to Photo-realistic Image Synthesis with Stacked Generative Adversarial Networks 阅读笔记
Abstract
我们通过一个 粗糙-细化 过程将困难的问题分解成了可管理的子问题。Stage-I的GAN根据文字描述粗糙的生成了原始的形状和颜色,获得了Stage-I的低分辨率图片。Stage-II的GAN以Stage-I的结果图片和文字描述为输出,生成了带有逼真细节的高分辨率图片。它能够纠正Stage-I的缺陷并在精细过程中加一些很好的细节。为了改善合成影象的多样性并增加GAN训练的稳定性,作者引入了一种新的条件增强技术,鼓励平滑潜在的条件流形。
1.Introduction
生成高分辨率图片的难点在于,自然图片的分布和implied(隐含的?)模型在高维像素空间上不交叠。模仿人类画家的绘画方式,我们将文字生成图像这个难题分解成了两个更易于处理的子问题,就如摘要里所说(StackGAN)。Stage-II以Stage-I产生的结果和文字为输入,学到了Stage-I忽略的文字细节信息。从大致对齐aligned的低分辨率图像生成的模型分布 与图像分布 相交的可能性更高。这就是Stage II GAN能够生成更好的高分辨率图像的根本原因。
当text-image pairs少的时候(数据量少),会导致文字条件流形(text conditioning manifold)稀疏,并且训练困难。因此我们提出了一个新的 Conditioning Augmentation technique条件增强技术去鼓励latent conditioning manifold潜条件流形的平滑性。它允许条件流形中的随机扰动,并增加了合成图片的多样性。
贡献有三个:(1)StackGAN将难题分解成两个可控制的子问题,第一次生成了文字转图片的256×256分辨率的图片。(2)新的条件增强技术稳固了conditional GAN的训练并增加了生成样本的多样性。(3)大量的定性和定量实验以及消融实验,为未来的conditional GAN提供了有用的信息。

2. Related Work
但是训练的不稳定性使GAN模型很难生成高分辨率(例如256×256)图像。
条件图像生成。大多数方法利用简单的条件变量,例如属性或类标签。
除了使用单个GAN生成图像外,还有一些工作利用了一系列GAN来生成图像。
3. Stacked Generative Adversarial Networks
- Stage-I GAN:Stage-I的GAN根据文字描述粗糙的生成了原始的形状和颜色,并根据随机噪声向量画出了背景layout,获得了Stage-I的低分辨率图片。
- Stage-II GAN:Stage-II的GAN以Stage-I的结果图片和文字描述为输出,生成了带有逼真细节的高分辨率图片。它能够纠正Stage-I的缺陷并在精细过程中加一些很好的细节。

3.1. Preliminaries

这个是初始GAN,cGAN就是多了个变量c,G->G(z,c),D->D(x,c),是以c为条件的。
3.2. Conditioning Augmentation
如图2所示,文字描述t会被编码器生成一个embedding φt\varphi_tφt,但是这个φt\varphi_tφt的维度一般很高(>100),又由于数据量少,会导致隐数据流形的不连续性(discontinuity in the latent data manifold),那生成器肯定不想以这种条件变量为输入,为了缓解此问题,我们提出了条件增强技术以产生额外的条件变量c^\hat{c}c^。除了从文字描述中提取出来的固定条件变量c,我们又从高斯分布N(μ(φt),∑(φ))N(\mu(\varphi_t),\sum(\varphi))N(μ(φt),∑(φ))中随机采样了隐向量c^\hat{c}c^,其中均值μ(φt)\mu(\varphi_t)μ(φt)和对角协方差矩阵∑(φ)\sum(\varphi)∑(φ)是φt\varphi_tφt的函数。条件增强技术产生了更多的训练对,从而提升了对抗条件流形小扰动的鲁棒性。为了进一步强制条件流形的平滑性和避免过拟合,我们在训练过程中将以下正则化项添加到生成器的目标中:

即标准高斯分布和条件高斯分布的KL散度。条件增强技术的随机性增加了生成图像的多样性。
3.3. Stage-I GAN
生成目标的粗糙形状和正确的颜色。
文字描述的embedding φt\varphi_tφt 是由预训练好的编码器生成的。高斯条件变量c^0\hat{c}_0c^0是从N(μ0(φt),∑0(φ))N(\mu_0(\varphi_t),\sum_0(\varphi))N(μ0(φt),∑0(φ))中采样的,旨在捕获带有变化的φt\varphi_tφt的含义。以c^0\hat{c}_0c^0和随机变量z为条件,Stage-I GAN训练判别器D0D_0D0和生成器G0G_0G0,并最大化LD0L_{D_0}LD0和最小化LG0L_{G_0}LG0:

真实图片I0I_0I0和图片描述t来自真实数据分布pdatap_{data}pdata。z是从高斯分布pzp_zpz中随机选取的噪声向量。λ\lambdaλ是平衡公式4中两项的正则化参数,该论文中λ=1\lambda=1λ=1。μ0(φt),∑0(φ)\mu_0(\varphi_t),\sum_0(\varphi)μ0(φt),∑0(φ)和网络中的其余部分一起学习。
**Model Architecture.**对于生成器G0G_0G0,先将φt\varphi_tφt投喂进一个全连接层以获得μ0\mu_0μ0和σ0\sigma_0σ0(就是∑0\sum_0∑0),然后c^0\hat{c}_0c^0是从N(μ0(φt),∑0(φ))N(\mu_0(\varphi_t),\sum_0(\varphi))N(μ0(φt),∑0(φ))中采样。 NgN_gNg维度的c^0\hat{c}_0c^0 通过 c^0=μ0+σ0⨀ϵ\hat{c}_0=\mu_0+\sigma_0\bigodot \epsilonc^0=μ0+σ0⨀ϵ(其中⨀\bigodot⨀是按元素的乘积,ϵ\epsilonϵ~N(0,I))。然后 c^0\hat{c}_0c^0和一个NzN_zNz维度的噪声向量拼接,通过一系列的上采样块来生成一个W0×H0W_0 \times H_0W0×H0的图像。
对于判别器D0D_0D0,先用一个全连接层将φt\varphi_tφt压缩成NdN_dNd维,然后再空间复制到Md×Md×NdM_d\times M_d \times N_dMd×Md×Nd的向量。同时,图像被投入一系列的降采样块直到Md×MdM_d \times M_dMd×Md空间维度。然后,将图像过滤器映射(image filter map)沿着通道维度与文本张量连接在一起。 所得张量馈入1×11 \times 11×1卷积层,以共同学习图像和文本上的特征。 最后,具有一个节点的全连接层用于生成决策得分。
3.4. Stage-II GAN
以低分辨率结果s0=G0(z,c^0)s_0=G_0(z,\hat{c}_0)s0=G0(z,c^0)和高斯隐变量c^\hat{c}c^为条件,最大化LDL_DLD和最小化LGL_GLG:

不同于原始GAN的公式,随机噪声z没有用于此,其随机性已经被s0s_0s0保留了。高斯条件变量c^\hat{c}c^是用的于Stage-I中相同的编码器生成的,输入也是φt\varphi_tφt。但是Stage-I和Stage-II的条件增强有不同的全连接层,为了生成不同的均值和方差。这样的话,Stage-II GAN可以学到Stage-I GAN中忽略掉的有用信息。
**Model Architecture.**我们将Stage-II的生成器设计为带有残差块的编码-解码网络。类似于之前, NgN_gNg维度的c^\hat{c}c^由φt\varphi_tφt生成,然后空间复制成Mg×Mg×NgM_g\times M_g \times N_gMg×Mg×Ng张量。同时,Stage-I的结果s0s_0s0投入降采样块(即编码器)中直到空间大小为Mg×MgM_g \times M_gMg×Mg。图像特征和文字特征沿着通道维度拼接起来。编码后的图像特征与文本特征一起被馈送到几个残差块中,这些残差块旨在学习图像和文本特征之间的多模式表征。然后用一系列的上采样层(即解码器)来生成W×HW \times HW×H的高分辨率图像。这样的生成器能够帮助纠正输入图像中的缺陷,同时添加更多细节以生成逼真的高分辨率图像。
对于判别器,其结构类似于Stage-I的判别器,但是其具有额外的降采样块,因为在此阶段图像尺寸较大。 为了显式强制GAN将图像和条件文本之间有更好的对齐,我们在两个阶段都采用了Reed等人提出的matching-aware判别器。在训练期间,判别器将真实图像及其对应的文本描述作为正样本对,而负样本对则由两组组成。 第一组是真实图像和不匹配的文字embeddings,第二个是合成图像和对应的文本embeddings。
3.5. Implementation details
上采样块由nearest-neighbor上采样和随后的3×33 \times 33×3 stride 1 convolution组成。除最后一个卷积外,每次卷积后均应用批处理归一化BN和ReLU激活。残差块由3×33 \times 33×3 stride 1 convolution,批归一化BN和ReLU组成。在128×128 StackGAN模型中使用了两个残差块,而在256×256模型中使用了四个残差块。下采样块由4×44 \times 44×4 stride 2 convolution,批处理归一化和LeakyReLU组成,但第一个没有批处理归一化。
看原文吧。
4. Experiments
一是与当前的两个state-of-the-art算法做了比较。二是消融实验,探究自己提出的几个组件是否真的有用。(那肯定是有用)
4.1. Datasets and evaluation metrics
对数据做了预处理,对几个数据集做了介绍。
**Evaluation metrics.**我们采用了最近提出的一个 数值评估方法“inception score”来定量评估。

x是一个生成的样本,y是由Inception model预测的label。模型应该可以生成多样并具有意义的图像。所以,边际分布p(y)和条件分布p(y|x)的KL散度应该很大。
尽管inception score很有效,但是也无法很好的判断图像的生成质量,所以我们挑选了十个真人来客观判断。
4.2. Quantitative and qualitative results




从图5中可以看出,Stage-II确实可以改正Stage-I中的缺陷,并补充Stage-I忽略的细节。

重点是StackGAN并没有简单的记住了训练样例,而是捕获了复杂的底层 language-image 关系。如图6,我们可以得出结论,生成的图像与训练样本具有一些相似的特征,但是本质上是不同的。
4.3. Component analysis

**The design of StackGAN.**若将输出分辨率从256×256降到128×128,inception score会降低,故如果StackGAN只是增加图像大小而不添加额外的信息,其inception score会与小分辨率的分数一样。这也表明了我们的256×256的模型信息量和细节更多更丰富。

**Conditioning Augmentation.**根据表2和图7,我们可以看出CA提升了训练的稳定性,并增加了生成图像的多样性。
**Sentence embedding interpolation.**为了展示我们的模型学到了平滑的隐数据流形,我们对语句embedding做了插值,并从中生成图像,如图8。

5. Conclusions
与摘要类似。
个人总结:
- GAN生成的图片效果不好原因之一是,生成图像和自然图像在高维像素上不交叠。
- 作者模仿画家作画的步骤,将文字生成图像这个难题分为了两步走,一是先生成大致的形状和颜色,二是在一的基础上纠正错误和补充细节。
- 作者又提出了一种条件增强技术,不采用原始不变的条件,而是从原始条件的正态分布(用到了全连接层)上抽样,从而平滑了隐条件流形,提升了训练的稳定性,增加了生成图像的多样性。
本文介绍StackGAN,一种分两阶段生成高分辨率图像的方法。首先生成低分辨率图像轮廓,再细化生成高分辨率图像。引入条件增强技术提高训练稳定性和多样性。
389





