论文:Squeeze-and-Excitation Networks 2017.09
代码: https://github.com/hujie-frank/SENet
论文中用caffe实现
PyTorch复现版
​ 更多第三方复现版见README.md文件中Third-party re-implementations部分

一举获得ILSVRC 2017 classification submission冠军

简介

将卷积层通道数进行权值评分
分为压缩(Squeeze)和激励(Excitation)部分
理解CNN经典架构(七)——SENet

图示中

Fsq()F_{sq}()代表压缩映射,提取全局特征,Fig2中rr为压缩比

Fex()F_{ex}()代表激励,计算出权重值Fscale(,)F_{scale}(,),与对应的通道数相乘

SE块不仅可以插入标准网络结构(e.g. VGGNet),而且可以插入残差网络结构(e.g. ResNet)
理解CNN经典架构(七)——SENet
理解CNN经典架构(七)——SENet

实验

超参设置

减少比rr

考虑到参数数量及模型效果,设置减少比(Reduction ratio)rr为16

理解CNN经典架构(七)——SENet

压缩运算

在压缩运算(Squeeze Operator)中,全局平均池化比全局最大池化效果好
使用平均池化更能提取全局特征信息,而最大池化更偏向于局部特征信息
理解CNN经典架构(七)——SENet

激励运算

在激励运算(Excitation Operator)中,sigmoid激励效果最好
sigmoid在数值映射在[0, 1]范围较强

理解CNN经典架构(七)——SENet

SE Block插入位置

SE Block插入任意一层都能增强模型效果,
但建议移除Stage_5(占参数总量的4%),因为增幅效果<0.1% top-5 error on ImageNet
此外我看到SE is not working properly after 4th layer

理解CNN经典架构(七)——SENet

理解CNN经典架构(七)——SENet理解CNN经典架构(七)——SENet

不建议插入残差块加法运算,其他插入位置效果极为相似。

对比其他模型

完胜,毕竟ILSVRC 2017 classification submission冠军。

理解CNN经典架构(七)——SENet

理解

SENet对卷积层通道数进行权值评分
1.低层scale相近,共享低层特征(e.g. SE_2_3, SE_3_4)
2.高层scale分离,组合高层特征(e.g. SE_4_6, SE_5_1)
3.最后一层趋近于饱和。SE_5_2 scale 趋近于1,SE_5_3完成分类

理解CNN经典架构(七)——SENet

小结

SENet对卷积层通道数进行权值评分,可以很好与其他网络(VGG, ResNet)结合

相比于增加模型宽度(WRN中的width, ResNeXt中的cardinality),深度(depth),SE Block权重通道值,增加的参数少,增加的计算量小,增强效果好

相关文章: