作者提出为了增强网络的表达能力,现有的工作显示了加强空间编码的作用。在这篇论文里面,作者重点关注channel上的信息,提出了“Squeeze-and-Excitation"(SE)block,实际上就是显式的让网络关注channel之间的信息 (adaptively recalibrates channel-wise feature responsesby explicitly modelling interdependencies between channels.)。SEnets取得了ILSVRC2017的第一名, top-5 error 2.251%

之前的一些架构设计关注空间依赖

Inception architectures: embedding multi-scale processes in its modules

Resnet, stack hourglass

spatial attention: Spatial transformer networks

作者的设计思路:

we investigate a different

aspect of architectural design - the channel relationship


Our goal is to improve the representational power of a network by explicitly

modelling the interdependencies between the channels of its

convolutional features. To achieve this, we propose a mechanism that allows the network to perform feature recalibration, through which it can learn to use global information

to selectively emphasise informative features and suppress

less useful ones.
作者希望能够对卷积特征进行recalibration,根据后文我的理解就是对channel进行加权了。

相关工作

网络结构:

VGGNets, Inception models, BN, Resnet, Densenet, Dual path network

其他方式:Grouped convolution, Multi-branch convolution, Cross-channel correlations

This approach reflects an assumption that channel relationships can

be formulated as a composition of instance-agnostic functions with local receptive fields.


Attention, gating mechanisms

SE block

\({F_{tr}}:X \in R{^{W' \times H' \times C'}},{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} U \in {\kern 1pt} {\kern 1pt} {R^{W \times H \times C}}\)

设\(V = [v_1, v_2, ..., v_C]\)表示学习到的filter kernel, \(v_c\)表示第c个filter的参数,那么\(F_{tr}\)的输出\(U = [u_1,u_2,...,u_C]\):

\[{u_c} = {\rm{ }}{{\rm{v}}_c} * X = \sum\limits_{s = 1}^{C'} {v_c^s} * {x^s}
\]

\(v_c^s\)是一个channel的kernel,一个新产生的channel是原有所有channel与相应的filter kernel卷积的和。channel间的关系隐式的包含在\(v_c\)中,但是这些信息和空间相关性纠缠在一起了,作者的目标就是让网络更加关注有用的信息。分成了Squeeze和Excitation两步来完成目的。

Squeeze

现有网络的问题:由于卷积实在local receptive field做的,因此每个卷积单元只能关注这个field内的空间信息。

为了减轻这个问题,提出了Squeeze操作将全局的空间信息编码到channel descriptor中,具体而言是通过global average pooling操作完成的。

\[{z_c} = {F_{sq}}({u_c}) = {1 \over {W \times H}}\sum\limits_{i = 1}^W {\sum\limits_{j = 1}^H {{u_c}(i,j)} }
\]

就是求每个channel的均值,作为全局的描述。

Excitation: Adaptive Recalibration

为了利用Squeeze得到的信息,提出了第二个op,这个op需要满足2个要求:一个是足够灵活,需要能够学习channel间的非线性关系,另一个就是能够学习non-mutually-exclusive关系,这个词我的理解是非独占性,可能是说多个channnel之间会有各种各样的关系吧。

\[s = {F_{ex}}(z,W) = \sigma (g(z,W)) = \sigma ({W_2}\delta ({W_1}z))
\]

$\delta \(是ReLu,\){W_1} \in {R^{{C \over r} \times C}}\(,\){W_2} \in {R^{C \times {C \over r}}}\(,\)W_1\(是bottleneck,降低channel数,\)W_2\(是增加channel数,\)\gamma\(设置为16。最终再将\)U\(用\)s$来scale,其实也就是加权了。这样就得到了一个block的输出。

\[{x_c} = {F_{scale}}({u_c},{s_c}) = {s_c} \cdot {u_c}
\]

\(F_{scale}\)表示feature map \(u_c \in R^{W \times H}\)和\(s_c\)的channel-wise乘法

The activations act as channel weights

adapted to the input-specific descriptor z. In this regard,

SE blocks intrinsically introduce dynamics conditioned on

the input, helping to boost feature discriminability

  1. Example



    SE block可以很方便的加到其他网络结构上。
  2. Mxnet code
squeeze = mx.sym.Pooling(data=bn3, global_pool=True, kernel=(7, 7), pool_type='avg', name=name + '_squeeze')
squeeze = mx.symbol.Flatten(data=squeeze, name=name + '_flatten')
excitation = mx.symbol.FullyConnected(data=squeeze, num_hidden=int(num_filter*ratio), name=name + '_excitation1')#bottleneck
excitation = mx.sym.Activation(data=excitation, act_type='relu', name=name + '_excitation1_relu')
excitation = mx.symbol.FullyConnected(data=excitation, num_hidden=num_filter, name=name + '_excitation2')
excitation = mx.sym.Activation(data=excitation, act_type='sigmoid', name=name + '_excitation2_sigmoid')
bn3 = mx.symbol.broadcast_mul(bn3, mx.symbol.reshape(data=excitation, shape=(-1, num_filter, 1, 1)))
  1. 网络结构

  2. Experiments

参考文献:

[1] Hu, Jie, Li Shen, and Gang Sun. "Squeeze-and-excitation networks." arXiv preprint arXiv:1709.01507 (2017).

欢迎关注公众号:vision_home 共同学习,不定期分享论文和资源

论文笔记-Squeeze-and-Excitation Networks的更多相关文章

  1. 论文笔记之:Action-Decision Networks for Visual Tracking with Deep Reinforcement Learning

    论文笔记之:Action-Decision Networks for Visual Tracking with Deep Reinforcement Learning  2017-06-06  21: ...

  2. 论文笔记(1)-Dropout-Improving neural networks by preventing co-adaptation of feature detectors

    Improving neural networks by preventing co-adaptation of feature detectors 是Hinton在2012年6月份发表的,从这篇文章 ...

  3. 论文笔记:Diffusion-Convolutional Neural Networks (传播-卷积神经网络)

    Diffusion-Convolutional Neural Networks (传播-卷积神经网络)2018-04-09 21:59:02 1. Abstract: 我们提出传播-卷积神经网络(DC ...

  4. 【论文笔记】Progressive Neural Networks 渐进式神经网络

    Progressive NN Progressive NN是第一篇我看到的deepmind做这个问题的.思路就是说我不能忘记第一个任务的网络,同时又能使用第一个任务的网络来做第二个任务. 为了不忘记之 ...

  5. 论文笔记——Factorized Convolutional Neural Networks

    1. 论文思想 将3D卷积分解为spatial convolution in each channel and linear projection across channels. (spatial ...

  6. 论文笔记—Flattened convolution neural networks for feedforward acceleration

    1. 论文思想 一维滤过器.将三维卷积分解成三个一维卷积.convolution across channels(lateral), vertical and horizontal direction ...

  7. 论文笔记:Fully-Convolutional Siamese Networks for Object Tracking

    Fully-Convolutional Siamese Networks for Object Tracking 本文作者提出一个全卷积Siamese跟踪网络,该网络有两个分支,一个是上一帧的目标,一 ...

  8. 深度学习论文笔记:Deep Residual Networks with Dynamically Weighted Wavelet Coefficients for Fault Diagnosis of Planetary Gearboxes

    这篇文章将深度学习算法应用于机械故障诊断,采用了“小波包分解+深度残差网络(ResNet)”的思路,将机械振动信号按照故障类型进行分类. 文章的核心创新点:复杂旋转机械系统的振动信号包含着很多不同频率 ...

  9. 论文笔记《Fully Convolutional Networks for Semantic Segmentation》

    一.Abstract 提出了一种end-to-end的做semantic segmentation的方法,也就是FCN,是我个人觉得非常厉害的一个方法. 二.亮点 1.提出了全卷积网络的概念,将Ale ...

随机推荐

  1. Just for 面试

    ZOJ题目分类 初学者题: 1001 1037 1048 1049 1051 1067 1115 1151 1201 1205 1216 1240 1241 1242 1251 1292 1331 1 ...

  2. 基于git的代码版本管理规范及流程-简版

    基于git的简单实用的版本管理规范及流程,包括:代码库的分布.人员角色的划分.代码提交合并流程.代码冲突处理.分支管理. 代码库分类 根据代码库分布的位置及作用,分为以下几类: 主库:位于服务端,所有 ...

  3. springMVC+commons-fileupload上传文件大小限制异常

    异常信息: 严重: Servlet.service() for servlet [suibian] in context with path [/SpringMvcDemo3] threw excep ...

  4. Python函数篇(2)-递归函数、匿名函数及高阶函数

    1.全局变量和局部变量 一般定义在程序的最开始的变量称为函数变量,在子程序中定义的变量称为局部变量,可以简单的理解为,无缩进的为全局变量,有缩进的是局部变量,全局变量的作用域是整个程序,而局部变量的作 ...

  5. 深港澳大湾区第三次.NET技术交流会圆满成功

    2017年12月10日,一场以云.devops.微服务.容器是现在这个发展阶段的软件形态, 本次活动我们围绕这些话题介绍.NET生态下的发展本地社区活动,这次活动还得到如鹏网杨中科老师的大力支持开通网 ...

  6. SQL Server学习之路(四):“增删改查”之“删”

    0.目录 1.前言 2.通过SSMS删除 3.通过SQL语句删除 3.1 删除单行数据 3.2 删除所有行数据 3.3 删除表和数据库 1.前言 增删改查都是对数据的操作,其中"删" ...

  7. WinCE的C#编程,对float型进行四舍五入保留两位小数,小数进行四舍五入操作,Math.Round的应用案例。

    private  float ConvertFloat4Se5Ru(float flotValue) {              int iValue = (int)Math.Round(flotV ...

  8. 菜鸟版JAVA设计模式—外观模式

    外观模式是一种比較easy理解的模式,作用非常easy.就是解耦合. 结构也是非常easy,一个外观类.这个外观类持有非常多的业务类. 再由客户类去调用这个外观类去实现一些列的业务操作... 这个模式 ...

  9. Android学习笔记(10).布局管理器

    布局管理器的几个类都是ViewGroup派生的,用于管理组件的分布和大小,使用布局管理器能够非常好地解决屏幕适配问题. 布局管理器本身也是一个UI组件,布局管理器能够相互嵌套使用,以下是布局管理器的类 ...

  10. Android之使用MediaMetadataRetriever类获取媒体信息

    一.昨天.介绍了使用MediaMetadataRetriever类来获取视频第一帧:http://blog.csdn.net/u012561176/article/details/47858099,今 ...