hello~小李终于在月底要更新了!前阵子忙着做专业英语的作业…就一直拖着不想更新…最近为了组合又要开始写论文笔记了!
论文名称:
《StackGAN: Text to Photo-realistic Image Synthesis with Stacked GAN》
论文地址:https://arxiv.org/pdf/1612.03242.pdf
论文翻译:https://blog.csdn.net/u014625530/article/details/82964796
论文代码:https://github.com/hanzhanggit/StackGAN-Pytorch
代码解析:https://zhuanlan.zhihu.com/p/33692779
本篇文章只记录个人阅读论文的笔记,具体翻译、代码等不展开,详细可见上述的连接。
Background
Task(what to do):
Synthesizing high-quality images from text descriptions 通俗来说,就是一个把文本描述转换为图像(text-to-image)的过程,问题涉及计算机视觉、自然语言处理的领域。
Challenges:
a.existing text to image approaches can roughly reflect the meaning of the given descriptions and fail to contain necessary detailsand vivid object parts.也就是说,现有的文本-图像方法生成的样本仅仅只可以粗略地反映给定描述的含义,但是往往不包含必要的细节和物体生动的部分,细节缺失是重要的问题之一。
b. it is very difficult to train GAN to generate high-resolution photo-realistic images from text descriptions.对于现有模型GAN来说,要实现高分辨率并不容易,首先,简单的在GAN模型中添加更多的上采样层用于生成高分辨率图像(例如,256×256)的方法通常导致训练不稳定并产生无意义的输出,如下图所示:除此,GAN 生成高维图片的主要问题在于,自然图像分布与模型分布在高维空间上几乎不交叠。当要生成的图像分辨率增大时,该问题更加明显。
Some Methods:
a.变分自动编码器(VAE)提出了以最大化数据似然的下限为目标的概率图模型。
b.利用神经网络模拟像素空间的条件分布的自回归模型(例如PixelRNN)c.生成对抗网络(GAN)[已经显示出有希望生成清晰图像的性能。但是训练的不稳定性使得GAN模型很难生成高分辨率图像,基于能量的 GAN( energy-based GAN)也被提出用于更稳定的训练行为.
c.超分辨率方法(super-resolution methods)只能为低分辨率图像添加有限的细节。ansimov等通过学习估计文本和生成图像之间的对应的AlignDRAW模型。Reed等使用条件 PixelCNN 来使用文本描述和对象位置约束来生成图像。Nguyen等人使用近似 Langevin 抽样的方法来生成。
d.……具体可见译文,这里不做具体展开。
Work
Do(How to do?)
(1) We propose a novel Stacked Generative Adversarial Networks for synthesizing photo-realistic images from text descriptions. It decomposes the difficult problem of generating high-resolution images into more manageable subproblems and significantly improve the state of the art. The StackGAN for the first time generates images of 256×256 resolution with photo-realistic details from text descriptions.
(2) A new Conditioning Augmentation technique is proposed to stabilize the conditional GAN training and also improves the diversity of the generated samples.
(3) Extensive qualitative and quantitative experiments demonstrate the effectiveness of the overall model design as well as the effects of individual components, which provide useful information for designing future conditional GAN models.
简单来说即:
1.提出了一种新的叠加生成对抗网络(stackgan),用于从文本描述中合成照片般逼真的图像。它将生成高分辨率图像的困难问题分解为更多可管理的子问题-----解决细节缺失问题,分辨率变高。
2.提出了一种新的条件增强技术(CA)来稳定条件GAN的训练,同时也提高了条件GAN训练的多样性。
3.广泛的定性和定量实验证明整体模型设计的有效及单个组件的效果。Model
接下来详细看一下模型,如下图
整个模型分为两个阶段:
a.stack-I 第一阶段:勾画出在给定的文字描述上条件化的对象的原始形状和基本颜色,并从随机噪声向量中绘制背景布局,产生低分辨率图像。
b.stack-II 第二阶段:修正了第一阶段的低分辨率图像中的缺陷,并通过再次读取文字描述来完成对象的细节,从而产生高分辨率的照片般逼真的图像。现在先讲述一下条件增加技术(CA)再接着更好的详解第一二阶段。
条件增强技术(CA)
Why?:
对于 text-to-image 生成任务,text-image 训练数据对数量有限,这将导致文本条件多样性的稀疏性(sparsity in the text conditioning manifold),而这种稀疏性使得 GAN 很难训练。因此,我们提出了一种新颖的条件增强技术(Conditioning Augmentation technique) 来改善生成图像的多样性,并稳定 conditional-GAN 的训练过程,这使得隐含条件分布更加平滑 (encourages smoothness in the latent conditioning manifold)。
How?
首先,文本描述 t首先由编码器编码,产生文本embedding 。
文本嵌入是非线性的转化为潜在条件变量作为生成器的输入。但是,文字的潜在空间的embedding通常是高维的(>100维),在数据量有限的情况下通常会导致潜在的数据流形的不连续,这是不可取的生成模型学习方法。为了缓解这个问题,作者引入条件增强技术来产生额外的条件变量 ,这边的条件变量不是固定的而是作者从独立的高斯分布随机地采样的。其中平均值 和对角协方差矩阵 是文本embedding的函数。
条件增强在少量图像-文本对的情况下产生更多的训练数据,并有助于对条件流形的小扰动具有鲁棒性。为了进一步强化条件流形的平滑性并避免过拟合,作者在训练过程中将以下正则化项添加到生成器的目标中:
这是标准高斯分布和条件高斯分布之间的LK散度。 在条件增强中引入的随机性有利于对文本进行图像翻译建模,因为相同的句子通常对应于具有各种姿势和外观的对象。Stack-I 第一阶段详解:
第一层GAN被用来简化任务,以便首先生成低分辨率的图像,这样的工作重点仅在于绘制粗糙的形状并为对象赋予正确的颜色.
过程详解:文本描述首先由一个预先训练的编码器,产生embedding,文本embedding的高斯调节变量 来自 ,使得文本描述有多样性。第一层GAN以 和随机变量 为条件,通过交替地最大化和最小化 ,来训练判别器 和生成器 。其中真实图像 和文本描述 来自真实数据分布 z 是从给定分布 (本文中是高斯分布)随机采样的噪声向量。 是一个正则化参数,可以平衡方程 (4)中的两项。此处设定λ= 1。 和 都是从神经网络的其余部分学习得到的。
对于生成器 ,为了获得文本调节变量 文本的embedding 是首先被馈送到完全连接的层中以产生高斯分布的 和 ( 是 的对角线中的值)。 然后从高斯分布中取样。 维条件矢量 通过 计算(其中 ⊙ 是元素乘法,ϵ∼N(0,I) )。然后, 与一个 维噪声矢量拼接,通过一系列的上采样块生成一副的图像。
对于判别器 ,文本的embedding ,首先被全连接层压缩到 尺寸,随后进行空间性重复,形成一个 的张量。同时,图像通过一系列的下采样块,直到它具有 $ M_d×M_d空间维度。然后,图像滤波器沿着信道维度与文本张量拼接。 由此产生的张量进一步馈送到1×1的卷积层以在图像和文本上共同学习特征。最后,使用一个节点的全连接层来产生决策分数。stack-II 第二阶段详解:
Stage-I 阶段生成的低分辨率图像通常缺乏鲜明的目标特征,并且可能包含一些变形。同时,文本描述中的部分信息可能也未体现出来。所以,通过 Stage-II 可以在 Stage-I 生成的低分辨率图像和文本描述的基础上,生成高分辨率图片,其修正了 Stage-I的缺陷,并完善了被忽略的文本信息细节。
以低分辨率的结果 和高斯分布的隐变量 为条件,生成器 G 和判别器 D在第二层GAN中被训练以最大化和最小化
与原来的GAN公式不同的是,随机噪声 z 在这个阶段没有被使用,而是假设随机性已经被 保存了。在这个阶段使用的高斯条件变量 和在第一阶段GAN使用的 共享相同的预先训练的文本编码器,生成相同的文本嵌入 。但第一层和第二层的条件增强不同的全连接层,用于产生不同的均值和标准偏差。通过这种方式,第二层GAN学习捕获第一层GAN所忽略的文本embedding中的有用信息。
第二层生成器是一个带有残余块的编码器-解码器网络。类似于前一阶段,文本的embedding 被用来生成 维空间的文本调节向量 这是在空间中重复所形成的一个 的张量。同时,第一层GAN产生的结果被送入几个下采样块(即编码器),直到它具有 的空间尺寸。图像特征和文本特征沿着通道的维度被拼接。编码的图像特征加上文本特征被馈送到多个残差块,其被设计成学习跨图像和文本特征的多模式表示。 最后是一系列的上采样层(即解码器)被用来生成一个高分辨率图片。这种生成器能够帮助纠正输入图像的缺陷,同时添加更多细节来生成逼真的高分辨率图像。
对于判别器而言,其结构与仅具有额外的下采样块第一阶段判别器的结构类似,因为在此阶段图像尺寸较大。为了明确强制GAN学习图像和条件文本之间的更好的对应,作者采用了Reed等人提出的匹配感知判别器 在训练期间,判别器将真实图像及其对应的文本描述作为正样本对,而负样本对包括两组:首先是真实的图像与不匹配的文本嵌入,而第二个是合成图像与相应的文本的embedding。
Experiment
进入实验部分
Detail:
上采样网络由 nearest-neighbor上采样组成。上采样后,接一个 3X3,步长为 1 的卷积层。除了最后一层卷积层之外,其余各卷积层后面均接上 batch normalization 层以及 ReLU 层激活函数。
默认情况下, Ng = 128, Nz = 100, Mg = 16, Md = 4, Nd = 128, W0 = H0 = 64 and W = H = 256.首先用六百个周期迭代训练第一阶段GAN的 D和 G 然后,用另外六百个周期迭代地训练第二阶段GAN的 D和 G,来修正第一层GAN的结果。所有网络都使用ADAM进行训练,求解器的批量大小为64,初始学习率为0.0002。学习率每100个周期衰减到先前值的1/2。
实验设计:
定量和定性评估:本文的方法与两种最先进的文本到图像合成方法:GAN-INT-CLS 和GAWWN相比较。两种比较方法所使用的数据是由他们发布的代码生成的。另外,作者设计了几个baseline模型来研究所提出StackGAN的总体设计和重要组成部分。
数据集:
CUB 数据集包含 200 种鸟类,共 11788 张图片。其中,80% 的图片目标尺寸只占据图像的面积不到 0.5。所以,需要进行 crop 预处理,使之大于 0.75。Oxford-102 包含 8189 张图片,共 102 类花。同时为了保证泛化性能,还尝试了 MS COCO 数据集,其包含多目标以及不同背景。MS COCO 有 40K 的图像。其中,每张图片对应 5 个描述信息。而 CUB 和 Oxford-102 数据集每张图片对应 10 个信息.
评价指标
Inception Score
其中 x 表示一个生成的样本, y 是由Inception模型预测的标签]。 这个指标背后的含义是好的模型应该产生多样但有意义的图像。因此,边际分布 p(y) 和条件分布 p(y∣x) 之间的KL散度应该很大。(为什么会很大?主要是二者分布的分布原因。详细解析见:全面解析Inception Score原理及其局限性)
尽管Inception Score与人类对样本视觉质量的感知有很好的相关性,但它并不能反映所生成的图像是否与给定的文本描述有很好的对应关系。所以作者也进行了人类用户评估。作者随机选择50个 CUB 和 Oxford-102 测试集的文本描述,对于COCO数据集,从其验证集中随机选择4k个文本描述。对于每个句子,每个模型生成5个图像。在给出相同的文本描述的情况下,要求10个用户(不包括任何作者)通过不同的方法对结果进行排名。 计算人类用户的平均等级以评估所有比较的方法。实验结果:
模型的对比:StackGAN实现了最好的Inception Score和与其他几个模型差不多的真人评分。与GAN-INT-CLS 相比,StackGAN在CUB数据集上的初始得分提高了 28.47%(从 2.88 到 3.70 ),在Oxford-102 (从2.66至3.20) 提高了 20.30%。Stack-GAN的较好的人类评价排名也表明,所提出的方法能够基于条件文本描述产生接近现实的样本。
不同阶段(组件)分析:
1.堆叠:如果直接使用第一阶段的GAN生成图像,则初始分数显著下降。第一阶段的GAN在不使用条件增强(CA)的情况下没有产生任何合理的256×256样本。虽然带有CA的第一阶段GAN能够产生更多样化的256×256样本,但这些样本不如StackGAN生成的样本逼真。这表明了所提出的堆叠结构的必要性。
2.条件增强:没有CA,第一阶段的GAN不能产生合理的256×256采样。尽管每个列使用不同的噪声向量 z ,但是对于每个输入文本描述,所生成的样本崩溃成了一样的东西。(图中鸟的第2-3行)固定了噪声矢量 z ,方法能够产生具有不同姿势和视角的鸟。
3.二次文本描述: 对于256×256的StackGAN,如果文本只输入到Stage-I(表示为“no Text twice”),则Inception Score从3.70下降到3.45。 这表明在第二阶段再次处理文本描述有助于完善第一阶段的结果。从128×128的StackGAN的结果可以得出同样的结论。
4.增加细节:另外,通过将输出分辨率从256×256降低到128×128,Inception Score从3.70降低到3.35。在计算Inception Score之前,所有图像都会缩放到299×299。因此,如果StackGAN没有增加更多信息却增加图像大小,对于不同分辨率的样本,Inception Score将保持不变。所以Inception Score降低表明256×256的StackGAN确实在更大的图像中增加了更多细节。
句子embedding的插值: 为了进一步证明StackGAN学习了一个平滑的潜在数据流形,作者使用它来从线性内插的句子embedding中生成图像,如上图所示。我们令噪声矢量为 z,生成的图像是从给定的文字描述中推断出来的。 第一行的图像是通过制作的简单句子来合成的。这些句子只包含简单的颜色描述。结果表明,从插值嵌入生成的图像可以准确地反映颜色的变化,并生成似是而非的鸟的形状。第二行说明从更复杂的句子中产生的样本,其中包含更多关于鸟类出现的细节。生成的图像将其主要颜色从红色更改为蓝色,并将翼色从黑色更改为棕色。
Conclusion
本文提出了 Stacking Generative Adversar-ial Networks(StackGAN),其中使用了条件增强来合成相片逼真的图像。 所提出的方法将文本到图像合成分解成两步:草图-细化过程。第一阶段的GAN根据给定文字描述的基本颜色和形状约束绘制对象。第二阶段的GAN纠正了第一阶段结果中的缺陷并增加了更多细节,从而产生更高分辨率的图像并获得更好的图像质量。广泛的定量和定性结果证明了所提出的方法的有效性。与现有的文字到图片生成模型相比,Stack GAN生成更高分辨率的图像(如256×256),并具有更逼真的细节和多样性。
一点启发:把大的问题进行分解多部来完成,加以条件逐步细化。
so tired!终于记录完了!友情搬运链接见开头。