@[TOC](An Introduction to Image Synthesis with Generative Adversarial Nets生成对抗网图像合成简介)
这是一篇用GAN做文本生成图像(Text to Image、T2I)的综述阅读报告。
综述名为:《An Introduction to Image Synthesis with Generative Adversarial Nets》,发表于2018年,其围绕的主题是用GAN做图像合成,分为两个部分text to image和 image to image,这里仅讨论text to image 部分。
本文是阅读这篇文章text to image 部分的阅读报告。
一、摘要
在过去的几年里,关于生成性对抗网络(GAN)的研究急剧增长。GAN于2014年提出,已应用于计算机视觉和自然语言处理等各种应用,并取得了令人印象深刻的性能。在GAN的众多应用中,图像合成是研究最为深入的一个,该领域的研究已经显示了GAN在图像合成中的巨大潜力。在本文中,我们对图像合成中使用的方法进行了分类,回顾了文本到图像合成和图像到图像翻译的不同模型,并讨论了一些评价指标以及GAN图像合成中可能的未来研究方向。
二、关键词
Deep Learning, Generative Adversarial Nets, Image Synthesis, Computer Vision
三、主要内容
3.1 GAN的研究路线
关于GAN的研究有两条主线。一个是试图缓解GAN的不稳定性和模式崩溃问题的理论线索,或者从信息论和基于能量的模型等不同角度对其进行重新表述。另一个主题关注GAN在计算机视觉(CV)、自然语言处理(NLP)和其他领域的应用。
3.2 GAN的基本原理
GAN框架图:
在这里插入图片描述
GAN损失函数:
在这里插入图片描述
3.3附加辅助分类器的GAN
带辅助分类器(Auxiliary Classifier)的GAN框架图:
在这里插入图片描述
3.4附加编码器的GAN
因为GAN缺乏将数据映射为潜在特征的能力。在原始GAN框架中,加入了一个Encoder(E),Encoder编码器通过把数据x转换成特征E(x),一起输入到D(x)中。
附加编码器的GAN框架图:
在这里插入图片描述
附加编码器的GAN损失函数:
在这里插入图片描述
3.5附加变分自编码器(VAE)的GAN
GAN可以生成清晰图像但是往往错过一些模式,而VAE生成的图像模糊,但种类多,将VAE与GAN组合起来,即VAE+GAN:
encoder的作用是编码,也就是将输入的图片image1转换成向量vector decoder的作用是解码,也就是将向量vector转换成图片image2
其中,image1和image2要尽量相同,原因是我们希望对同一个东西进行编解码后的产物仍然是自己。
GAN:包含generator和discriminator
generator:就是VAE的decoder,将向量vector转化为image
discriminator: 评判generator产生的image是realistic还是fake,给出一个scalar
在这里插入图片描述
在这里插入图片描述
3.6模式崩溃
模式崩溃:GAN产生的样本单一,例子数据集MNIST包括0-9,在极端情况下,生成器只需学习完美地生成十个数字中的一个,以完全愚弄鉴别器,然后生成器停止尝试生成其他九个数字。即每个数字都有许多书写样式,但生成器只学习为每个数字生成一个完美样本,以成功愚弄鉴别器。
解决:
minibatch features:这样可以让鉴别器在小尺度上通过选定的distance衡量两个生成的样本是不是太像了,但存在的问题是这个方法的实际表现很依赖于选取的feature。
MRGAN:提出添加一个编码器,将数据空间中的样本转回潜在空间
WGAN:用Wasserstein distance代替Jensen-Shannon divergence,理论上避免了mode collapse,但训练要更慢
WGAN-GP:用梯度惩罚gradient penalty代替weight clip
3.7GAN的一般框架
在这里插入图片描述
Direct Methods:传统一个生成器一个鉴别器:GAN、DCGAN、ImporvedGAN、InfoGAN、f-GAN、GAN-INT-CLS;
Hierarchical Methods: 两个生成器和两个鉴别器,每组的GAN内核不同,不同的生成器有不同的用途。方法背后的思想是将图像分为两部分,如“样式&结构”和“前景&背景”,两个生成器既可以串行也可以并行。例子:SSGAN将Structure-GAN和Style-GAN结合,取得不错成果,LR-GAN选择使用不同的生成器生成前景和背景内容,但仅使用一个鉴别器来判断图像,LR-GAN的实验表明,分离前景和背景内容的生成并生成更清晰的图像是可能的。
Iterative Methods:多个生成器和鉴别器,每组G的结构是相似的甚至是相同的。这些G从粗糙到细致逐渐产生出最后的输出图像。不同的G之间还可以参数共享。LAPGAN第一个使用iterative methods的GAN网络。除了第一个G只接收噪声输入外,其他的G都接收一个噪声输入和上一个G生成的图像,最后一个G输出生成的结果。这种方法可以比direct method构建出更加细节的图像。StackGAN使用两层G,第一层G接收z和c输出一个比较模糊的图,第二层G接收z,c还有上一层产生的图片,输出一个更大的、细节更加丰富的图片。
Other Methods: PPGN使用激活最大化来生成图像,它基于使用去噪自动编码器(DAE)的事先学习的采样,PPGN运行一个优化过程,在生成器中找到一个输入,使输出图像高度激活另一个预训练分类器中的某个神经元,ProgressiveGAN从训练4×4像素的发生器和鉴别器开始,然后逐渐增加额外的层,使输出分辨率加倍,达到1024×1024。
3.8 文本生成图像的发展
GAN-INT-CLS:第一个尝试使用GAN进行text-to-image。类似于conditionalGAN,G输入一个图片和编码后的语义,G与DCGAN的G结构相同。D中,text embedding向量会先被转换成[W x H x K] 的张量(K是text embedding的长度)。而后这个张量会和图像的特征张量[W x H x C]组合成一个新的张量[W x H x (K+C)]。而后这个张量会通过D后面的网络层。这样操作的目的是使的每个pixel都具有text的全部信息。manifold interpolation(流形插值):可以使得模型能够学得训练集中没有的可能的文本描述。GAN-INT-CLS还提出区分两种错误来源:带有任何文本的不切实际图像和带有不匹配文本的真实图像。为了训练鉴别器区分这两种错误,在每个训练步骤中,将三种类型的输入-输入鉴别器:{真实图像,正确文本},{真实图像,错误文本}和{假图像,正确文本}。这种技术不仅告诉模型如何生成真实的图像,而且告诉模型文本和图像之间的对应关系。之后的TAC-GAN是GAN-INT-CLS和AC-GAN的组合
带位置约束的文本生成图像:GAN-INT-CLS和StackGAN无法捕获对象的定位约束,GAWWN中提出的第一种方法:生成器通过边界框对对象的位置提供了约束,通过边界框裁剪,边界框外面的赋值为0。鉴别器将文本嵌入向量通过空间复制成M x M x T的特征图。同时图片经过本地和全局操作处理。在本地操作中图片经过步幅为2的卷积下采样操作成M x M的特征图与文本嵌入向量复制后的特征图相结合,又经过边界框的裁剪后,经过卷积操作后称为1 x 1的向量。而全局操作则是经过简单的下采样操作又与文本嵌入向量结合后。最后本地和全局操作后的两个输出向量经过处理后得到判别分。提出第二种方法:人工标出关键点,使用用户指定的关键点来约束图像中对象的不同部分(例如头部、腿部、手臂、尾部等),对于每个关键点,生成一个掩码矩阵,其中关键点位置为1,其他位置为0。机器可以根据一些人标注的keypoints来推断其他没被观察到的keypoints,但仍然需要很多额外的人工。但是GAWWN只能对单个对象的图像有效。
带Stack的文本生成图像:StackGAN使用两个不同的生成器进行文本到图像的合成,而不是只使用一个生成器。第一个生成器负责生成包含对象的粗糙形状和颜色的低分辨率图像,而第二个生成器接收第一个生成器的输出并生成具有更高分辨率和更清晰细节的图像。 StackGAN++使用更多的生成器和鉴别器对,而不是只有两个。AttnGAN是StackGAN++的扩展,每个句子都嵌入到一个全局句子向量中,句子中的每个单词也嵌入到一个单词向量中,第一阶段,使用全局句子向量生成低分辨率图像,然后,第二阶段使用前一阶段的输入图像特征和单词向量作为注意层的输入,并计算单词上下文向量,该向量将与图像特征相结合,并形成将生成新图像特征的生成器的输入。此外其还提出了一个深度注意多模态相似模型(DAMSM),该模型使用注意层计算图像和文本之间的相似性,同时使用全局句子向量和细粒度单词向量,这为训练生成器提供了额外的细粒度图像文本匹配损失
带迭代采样的文本生成图像:PPGN提出使用激活最大化方法以迭代采样方式生成图像。该模型包含两个独立的部分:预训练图像字幕模型和图像生成器。通过近似Langevin采样方法,使用马尔可夫链来产生图像。 Langevin采样器的梯度通过使用一个降噪的(denoising) 自动编码器来估计。 这个降噪自动编码器使用几个损失函数来进行训练,其中包含一个GAN的损失。
文本生成图像模型目前的局限性(2018):在只有一个对象的数据集上表现良好,在涉及多个复杂对象情况下不能很好工作,因为模型一般仅能学习图像的总体特征,不能学习到其中每种对象的具体特征,它看到的只是一些形状和颜色的图案应该放在合成图像的某个地方。换句话说,模型并不真正理解图像,只记得在哪里放置一些形状和颜色
我们需要找到新的方法来教模型理解事物的概念。一种可能的方法是训练可以生成不同类型对象的单独模型,然后训练另一个模型,学习如何根据文本描述将不同对象(即对象之间的合理关系)组合成一幅图像。然而,这种方法需要针对不同对象的大型训练集,以及另一个包含这些不同对象的图像的大型数据集,这是很难获得的。另一个可能的方向可能是利用Hinton等人提出的囊思想,因为囊的设计是为了捕捉对象的概念,但如何有效地训练这种基于囊的网络仍然是一个有待解决的问题。
3.9 图像合成的度量指标
一个常用的主观指标是使用AMT,它雇用人类根据他们认为图像的真实程度对合成图像和真实图像进行评分。然而,人们往往对什么是好的或坏的有不同的看法,因此我们也需要客观的指标来评估图像的质量。
Inception score(IS):在将图像放入预先训练的图像分类器时,基于熵对图像进行评估。图像质量越好,条件分布p(y|x)的熵应该越低,图像多样性越好,边际分布p(y)=∫p(y | x=G(z))dz的熵应该越高,IS得分体现两熵的差值。
FCN-SCORE:采用的概念是:如果合成图像真实,则在真实图像上训练的分类器将能够正确地对合成图像进行分类。
FID-SCORE: 首先,将生成的图像嵌入到初始网络选定层的潜在特征空间中。其次,将生成图像和真实图像的嵌入作为两个连续的多元高斯分布的样本处理,以便计算它们的均值和协方差。然后,生成的图像的质量可以由两个高斯之间的Frechet距离来确定。 其中(µx,µg)和(∑x,∑g)分别是来自真实数据分布和生成器的学习分布的样本的均值和协方差。FID与人类的判断是一致的,并且FID与生成图像的质量之间存在强烈的负相关。此外,FID对噪声的敏感度较低,可以检测类内模式崩溃。
初始分数IS是定量评估合成图像最广泛采用的指标,FID也被证明更为合适。
在这里插入图片描述
3.10其他
鉴别器作为一个学习损失函数对一般人工智能具有重要意义。传统的模式识别和机器学习要求我们定义要使用的特征,我们设计特定的损失函数并决定要应用的优化方法。深度学习使我们从精心设计的功能中解脱出来,通过在培训期间学习低层次和高层次的功能表示(例如CNN内核),但我们仍然需要努力设计工作良好的损失函数。GAN让我们在迈向人工智能的道路上向前迈出了一步,因为它学会了如何评估数据样本,而不是被告知如何评估,尽管我们仍然需要设计对抗性损失,并将其与其他辅助损失相结合。