SENet:Squeeze-and-Excitation Networks

 论文:《Squeeze-and-Excitation Networks》

 论文链接:https://arxiv.org/abs/1709.01507 

代码地址:https://github.com/hujie-frank/SENet 

PyTorch代码地址:https://github.com/miraclewkf/SENet-PyTorch
 

一:SENet概述

  Squeeze-and-Excitation Networks(SENet)是由自动驾驶公司Momenta在2017年公布的一种全新的图像识别结构,它通过对特征通道间的相关性进行建模,把重要的特征进行强化来提升准确率。这个结构是2017 ILSVR竞赛的冠军,top5的错误率达到了2.251%,比2016年的第一名提升了25%,可谓提升巨大。这么大的提升是怎么来的呢?今天就来介绍下这个冠军背后的原理细节。

SENet的思想简单来说就像是:通过学习的方式来获取每个通道特征的重要程度(每个通道的权重),然后依照这个重要程度去有效的提升有用的特征并且抑制对当前任务不大的特征。也许通过给某一层特征配备权重的想法很多人都有,那为什么只有SENet成功了?个人认为主要原因在于权重具体怎么训练得到。就像有些是直接根据feature map的数值分布来判断;有些可能也利用了loss来指导权重的训练,不过全局信息该怎么获取和利用也是因人而异。

二:网络结构图:

下图就是se的基本模块,主要分为squeeze和excitation两个部分,下面结合公式介绍。

 

首先Ftr这一步是转换操作(严格讲并不属于SENet,而是属于原网络,可以看后面SENet和Inception及ResNet网络的结合),在文中就是一个标准的卷积操作而已,输入输出的定义如下表示。

这里写图片描述

那么这个Ftr的公式就是下面的公式1(卷积操作,用1*1*1的卷积将通道数变成C2。也就是较少通道数,减少计算量)。

这里写图片描述

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

接下来就是Squeeze操作,公式非常简单,就是一个global average pooling:

这里写图片描述

因此公式2就将H*W*C的输入转换成1*1*C的输出,对应Figure1中的Fsq操作。为什么会有这一步呢?这一步的结果相当于表明该层C个feature map的数值分布情况,或者叫全局信息。

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

这里写图片描述

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

在得到s之后,就可以对原来的tensor U操作了,就是下面的公式4。也很简单,就是channel-wise multiplication,什么意思呢?uc是一个二维矩阵,sc是一个数,也就是权重,因此相当于把uc矩阵中的每个值都乘以sc。对应Figure1中的Fscale。

这里写图片描述

 

总结一下,我觉得这里最关键的两步就squeeze和excitation,其中squeeze比较简单就是利用全局平均池化层将原来的三维矩阵变成一维的矩阵。其物理意义代表每一个feature map的中要程度。然后excitation操作就是一个全链接的操作,已提取每个通道的权重分配情况,最后利用广播机制与第二个三维矩阵进行channel-wise multiplication相乘。

 

三:如何添加到实际的网络中间去;

 

现在大多数attention机制的模块嵌入其他的网络的方法一般都是利用残差的思想。

Figure2是在Inception中加入SE block的情况

 

Figure3是在ResNet中添加SE block的情况。

 

参考https://www.cnblogs.com/bonelee/p/9030092.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值