发表位置: CVPR
发表时间: 2018

摘要

作者提出了一种通过堆积Residual attention network,该网络可通过堆积多个attention module构成, 在该网络结中, attention-aware feature随着网络深度的变化而自适应改变,在attention module内部自底向上、自顶向上的前馈结构,将前馈和反馈注意力过程展开为单个前馈过程。

背景

先前的文献,主要是针对the mixed nature of attention的研究。注意力不仅用于选择一个focus attention,而且还增强了该位置上物体的不同表现。之前的作品将注意力漂移作为一个连续的过程来捕捉不同的关注方面。然而,据我们所知,在图像分类任务中,前馈网络结构中并没有应用注意机制来取得最先进的结果。图像分类的最新进展主要集中在使用非常深的结构训练前馈卷积神经网络。

受注意机制和深度神经网络最新进展的启发,我们提出了残差注意网络(Residual attention network),这是一种在非常深的结构中采用混合注意机制的卷积网络。剩余注意网络由多个注意模块组成,这些注意模块生成注意感知特征。不同模块的注意感知特征随着层次的加深而自适应地变化。

Residual Attention Network

本文的Residual Attention Network是由多个Attention Modules堆叠而成的。每个Attention Modules由mask branch 和 trunk branch 两个分支模块组成。

ResNET50怎么添加注意力模块 resnet 注意力_归一化

trunk branch用于 执行特征处理,任何先进的神经网络都可以执行这个功能。在本文中,作者使用pre-activation Residual Unit 、ResNeXt 和 Inception作为残差注意力网络的基本单元

给定输入ResNET50怎么添加注意力模块 resnet 注意力_Network_02的trunk branch的输出 ResNET50怎么添加注意力模块 resnet 注意力_Network_03,mask trunk采用bottom-up top-down的结构来学习softly weight output features的Mask ResNET50怎么添加注意力模块 resnet 注意力_选择器_04。Attention Modules 的输出单元可表示为,

ResNET50怎么添加注意力模块 resnet 注意力_Network_05

其中,ResNET50怎么添加注意力模块 resnet 注意力_选择器_06的取值范围为所有空间位置上的范围,$c \in { 1,…,C} $表示信道的索引(channel)。在Attention Modules, the attention mask 在forward inference中不仅可以作为特征选择器,还可以在back propagation 中作为gradient update filter,这个属性使Attention modules对噪声更具有鲁棒性(mask branch可以防止错误的标签更新trunk参数。)。soft mask branch中的输入特征的 gradient of mask 可表示为,

ResNET50怎么添加注意力模块 resnet 注意力_Network_07

其中,ResNET50怎么添加注意力模块 resnet 注意力_选择器_08表示mask branch 的参数,$ \phi $表示trunk branch 的参数。

在Attention modules中,每个trunk branch都有自己的mask branch来学习具有针对性的attention。另外,堆叠网络结构的增量性可以逐渐细化对复杂图像的关注。图2为针对ImageNet数据集的Residual Attention Network。

ResNET50怎么添加注意力模块 resnet 注意力_ResNET50怎么添加注意力模块_09


Attention Residual Learning

(1)目标函数

单纯的堆叠Attention modules会导致明显的性能下降,作者提出attention residual learning来缓解这一问题。作者定义注意力模块的输出为,

ResNET50怎么添加注意力模块 resnet 注意力_ResNET50怎么添加注意力模块_10

其中,ResNET50怎么添加注意力模块 resnet 注意力_选择器_11的取值范围为ResNET50怎么添加注意力模块 resnet 注意力_归一化_12ResNET50怎么添加注意力模块 resnet 注意力_选择器_04近似于0时,ResNET50怎么添加注意力模块 resnet 注意力_ResNET50怎么添加注意力模块_14将会近似于原始特征 ResNET50怎么添加注意力模块 resnet 注意力_ResNET50怎么添加注意力模块_15。作者将这种方法attention residual learning。

(2)注意力残差模块堆叠方式

ResNet 中residual learning的方式可以描述为,

ResNET50怎么添加注意力模块 resnet 注意力_选择器_16

其中,ResNET50怎么添加注意力模块 resnet 注意力_ResNET50怎么添加注意力模块_17表示近似的residual function。**在本文中,ResNET50怎么添加注意力模块 resnet 注意力_ResNET50怎么添加注意力模块_17表示deep convolutional networks生成的特征,该值主要取决于mask branches M(x),可以作为特征选择器,增强好特征,抑制trunk branch中的噪声特征。

堆叠Attention module通过其增量性支持了注意力剩余学习。Attention residual learning既能保持原始特征的良好特性,又能使其绕过soft mask branch,转发到顶层,削弱mask branch的特征选择能力。

Soft Mask Branch

mask branch 包含了 fast feed-forward sweep 和 top-down feedback steps.前者快速收集整个图像的全局信息,后者将全局信息与原始特征映射相结合。

对于输入,max pooling在Residual Units后,执行多次来快速地增加接受域,在达到低分辨率,全局信息通过对称的top-down结构知道每个位置的输入特征,双线性插值(Linear interpolation up sample)在Residual Units后上采样。Linear interpolation up sample的数量和max pooling 的数量是相同的,用于保证输出规模和输入特征映射的大小是相同的,然后使用sigmod layer 归一化输出值到[0,1]。

Spatial Attention and Channel Attention

mask 提供的attendtion会随着trunk branch features变化,作者通过改变soft mask output前激活函数中的归一化步骤,仍然可以将mixed attention(channel attention 和 spatial attention)添加到掩码分支中。未增加额外约束的Mixed attention ResNET50怎么添加注意力模块 resnet 注意力_Network_19 对每个channel and spatial position 使用 simple sigmoid。 channel attention ResNET50怎么添加注意力模块 resnet 注意力_归一化_20 对所有channel的spatial position执行 ResNET50怎么添加注意力模块 resnet 注意力_ResNET50怎么添加注意力模块_21正则化sptial 信息。Spatial attention ResNET50怎么添加注意力模块 resnet 注意力_ResNET50怎么添加注意力模块_22对每个channel的feature map进行归一化,再进行sigmoid,得到仅与空间信息相关的soft mask。

ResNET50怎么添加注意力模块 resnet 注意力_选择器_23

ResNET50怎么添加注意力模块 resnet 注意力_归一化_24

ResNET50怎么添加注意力模块 resnet 注意力_Network_25

其中,ResNET50怎么添加注意力模块 resnet 注意力_选择器_06的取值范围是整个spatial positions,ResNET50怎么添加注意力模块 resnet 注意力_ResNET50怎么添加注意力模块_27的范围整个channels。ResNET50怎么添加注意力模块 resnet 注意力_归一化_28ResNET50怎么添加注意力模块 resnet 注意力_Network_29 表示来自信道 ResNET50怎么添加注意力模块 resnet 注意力_ResNET50怎么添加注意力模块_27特征映射的均值和标准差。ResNET50怎么添加注意力模块 resnet 注意力_归一化_31定义了第 ResNET50怎么添加注意力模块 resnet 注意力_选择器_06个spatial position的特征向量。

本文网络的结构如下:

ResNET50怎么添加注意力模块 resnet 注意力_Network_33