注意力机制学习笔记二(Attention-GAN、SAGAN、YLG-SAGAN)

一.Attention-GAN

论文地址:Attention-GAN for Object Transfiguration in Wild Images

Object Transfiguration不是将图像作为一个整体来完成变换,它的目的是在不影响背景区域的情况下,将图像中的某一特定类型的目标转换为另一种类型的目标。经典的GAN在做Object Transfiguration时有两个功能:监测感兴趣的目标和将目标从源域转换到另一个域。这两个功能合并到一个网络中会产生一些问题,比如某些背景区域被误当成目标区域。

此文提出的方法是把GAN和Attention做结合来针对野生动物的图片做转换。把生成器的部分分为两个网络,一个来生成一个稀疏Attention map(针对待转换的区域),另一个来负责做转换,之后再将两个网络的输出进行合成得到最终的output。

模型如下图所示:

输入一个 X 域的图像 x ,在一个分支中,将 x 通过一个 attention network 得到和 x 同纬度的score map A_{X}(x),它的值是从0-1的,得分高的是感兴趣的区域,低的是背景。在另一个分支中,将 x 通过transformation network 转换到 Y 域的输出 T(x),最后使用分层操作(layered operation)得到最终的图像。

 同时因为使用了attention map,防止了cycle consistency loss被背景因素干扰。Attention Losses的构建基于X域中x的Attention map和由x转换到Y域中y的Attention map的想法(类似cycle consistency的想法)。

二.Self-Attention Generative Adversarial Networks

论文地址:[1805.08318v1] Self-Attention Generative Adversarial Networks (arxiv.org)

在目前的图像生成模型中,一般很难处理好细节和整体的权衡,原因可能是先前的模型严重依赖于卷积来模拟不同图像区域之间的依赖性。由于卷积运算符具有局部感受域,因此只能在经过多个卷积层之后处理远距离依赖性(long-range dependency),而这可能会因各种原因阻止学习远距离依赖性。

本文提出了SAGAN,通过self-attention机制捕获远距离依赖(long-range dependency), 使得合成的图片可以捕获到所有位置的feature。

模型如下图所示:

 feature maps (x) 通过 1×1 的卷积,即f(x)=W_{f}xg(x)=W_{g}x,将f(x)的输出转置,并和g(x)的输出相乘,再经过softmax激活函数得到一个attention map( \beta _{j,i} ),即

self.query_conv = nn.Conv2d(in_channels = in_dim , out_channels = in_dim//8 , kernel_size= 1)
self.key_conv = nn.Conv2d(in_channels = in_dim , out_channels = in_dim//8 , kernel_size= 1)

proj_query  = self.query_conv(x).view(m_batchsize,-1,width*height).permute(0,2,1)
proj_key =  self.key_conv(x).view(m_batchsize,-1,width*height)
energy =  torch.bmm(proj_query,proj_key) # bmm means batch matrix multiplication
attention = self.softmax(energy)

h(x)也是x通过 1×1 的卷积得来的,接下来我们再将 \beta _{j,i} 与 h(x)逐像素点相乘,得到自适应的注意力feature maps(o)。

self.value_conv = nn.Conv2d(in_channels = in_dim , out_channels = in_dim , kernel_size= 1)

proj_value = self.value_conv(x).view(m_batchsize,-1,width*height)
out = torch.bmm(proj_value,attention.permute(0,2,1) )
out = out.view(m_batchsize,C,width,height)

 最终的输出为:

out = self.gamma*out + x

 最后,使用hinge adversarial loss:

 注:代码参考自知乎博主刹那 kevin GAN笔记 - SAGAN

三.Your Local GAN

论文地址:Your Local GAN: Designing Two Dimensional Local Attention Mechanisms for Generative Models

注意力机制通过建模像素间关系,能有效地处理复杂的几何形状以及捕获长距离依赖,以进一步提高网络性能。然而,注意力也存在以下限制。首先计算开销大,标准的密集注意力需要的空间和时间成倍增加。其次,计算注意力时将二维的空间结构的tensor展开为一维向量会损失空间特性。针对以上的问题,Your Local GAN(YLG)主要做了以下贡献:

1.引入了局部稀疏注意力层,该层保留了二维图像的局部性,并且可以通过attention steps来支持良好的信息流。

2.使用了信息流图的信息理论框架,以量化信息流的步骤并保持二维局部性。

3.基于SAGAN结构提出了YLG-SAGAN,使得网络的性能和训练时间均得到大幅优化。

4.提出了一种解决GANs反演问题的新方法,能对更大模型的损失进行梯度下降的自然反演过程。

Sparsified Attention:

在SAGAN中,attention maps 表示为X'=\sigma \left ( X_{Q} \cdot Y_{K}^{T} \right )\cdot Y_{V},其中,\sigma\left ( \right )是softmax函数。

A_{X,Y} = X_{Q}Y_{K}^{T},本文将A_{X,Y}稀疏化, 并将注意力层分成多个部分,稀疏化通过掩码矩阵M_{i}\in \left \{ 0,1 \right \}^{N_{X}\times N_{Y}}进行,

A_{X,Y}^{i}\left [ a,b \right ] =\left\{\begin{matrix} A_{X,Y}\left [ a,b \right ] ,&M^{i}\left [ a,b \right ] =1\\ -\infty , & M^{i}[a,b]=0 \end{matrix}\right.

负无穷保证了在通过softmax激活函数后,此位置将归零,因此不会对输出矩阵的计算做出贡献。

Full Information Attention Sparsification:

这个图说明了本文中的注意力层不同的两步稀疏化,第一行中,深蓝色表示这两步参加的位置,浅蓝色表示第一个mask的位置,绿色表示第二个mask的位置,其余的表示不计算。第二行展示了相应的信息流图,信息流图展示了信息在注意力层是如何流动的,它可视化了模型如何使用两部分解来找到图像像素之间的依赖关系。

Two-Dimensional Locality:

 在计算过程中要将h*w结构的tensor展开成N。因此损失了空间性,那么文中提出了一个很简单的方法:ESA。这个方法将按行优先展开变为按与(0,0)像素点的曼哈顿距离优先方式展开。

loss function:

 

  • 4
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值