论文阅读:A2-Nets: Double Attention Networks

A2-Nets: Double Attention Networks(NIPS 2018)

文章
  论文的名字很好,反映了本文的核心想法:首先使用second-order attention pooling将整幅图的所有关键的特征搜集到了一个集合里,然后用另一种attention机制将这些特征分别图像的每个location。
论文阅读:A2-Nets: Double Attention Networks_第1张图片
从上图看到,模型先会计算出一堆global descriptors,然后每个位置会根据自己本身的特征来计算对每个global descriptor的权重,从而能对自己的特征是一个补充,比如图上的红框处是一个baseball,所以它对baseball的权重就小,对其他的权重就大一些。然后又从上图(b)中又可以看出,得到了第二步的所有位置的attention vectors之后,组成的矩阵与global descriptors相乘便恢复到最开始的大小,其实输入输出就很卷积很像。写成数学形式就是下面这样,其中i代表location:
在这里插入图片描述
  首先来看看第一步,Feature Gathering。这步中使用了Bilinear CNN,其实就是用两个CNN模型,将得到的特征做外积(outer product,张量积,和线代中的叉积不一样),从而捕捉到特征中的二阶统计规律。
论文阅读:A2-Nets: Double Attention Networks_第2张图片
具体在做外积时,假设特征A、B(视频特征,d代表frame)分别为
在这里插入图片描述
于是Bilinear pooling的公式为
在这里插入图片描述
其实就是将两个特征的对应点都进行张量积得到一个该点的特征矩阵,然后将所有点的结果进行矩阵的加法,最后得到一个mxn的矩阵,可以将其记作
在这里插入图片描述
如果对Bilinear pooling的式子进行一下改写,首先将B记作
在这里插入图片描述
注意每个b_i此时是一个dhw的行向量,如果是对图片的话,d=1,其实就是一个h*w的矩阵,此时G是
在这里插入图片描述
A是mxdhw,于是g_i就相当于A乘上一个attention tensor b_i然后求和得到一个m维的vector g_i。这样一来得到的G其实可以看做一个图片上视觉元素的集合,或者叫global features。进一步对b_i进行softmax保证attention tensor元素之和为1。从而得到G
在这里插入图片描述
  接下来是第二步,Feature Distribution。将从整幅图得到的global features分给每一个location,可以在接下来的卷积中即使使用小的卷积核也可以感受到global的信息。具体方法如下
在这里插入图片描述
v_i就是每个位置i的attention vector,维度为n维,对于n个m维的global features,z_i就是将n个global features加权得到的新的位置i的特征。而attention vectors是通过1x1的卷积产生的,当然softmax也是需要的。
  结合上面的两步就得到下面的double attention block
论文阅读:A2-Nets: Double Attention Networks_第3张图片
注意上面所有的卷积核都是1x1的。
在这里插入图片描述
输入为X,block中用到的A,B,V都是用不同的卷积产生的。有意思的点是还可以将上式写作
在这里插入图片描述
虽然计算结果一样,但是两个式子的复杂度(第一个为O(mndhw),第二个为O(m(dhw)^2))和需要的中间变量存储完全不一样,如果是一个32帧28x28的视频,第二个式子需要超过2GB的内存,而第一个式子只需要约1MB。
  最后看看实验结果,输入为16帧112x112,double attention block中的卷积输出通道数均为输入通道数的1/4,加一个和多个block的结果(Kinetics dataset)如下
论文阅读:A2-Nets: Double Attention Networks_第4张图片
论文阅读:A2-Nets: Double Attention Networks_第5张图片
看起来效果还是不错的,ImageNet-1k结果如下
论文阅读:A2-Nets: Double Attention Networks_第6张图片
  总结一下,double attention block的优势应该是能用更少的层数达到与更多的层数带来的接近的大感受野的效果,但是对于多层非线性变换的影响并未提及,另外double attention block更好的应用场景应该是MobileNet,ShuffleNet等轻量网络,所以本文在ResNet上做实验其实有点扯。。。

你可能感兴趣的:(论文阅读:A2-Nets: Double Attention Networks)