重磅突破:从36.8到52.52,引入自我注意力模块的SAGAN

重磅突破:从36.8到52.52,引入自我注意力模块的SAGAN

注:本文一作是StackGAN的一作Zhang Han,他的博士生导师Dimitris Metaxas和GAN之父Ian Goodfellow、Google Brain的Augustus Odena也参与了研究。

摘要

这篇论文提出了一种自我注意力生成对抗网络(SAGAN),它能针对图像生成任务建立一个由注意力驱动的、具备广域依赖性(long-range dependency,类比NLP中的长期依赖)的模型。在过去,传统卷积GAN生成高分辨率图像的方法是对低层级特征图上的局部点做函数计算,但SAGAN可以使用来自所有特征位置的信息生成图像细节,同时保证判别器能鉴别距离较远的两个特征之间的一致性。

此外,近期的一些研究表明,生成器会影响GAN的整体性能。所以SAGAN在生成器中引入谱归一化(Special Normalization)的思想,并以此提高了模型训练的稳定性。SAGAN取得的成果是state-of-art的,它在ImageNet数据集上把Inception Score初始分数从原记录的36.8提高到了52.52,并把FID(Fréchet Inception Distance)从27.62降到了18.65。通过可视化注意力层,我们发现生成器利用的是与对象形状相对应的邻域,而不是固定形状的局部区域。

传统GAN的问题

图像生成是计算机视觉领域的一个重要问题。自GAN提出以来,研究人员已经做出了许多突破性成果,并证明了CNN在图像生成上的成功应用。但这些GAN都有一个缺点,就是在包含多类图像的大型数据集上训练后,它们无法明确区分图像类别,难以捕捉到这些图像的结构、质地、细节等,因此我们不能用一个GAN生成大量类别不一的高质量图像。

例如非常先进的ImageNet GAN模型cGAN,它只需一些简单的结构特征就能生成各类图像,如下图所示,它在生成毛发质地上表现出色,但还是没法描绘出动物腿部的清晰轮廓。

重磅突破:从36.8到52.52,引入自我注意力模块的SAGAN

cGAN

对此,Zhang Han等人提出的一种可能的解释是,以前的模型在很大程度上依赖卷积操作模拟图像不同区域之间的依赖关系。每个卷积操作都有一个局部感受野(receptive field),而特征之间的远距离相关性往往要经过数个卷积层才会显现出来,这就为学习长期依赖带来了困难:

  • 如果模型过小,它可能无法学习相关性;

  • 优化算法在调参时要仔细协调多层信息,实现难度大;

  • 即便调出最佳参数,如果输入模型从没见过的图像,模型的输出很可能会很糟糕。

另一方面,虽然增加卷积核大小(感受野大小)可以保留更多表示,但这是以牺牲效率和计算量为代价的。相比之下,自我注意力模型能兼顾模拟远距离依赖、效率和计算量这三个方面,是一种更合适的选择。

SAGAN的具体做法

SAGAN的相关研究(Related Work)很简单明了,就是GAN和注意力模型。对于这两个非常火的概念,作者在论文中没有多加叙述,论智也相信各位读者能从其他地方找到更专业的介绍。

重磅突破:从36.8到52.52,引入自我注意力模块的SAGAN

如上图所示,SAGAN不是通过固定形状的局部区域来生成图像,而是利用图像较远部分的互补特征生成一致的对象/场景。每一行第一副图上的彩色点表示查询位置,之后几幅图是其相对应的注意力图(attention map),图中箭头表示“最受关注”的区域。

那么它背后的数学原理是什么?

大多数基于GAN的图像生成模型都依赖卷积操作,但它只适合处理邻域信息,在计算远距离特征上效率很低。为了使发生器和鉴别器能更高效地建模更广泛空间内的特征关系,论文作者借鉴了王小龙等人提出的Non-local Neural Networks,后者关注的是如何建立起图像上两个有一定距离的像素之间的联系。

重磅突破:从36.8到52.52,引入自我注意力模块的SAGAN

重磅突破:从36.8到52.52,引入自我注意力模块的SAGAN

SAGAN中的自我注意力模块:⊗表示矩阵乘法,每一行都用Softmax归一化

两者结构基本一致。

  • x ∈ lRC×N,表示前一个隐藏层中的图像特征;

  • f(x) = Wfx,g(x) = Wgx,表示图像特征乘上不同权重矩阵后得到的两个特征空间;

重磅突破:从36.8到52.52,引入自我注意力模块的SAGAN

  • βj,i,是f(x)⊗g(x)经softmax后的结果,表示模型合成j区域图像内容时i区域的参与程度,即相关性;

重磅突破:从36.8到52.52,引入自我注意力模块的SAGAN

  • 把全局空间信息和局部信息整合到一起,其中o = (o1, o2, …, oj , …, oN ) ∈ lRC×N。

重磅突破:从36.8到52.52,引入自我注意力模块的SAGAN

  • 注意力层的最终输出。为了兼顾邻域信息和远距离特征相关性,这里他们引入了一个参数γ,它从0开始初始化,为的是让网络首先关注邻域信息——比较简单——之后在慢慢把权重分配到其他远距离特征上。

简而言之,卷积操作的感受野是有限的,虽然我们可以通过filter叠加扩大感受野,但那样做得不偿失。为了让生成器和判定器能提取高分辨率特征,我们可以在某些层能够引入全局信息,让它们能更充分地联系“上下文”。

在第一个算式中,βj,i计算的是每个点的特征向量(通道个数的维度)的内积,保留了空间信息,而不是通道数×通道数大小的协方差矩阵,满足了全局信息提供的要求。至于最后引入参数γ,则是希望SAGAN能从简单任务学起,慢慢过渡到复杂任务。

重磅突破:从36.8到52.52,引入自我注意力模块的SAGAN

论文作者在生成器和判别器中都加入了注意力模块,而且以对抗损失最小的前提进行了训练。

实验及结果

在进行实验前,作者使用了两种方法来稳定模型训练:首先,对生成器和判别器同时做谱归一化;其次,在生成器和判别器中使用不同的学习率(TTUR)。他们发现这样做可以解决判别器正则化过程中学习速度过慢的问题。

重磅突破:从36.8到52.52,引入自我注意力模块的SAGAN

用谱归一化(SN)和TTUR稳定训练

他们比较了自我注意力模块和残差模块在GAN中的表现。这些模块被添加到网络的不同层,整个模型进行了上百万次迭代的训练。实验结果证明,无论是FID还是IS,自我注意力模块的表现都是最好的。

重磅突破:从36.8到52.52,引入自我注意力模块的SAGAN

下表是SAGAN和其他两个state-of-the-art GAN模型在生成ImageNet图片上的对比。很显然,SAGAN的战斗力和AC-GAN、SNGAN完全不在一个级别,仅Inception Score初始分数一项就提升了42.7%,FID也降低了32.5%,进步巨大。

重磅突破:从36.8到52.52,引入自我注意力模块的SAGAN

最后我们再就动物腿部的细节看一看SAGAN的表现。如下图所示(图像压缩可能影响清晰度),它在还原动物皮毛质地上的表现不比之前的cGAN差,不同的是它很清晰地呈现了动物的腿部情况,还生成了对应的纹理,效果提升明显。

重磅突破:从36.8到52.52,引入自我注意力模块的SAGAN


分享到:


相關文章: