前言
整体把这篇论文过了两遍之后,便觉得写的有点啰嗦。简单而言,人类目前发明的所有代替人类的工具在最开始构思时都是借鉴了人的行为,即发明是以人的行为为导向的。对于今天讨论的注意力图像分类网络也是如此,但是是否真正达到了所谓的attention其实还需要进一步的考量(个人觉得)。对于人类而言,判断一副图像是否是猫,那么由于先天充分的学习,会瞬间锁定到图像中猫所在的关键区域,然后根据耳朵,鼻子,嗯,判断是猫。注意此处有个前提条件----先天充分的学习。但是此篇论文不可能用到先验学习的信息。
那神经网络如何“attention”呢?此篇论文主要是利用了网络中的feature map在训练的优化过程中自然而然的保存了图像的空间结构信息,以及关键性区域的信息,通过feature便可以得到图像的mask进而修正feature。这点其实可以看一下MIT的一篇论文《Learning Deep Features for Discriminative Localization.》利用内部的feature map以及权重weights便可以进行物体的弱监督定位,具体也可以参考此篇博客《利用神经网络内部表征可视化class-specific image regions区域》。
简单原理
论文中提到attention有以下3种的实现方式:
- 模型的序列判断sequential process
比如判断一副图像是否是猫,那么先判断它是否是一个动物,再判断是否是猫。这种方式简单易行,缺点是训练的模型太多。
- Region proposal使用预选框
跟目标检测一样,首先将关键物体在图像中用预选框标定出来,再提取预选框内的图像特征做图像分类。这种方式首先需要针对预选框的生成进行训练,而且需要标注,对于特别复杂的场景不太适合。
- Control Gates权重控制特征
本篇论文的主要思路。即使用[0,1]之间的权重值对图像的特征图feature map进行控制,关键性信息的区域权重大,背景等无关信息的权重特别小,这样便相当于对特征进行了筛选使网络更加关注(attention)对图像类别相关的信息。
实现
网络的实现主要有三个部分:
- 堆叠的网络结构Stacked network structure
类似于Resnet,此网路有注意力模块Attention Modules,网络整体的结构便是它们的堆叠。 - 注意力残差结构Attention Residual Learning
也是学习的Resnet,为了能够进行足够深的网络结构学习。 - 前馈注意力机制Bottom-up top-down feedforward attention
此部分主要是在生成mask的部分,参考了FCN等图像分割网络以及stacked hourglass network的前馈结构,stacked hourglass network主要是应用在人体姿态估计上。
网络结构的设计
- 首先看注意力机制模块
得到的feature有两条途径,一是主干道,可替换任意的前沿卷积模块;二是mask 通道,主要是对feature进行处理生成soft mask,成为Control Gates来对新的特征进行控制,使feature更加attention。
为何使用feature 就能生成mask,辅助new feature的特征筛选呢?根据我的理解,还是前言提到的,网络中任一feature都保存有图像的关键性位置的定位信息,所以可以经过变换来生成对feature进行过滤的gates。
如何将mask作用于feature呢?
假设主干道的输入为 x x x,输出为 T ( x ) T(x) T(x),mask输出为 M ( x ) M(x) M(x),此时注意力模块的输出为 H i , c ( x ) = M i , c ( x ) ∗ T i , c ( x ) H_{i,c}(x) = M_{i,c}(x) * T_{i,c}(x) Hi,c(x)=Mi,c(x)∗Ti,c(x), i i i代表的是feature的空间位置, c c c代表特征通道channel。
在注意力模块中,mask不仅可以作为正向推理inference过程中的特征选择器,还可以作为反向传播过程中的梯度更新滤波器。如下:
∂ M ( x , θ ) T ( x , ϕ ) ∂ ϕ = M ( x , θ ) ∂ T ( x , ϕ ) ∂ ϕ \frac{\partial M(x, \theta)T(x, \phi)}{\partial \phi} = M(x, \theta)\frac{\partial T(x, \phi)}{\partial \phi} ∂ϕ∂M(x,θ)T(x,ϕ)=M(x,θ)∂ϕ∂T(x,ϕ)
即,反向传播梯度更新时,不会更新mask部分的参数 θ \theta θ,而只是更新主干道的参数 ϕ \phi ϕ。这种性质使网络对噪声标签有很好的鲁棒性。
每一个主干道都会匹配一个mask干道,学习此stage的特征mask。使mask更具有针对性。
- 注意力模块改进
因为mask的值为[0,1],所以如果网络层次太深吗,那么会导致越到最后得到feature map的值越小,性能下降。所以,又又又参考了Resnet的残差学习结构,即:如果mask 干道可以构造成相同的映射,那么在不加注意的情况下,其性能应该不会比对应的掩模单元差。
模块的输出改进为残差结构:
H i , c ( x ) = ( 1 + M i , c ( x ) ) ∗ T i , c ( x ) H_{i,c}(x) =(1 + M_{i,c}(x)) * T_{i,c}(x) Hi,c(x)=(1+Mi,c(x))∗Ti,c(x)此时美其名曰attention residual learning。
- 整体的网络结构
很详细了。
Spatial Attention and Channel Attention
主要就是三种不同的激活函数,用在mask输出之前。
- mixed attention (其实就是sigmoid)
f ( x i , c ) = 1 1 + e x p ( − x i , c ) f(x_{i,c}) = \frac{1}{1 + exp(-x_{i,c})} f(xi,c)=1+exp(−xi,c)1 - spatial attention
f ( x i , c ) = x i , c ∣ ∣ x i ∣ ∣ f(x_{i,c}) = \frac{x_{i,c}}{||x_i||} f(xi,c)=∣∣xi∣∣xi,c - channel attention
f ( x i , c ) = 1 1 + e x p ( − ( x i , c − m e a n c ) / s t d c ) f(x_{i,c}) = \frac{1}{1 + exp(-(x_{i,c}-mean_c)/std_c)} f(xi,c)=1+exp(−(xi,c−meanc)/stdc)1
性能
- mean absolute response 与ResNet-164进行对比
- cifar10/cifar100
- imagenet
记录
感觉这么跟SCSE很类似呢?有空再研究研究。。