SEnet——Squeeze-and-Excitation Networks

 

ABSTRACT

卷积神经网络建立在卷积运算的基础上,通过融合局部感受野内的空间(spatial)信息和通道(channel-wise)信息来提取信息特征。在本文作者提出来了一种新的架构——“Squeeze-and-Excitation”(SE)块,通过显式地建模通道之间的相互依赖关系,自适应地重新校准通道式的特征响应。将这些块堆叠在一起,可以构建SENet架构,在具有挑战性的数据集中可以进行泛化地非常好。关键的是,发现SE块以微小的计算成本为现有的最先进的深层架构产生了显著的性能改进。SENets是作者ILSVRC 2017分类提交的基础,并赢得了第一名,并将top-5错误率显著减少到2.251%2.251%,相对于2016年的获胜成绩取得了∼25%∼25%的相对改进。0

1.Introduction

卷积神经网路(CNN)已被证明是可以解决各种视觉任务的有效模型,卷积通过融合局部感受野的空间和通道信息来进行信息组合,通过叠加这样的一系列的非线性和下采样交织的卷积层,CNN能够成为获得全局感受野的强大图像描述。最近有工作通过显示嵌入学习机制来帮助捕获空间的相关性,如inception架构,在模型中嵌入多尺度处理来获得了更高的准确度。

本文提出来另一个方向的设计架构——通道关系,称之为“Squeeze-and-Excitation”(SE)块。目标是通过显示构建卷积特征通道之间的相互依赖来提高网络的表达能力(improve the representational power of a network by explicitly modelling the interdependencies between the channels of its convolutional features.)为了达到这个目的,提出了一种机制,使网络执行特征重新校准,通过这种机制可以学习使用全局信息来选择性地增强有效的特征信息并抑制不太有用的特征。

SEnet——Squeeze-and-Excitation Networks
Figure 1 SE block

 SEBlock并不是一个完整的网络结构,而是一个子结构,可以嵌入到其他网络模型的任意深度来替换掉原始的卷积层形成新的网络模型,它在不同的深度有不同的作用。本文作者开发了一些SENets,即SE-ResNet,SE-Inception,SE-ResNeXt和SE-Inception-ResNet。作者使用SENets赢得了ILSVRC 2017分类竞赛的第一名。我们的表现最好的模型集合在测试集上达到了2.251%的top-5错误率。与前一年的获奖者(2.991%的top-5错误率)相比,达到了∼25%的相对改进。

3.Squeeze-and-Excitation Block

如图1所示,是SE Block的单元,主要包括两个部分——Squeeze和Excitation两个部分。先对U做一个Global Average Pooling(图中的Fsq(.),作者称为Squeeze过程),输出的1x1xC数据再经过两级全连接(图中的Fex(.),作者称为Excitation过程),最后用sigmoid(论文中的self-gating mechanism)限制到[0,1]的范围,把这个值作为scale乘到U的C个通道上, 作为下一级的输入数据。这种结构的原理是想通过控制scale的大小,把重要的特征增强,不重要的特征减弱,从而让提取的特征指向性更强。下面来看下SENet的一些细节:

图中的Ftr是传统的卷积结构(严格来讲并不属于SENet,而是属于原网络),X(CxHxW)是Ftr的输入,U是 Ftr(C'xH'xW')的输出,这些都是以往结构中已经存在的,定义如下:

SEnet——Squeeze-and-Excitation Networks

SEnet——Squeeze-and-Excitation Networks表示学习到的一组滤波器核,SEnet——Squeeze-and-Excitation Networks指的是第c个滤波器的参数,Ftr的输出是SEnet——Squeeze-and-Excitation Networks。这个Ftr的公式就是下面的公式1:

SEnet——Squeeze-and-Excitation Networks                                         (1)

Ftr得到的U就是Figure1中的左边第二个三维矩阵,或者叫C个大小为H*W的feature map。而uc表示U中第c个二维矩阵,下标c表示channel。

然后是Squeeze过程:对U做一个Global Average Pooling,AP有很多算法,作者用了最简单的求平均的方法(公式1),将空间上所有点的信息都平均成了一个值。这么做是因为最终的scale是对整个通道作用的,这就得基于通道的整体信息来计算scale。另外作者要利用的是通道间的相关性,而不是空间分布中的相关性,用GAP屏蔽掉空间上的分布信息能让scale的计算更加准确。公式如下:

SEnet——Squeeze-and-Excitation Networks                              (2)

再接下来就是Excitation操作,如公式3。前面squeeze得到的结果是z,这里先用W1乘以z,就是一个全连接层操作,SEnet——Squeeze-and-Excitation Networks,这个r是一个缩放参数,在文中取的是16,这个参数的目的是为了减少channel个数从而降低计算量。又因为z的维度是1x1xC,所以W1xZ的结果就是1x1xC/r;然后再经过一个ReLU层,输出的维度不变;然后再和W2相乘,和W2相乘也是一个全连接层的过程,SEnet——Squeeze-and-Excitation Networks,因此输出的维度就是1x1xC;最后再经过sigmoid函数,得到s。

SEnet——Squeeze-and-Excitation Networks                   (3)

也就是说最后得到的这个s的维度是1x1xC,C表示channel数目。这个s其实是本文的核心,它是用来刻画 U中C个feature map的权重。而且这个权重是通过前面这些全连接层和非线性层学习得到的,因此可以end-to-end训练。这两个全连接层的作用就是融合各通道的feature map信息,因为前面的squeeze都是在某个channel的feature map里面操作。

在得到s之后,就是scale操作了,就是下面的公式4,就是channel-wise multiplication,uc是一个二维矩阵,sc是一个标量(第c层的s的数值),也就是权重,因此相当于把uc矩阵中的每个值都乘以sc。对应Figure1中的Fscale。

SEnet——Squeeze-and-Excitation Networks                                                    (4)

将SE block加入到inception模型:

SEnet——Squeeze-and-Excitation Networks

将SE block加入到resne模型中:(在这里,SE块变换Ftr被认为是残差模块的非恒等分支。压缩激励都在恒等分支相加之前起作用。)

SEnet——Squeeze-and-Excitation Networks

添加了SE block后,模型的参数到底增加了多少。其实从前面的介绍可以看出增加的参数主要来自两个全连接层,两个全连接层的维度都是C/r * C,那么这两个全连接层的参数量就是2*C^2/r。以ResNet为例,假设ResNet一共包含S个stage,每个Stage包含N个重复的residual block,那么整个添加了SE block的ResNet增加的参数量就是下面的公式:SEnet——Squeeze-and-Excitation Networks