论文地址:https://arxiv.org/abs/1704.06904
Caffe代码:https://github.com/fwang91/residual-attention-network
(网络结构文件见Attention-56-deploy.prototxt,在Caffe版的网络实现中,定义了一个Interp层,做插值操作,用来实现上采样。)
该模型的结构参考了:Stacked hourglass networks for human pose estimation. In arXiv 2016.
论文作者Shuo Yang主页:http://personal.ie.cuhk.edu.hk/~ys014/
一、Residual Attention Network 简介
这是CVPR2017的一篇paper,是商汤、清华、香港中文和北邮合作的文章。它在图像分类问题上,首次成功将极深卷积神经网络与人类视觉注意力机制进行有效的结合,并取得了远超之前网络结构的准确度与参数效率。仅用与ResNet-50相当的参数量和计算量就得到了远超过ResNet-152的分类性能。
二、Residual Attention Network 的提出
视觉注意力机制是人类视觉所特有的大脑信号处理机制。人类视觉通过快速扫描全局图像获得需要关注的目标区域,而后重点获取所需要关注的目标信息,抑制其他无用信息。人类视觉注意力机制极大的提高了视觉信息处理的效率与准确性。注意力机制已经在自然语言处理中取得了重大成功。但在计算机视觉任务中,如何将视觉注意力机制有效的嵌入到神经网络结构并提升网络性能成为亟待解决的问题。所以本篇论文就做了这方面的尝试,基本想法就是受attention mechanism 和residual的激励,考虑把两者放在一起实现更好的效果。
三、Residual Attention Network 论文详解
Abstract:
论文提出了Residual Attention Network,一种使用注意机制的卷积神经网络,它可以以端到端的训练方式与最新的前馈网络结构相结合。Residual Attention Network是通过堆叠多个注意模块Attention Module来构建的,这些模块产生注意力感知特征attention-aware features。随着层的深入,来自不同模块的attention-aware features会自适应地改变。在每个Attention Module内部,bottom-up top-down的前馈结构将前馈和反馈attention过程展开到单个前馈过程中。重要的是,提出attention residual learning来训练非常深的Residual Attention Networks,这可以很容易地扩展到数百层。
与ResNet-200相比,本文方法在仅46%主干深度和69%的前向计算量FLOP下实现了0.6%的top-1提升。实验还表明,网络对噪声标签具有鲁棒性。
1. Introduction:
该网络模型结构具有以下几个特性:
- 注意机制带来的更具辨别力的特征表示。
- 增加Attention Module可以提高性能,因为这样可以捕获到不同类型的注意力。如该热气球图像中,有气球,又有蓝天(背景),低层(前面层)提取背景的attention,高层(后面层)提取气球的attention,前后层相结合就能很好的提取出目标。
- 它能够以端到端end-to-end的训练方式与最先进的深层网络结构相结合。具体来说,网络深度可以轻松扩展到数百层。
所有上述特性都可以通过以下方法实现:(论文主要创新点)
1) stacked network structure:本文的残差注意网络Residual Attention Network是通过堆叠多个注意模块Attention Module来构建的,这点类似其它深度网络。堆叠结构是混合注意机制的基本应用,因此,它能够在不同的注意模块中捕获不同类型的注意力。
2) attention residual learning:直接堆叠注意模块会导致明显的性能下降。因此,作者提出了注意残差学习机制,来优化具有数百层的非常深的残差注意网络。
3) bottom-up top-down feedforward attention:bottom-up top-down就是FCN中的特征图先变小,然后通过上采样将图像变大的方法,作者使用这种结构作为Attention Module的一部分来将特征权重添加到特征图上。
2. Residual Attention Network:
Residual Attention Network是通过堆叠多个Attention Module来构建的。每个Attention Module分为2个分支:mask branch和trunk branch。
下图为attention结构图:
这里使用pre-activation Residual Unit,ResNeXt和Inception作为Residual Attention Network的基本单元来构建Attention Module。Attention Module 的输出H为:
其中,T(x)表示trunk branch,M(x)表示mask branch。
- trunk branch进行特征提取,可以适应任何最先进的网络结构。
- mask branch不仅仅在前向传播中进行特征的选择,并且在反向传播中进行梯度的过滤。
在soft mask分支中,输入特征的mask梯度为:
其中,θ是mask branch的参数,φ是trunk branch的参数。
mask branch可以防止错误的梯度(来自噪声标签)更新trunk参数。此属性使Attention Module对噪声标签具有鲁棒性。
2.1 Attention Residual Learning
单纯的堆叠Attention Module会导致明显的性能下降:
- 首先,mask范围是0到1,反复的相乘会使特征值逐渐变小。
- 其次,mask可能会破坏trunk的好的特征,例如Residual Unit的相同映射。
因此,作者提出Attention Residual Learning来缓解上述问题。与residual learning中的想法类似,如果soft mask单元可以被构造成相同的映射,那么在没有attention的情况下,其性能不应比对应单元差。即,即使M的大小为0,还保留F(x)的大小,这就是Attention Residual Learning。因此,将Attention Module的输出H修改为:
Fi,c(x)表示深度卷积网络生成的特征。M(x)表示mask branch,起特征选择器的作用,增强了好的特征并抑制了主干特征的噪声。
通过使用Attention Residual Learning,在增加Residual Attention Network的深度的同时,也始终能提高性能。如实验部分所示,Residual Attention Network的深度增加到452时,其性能在CIFAR数据集上大幅超过ResNet-1001。
2.2. Soft Mask Branch
mask branch包含了快速前馈扫描(fast feed-forward sweep)和自上而下的反馈(top-down feedback)步骤。前一种操作快速收集整个图像的全局信息,后一种操作将全局信息与原始特征图相结合。在卷积神经网络中,这两个步骤展开为bottom-up top-down的全卷积结构。
主要采用简单的类似于FCN的网络实现mask branch,从输入开始,先执行几次max pooling以在少量Residual Units之后快速增加感受野,达到最低分辨率后,通过一个对称的网络结构将特征放大回去(采用线性插值)。然后,接2个连续的1×1卷积层,最后接一个sigmoid层将输出归一化到[0,1]。在mask branch中,作者还在bottom-up和top-down之间添加了skip connections,以捕获不同比例的信息。完整的模块如图所示:
2.3. Spatial Attention and Channel Attention
针对mask branch,作者尝试了3种方法进行约束,使之达到最好的效果。分别对应mixed attention、channel attention和spatial attention。
- mixed attention: f1,对通道和空间的每个位置使用sigmoid;
- channel attention: f2,对每个空间位置,求所有通道的L2范数,进行归一化,以去除空间信息;
- spatial attention: f3,在每个通道先进行归一化,然后对每个位置进行sigmoid操作。
其中,i为在所有空间上的范围,c为在所有通道上的范围。mean_c和std_c分别表示来自第c个通道的特征图的平均值和标准差。xi表示第i个空间位置处的特征向量。
通过实验,在没有额外约束的情况下,通过自适应地改变注意力可以获得最佳性能。mixed attention具有最佳的性能。