SA-GAN - Self-Attention Generative Adversarial Networks 论文解读(附代码)

Han Zhang, Ian Goodfellow, Dimitris Metaxas, Augustus Odena, “Self-Attention Generative Adversarial Networks”,arXiv:1805.08318

作者是RU的Han Zhang,并且Goodfellow也署名了。
据作者说,本文提交了今年的NIPS18,目前还在审稿中。

作者也已经把代码放到Github上了,代码地址。

导读

SA-GAN 在GAN中引入了Attention机制,让生成器和判别器可以自动学习图像中的重要目标,

让我们知道需要学习的任务focus在图像中的哪些部分(类似于显著性检测),

目的在于提交生成图片的图片质量。

相较于Baseline,SA-GAN在ImageNet数据集上将Inception Score从36.8提升到了52.52,

将Frechet Inception Distance从27.62减到了18.65

Attention机制

SA-GAN - Self-Attention Generative Adversarial Networks 论文解读(附代码)_第1张图片

这是文中看出的Attention效果图。

可以看到,每行的前三张结果图的高度部分都在物体本身上,即这三个Attention特征都关注物体本身;

重点在后两列的结果图中,高亮部分都在背景上,较大的背景区域都能够学到像素之间的相关性,

这是卷积层无法做到的。

图像生成问题

在目前的图像生成模型中,一般很难处理好细节和整体的trade off。

特别是一些注重细节的生成任务(e.g. 人脸),一点点的扭曲和模糊就显得特别不真实。

由于卷积网络的局部感受野的限制,如果要生成大范围相关(Long-range dependency)的区域,

要多层卷积层才能很好地处理,所以本文寻求一种能够利用全局信息的方法。

如果采用全连接层来获取全局信息,未免参数量太大计算量太大,引入Attention机制势在必行。

模型 & Attention机制

SA-GAN - Self-Attention Generative Adversarial Networks 论文解读(附代码)_第2张图片

上图详细解析了模型中的Attention模块:

  1. f(x),g(x)和h(x)都是普通的1x1卷积,差别只在于输出通道大小不同;
  2. 将f(x)的输出转置,并和g(x)的输出相乘,再经过softmax归一化得到一个Attention Map;(下面具体解释过程)
  3. 将得到的Attention Map和h(x)逐像素点相乘,得到自适应的注意力feature maps.

SA-GAN - Self-Attention Generative Adversarial Networks 论文解读(附代码)_第3张图片


  1. f(x)的输出[C/8, W, H], g(x)的输出[C/8, W, H],为了适应矩阵乘法,文中将一个feature map的长和宽flat成一个N维的向量(N = W x H),即f(x)和g(x)的输出为[C/8, N];
  2. 将f(x)的转置和g(x)矩阵乘,得到的输出S为一个矩阵[N, N],S矩阵可以看做一个相关性矩阵,即长H宽W的feature map上各个像素点之间的相关性
  3. 将S矩阵逐行用Softmax归一化得到B矩阵,每一行(长度为N的向量)代表了一种Attention的方式;
  4. 将这N种Attention的方式应用到h(x)上,即每一个像素点都与整个feature map相关,相关性来自于B矩阵,得到N个新的像素点作为输出O;(这步操作上不涉及通道)
  5. 引入一个过渡参数 r,r 逐步从0 开始增大,即慢慢地将Attention机制加入到模型中。

稳定GAN的一些Tricks

没有做过这两者相应的工作,就不多做评价了,直接翻译论文。

1. Spectral Normalization

SA-GAN将Spectral Normalization应用到了G和D中,稳定了训练和生成过程。

2. Imbanlanced Learning Rate

在训练过程中,给予G和D不同的学习速率,以平衡两者的训练速度。

结果

SA-GAN - Self-Attention Generative Adversarial Networks 论文解读(附代码)_第4张图片

SA-GAN - Self-Attention Generative Adversarial Networks 论文解读(附代码)_第5张图片

可以看到,SA-GAN的结果很不错,超出当前State-of-art的结果很多。

SA-GAN - Self-Attention Generative Adversarial Networks 论文解读(附代码)_第6张图片

上图是Attention的结果图,每张图片分别展示了三个Attention模块的特征;

可以看到,Attention的结果使得模型的关注点不仅仅在局部的细节(图中红框),还有以前卷积网络很难学到的包含全局信息的背景等(图中黄框)。

总结 & 个人分析

  1. SA-GAN引入的Attention机制在网络的每一层都考虑全局信息, 而不是像卷积层那样只考虑局部信息。
  2. 相较于全连接层,SA-GAN中的全局信息没有那么大的参数量,在提高感受野和减小参数量之间得到了一个更好的平衡。

你可能感兴趣的:(计算机视觉)