StackGAN 阅读笔记

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}_0 c^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}_0 c^0和随机变量z为条件,Stage-I GAN训练判别器 D 0 D_0 D0和生成器 G 0 G_0 G0,并最大化 L D 0 L_{D_0} LD0和最小化 L G 0 L_{G_0} LG0
在这里插入图片描述
真实图片 I 0 I_0 I0和图片描述t来自真实数据分布 p d a t a p_{data} pdata。z是从高斯分布 p z p_z pz中随机选取的噪声向量。 λ \lambda λ是平衡公式4中两项的正则化参数,该论文中 λ = 1 \lambda=1 λ=1 μ 0 ( φ t ) , ∑ 0 ( φ ) \mu_0(\varphi_t),\sum_0(\varphi) μ0(φt),0(φ)和网络中的其余部分一起学习。

**Model Architecture.**对于生成器 G 0 G_0 G0,先将 φ t \varphi_t φt投喂进一个全连接层以获得 μ 0 \mu_0 μ0 σ 0 \sigma_0 σ0(就是 ∑ 0 \sum_0 0),然后 c ^ 0 \hat{c}_0 c^0是从 N ( μ 0 ( φ t ) , ∑ 0 ( φ ) ) N(\mu_0(\varphi_t),\sum_0(\varphi)) N(μ0(φt),0(φ))中采样。 N g N_g Ng维度的 c ^ 0 \hat{c}_0 c^0 通过 c ^ 0 = μ 0 + σ 0 ⨀ ϵ \hat{c}_0=\mu_0+\sigma_0\bigodot \epsilon c^0=μ0+σ0ϵ(其中 ⨀ \bigodot 是按元素的乘积, ϵ \epsilon ϵ~N(0,I))。然后 c ^ 0 \hat{c}_0 c^0和一个 N z N_z Nz维度的噪声向量拼接,通过一系列的上采样块来生成一个 W 0 × H 0 W_0 \times H_0 W0×H0的图像。

对于判别器 D 0 D_0 D0,先用一个全连接层将 φ t \varphi_t φt压缩成 N d N_d Nd维,然后再空间复制到 M d × M d × N d M_d\times M_d \times N_d Md×Md×Nd的向量。同时,图像被投入一系列的降采样块直到 M d × M d M_d \times M_d Md×Md空间维度。然后,将图像过滤器映射(image filter map)沿着通道维度与文本张量连接在一起。 所得张量馈入 1 × 1 1 \times 1 1×1卷积层,以共同学习图像和文本上的特征。 最后,具有一个节点的全连接层用于生成决策得分。

3.4. Stage-II GAN

以低分辨率结果 s 0 = G 0 ( z , c ^ 0 ) s_0=G_0(z,\hat{c}_0) s0=G0(z,c^0)和高斯隐变量 c ^ \hat{c} c^为条件,最大化 L D L_D LD和最小化 L G L_G LG
在这里插入图片描述
不同于原始GAN的公式,随机噪声z没有用于此,其随机性已经被 s 0 s_0 s0保留了。高斯条件变量 c ^ \hat{c} c^是用的于Stage-I中相同的编码器生成的,输入也是 φ t \varphi_t φt。但是Stage-I和Stage-II的条件增强有不同的全连接层,为了生成不同的均值和方差。这样的话,Stage-II GAN可以学到Stage-I GAN中忽略掉的有用信息。

**Model Architecture.**我们将Stage-II的生成器设计为带有残差块的编码-解码网络。类似于之前, N g N_g Ng维度的 c ^ \hat{c} c^ φ t \varphi_t φt生成,然后空间复制成 M g × M g × N g M_g\times M_g \times N_g Mg×Mg×Ng张量。同时,Stage-I的结果 s 0 s_0 s0投入降采样块(即编码器)中直到空间大小为 M g × M g M_g \times M_g Mg×Mg。图像特征和文字特征沿着通道维度拼接起来。编码后的图像特征与文本特征一起被馈送到几个残差块中,这些残差块旨在学习图像和文本特征之间的多模式表征。然后用一系列的上采样层(即解码器)来生成 W × H W \times H W×H的高分辨率图像。这样的生成器能够帮助纠正输入图像中的缺陷,同时添加更多细节以生成逼真的高分辨率图像。

对于判别器,其结构类似于Stage-I的判别器,但是其具有额外的降采样块,因为在此阶段图像尺寸较大。 为了显式强制GAN将图像和条件文本之间有更好的对齐,我们在两个阶段都采用了Reed等人提出的matching-aware判别器。在训练期间,判别器将真实图像及其对应的文本描述作为正样本对,而负样本对则由两组组成。 第一组是真实图像和不匹配的文字embeddings,第二个是合成图像和对应的文本embeddings。

3.5. Implementation details

上采样块由nearest-neighbor上采样和随后的 3 × 3 3 \times 3 3×3 stride 1 convolution组成。除最后一个卷积外,每次卷积后均应用批处理归一化BN和ReLU激活。残差块由 3 × 3 3 \times 3 3×3 stride 1 convolution,批归一化BN和ReLU组成。在128×128 StackGAN模型中使用了两个残差块,而在256×256模型中使用了四个残差块。下采样块由 4 × 4 4 \times 4 4×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生成的图片效果不好原因之一是,生成图像和自然图像在高维像素上不交叠。
  • 作者模仿画家作画的步骤,将文字生成图像这个难题分为了两步走,一是先生成大致的形状和颜色,二是在一的基础上纠正错误和补充细节。
  • 作者又提出了一种条件增强技术,不采用原始不变的条件,而是从原始条件的正态分布(用到了全连接层)上抽样,从而平滑了隐条件流形,提升了训练的稳定性,增加了生成图像的多样性。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值