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机制



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

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

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

这是卷积层无法做到的。

图像生成问题

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

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

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

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

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

模型 & Attention机制

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

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



  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的结果很不错,超出当前State-of-art的结果很多。


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

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

总结 & 个人分析

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

  • 6
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值