论文笔记-Squeeze-and-Excitation Networks
作者提出为了增强网络的表达能力,现有的工作显示了加强空间编码的作用。在这篇论文里面,作者重点关注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
Ftr:X∈RW′×H′×C′,U∈RW×H×C
设V=[v1,v2,...,vC]表示学习到的filter kernel, vc表示第c个filter的参数,那么Ftr的输出U=[u1,u2,...,uC]:
vsc是一个channel的kernel,一个新产生的channel是原有所有channel与相应的filter kernel卷积的和。channel间的关系隐式的包含在vc中,但是这些信息和空间相关性纠缠在一起了,作者的目标就是让网络更加关注有用的信息。分成了Squeeze和Excitation两步来完成目的。
Squeeze
现有网络的问题:由于卷积实在local receptive field做的,因此每个卷积单元只能关注这个field内的空间信息。
为了减轻这个问题,提出了Squeeze操作将全局的空间信息编码到channel descriptor中,具体而言是通过global average pooling操作完成的。
就是求每个channel的均值,作为全局的描述。
Excitation: Adaptive Recalibration
为了利用Squeeze得到的信息,提出了第二个op,这个op需要满足2个要求:一个是足够灵活,需要能够学习channel间的非线性关系,另一个就是能够学习non-mutually-exclusive关系,这个词我的理解是非独占性,可能是说多个channnel之间会有各种各样的关系吧。
$\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的输出。
Fscale表示feature map uc∈RW×H和sc的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
- Example
SE block可以很方便的加到其他网络结构上。 - 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)))
-
网络结构
-
Experiments
参考文献:
[1] Hu, Jie, Li Shen, and Gang Sun. "Squeeze-and-excitation networks." arXiv preprint arXiv:1709.01507 (2017).
欢迎关注公众号:CV_WithMind 共同学习,不定期分享论文和资源
本文来自博客园,作者:CoderInCV,转载请注明原文链接:https://www.cnblogs.com/haoliuhust/p/8196572.html
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 趁着过年的时候手搓了一个低代码框架
· 用 C# 插值字符串处理器写一个 sscanf
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!