当前位置:   article > 正文

屏蔽预训练模型的权重。 只训练最后一层的全连接的权重。_CNN模型合集 | 19 SENet...

senet预训练

59acd8671ee127e9ec92fb3045203e3b.png

SENet,胡杰(Momenta)在2017.9提出,通过显式地建模卷积特征通道之间的相互依赖性来提高网络的表示能力,SE块以微小的计算成本为现有的最先进的深层架构产生了显著的性能改进,SENet block和ResNeXt结合在ILSVRC 2017赢得第一名,Squeeze-and-Excitation Networks,作者源码核心思想:

  • 提出背景:现有网络很多都是主要在空间维度方面来进行特征通道间的融合(如Inception的多尺度)。卷积核通常被看做是在局部感受野上,将空间上和特征维度上的信息进行聚合的信息聚合体。
  • 特征重标定:通过学习的方式来自动获取到每个特征通道的重要程度(即feature map层的权重),以增强有用的特征,抑制不重要的特征。
  • Squeeze:全局信息嵌入,全局平均池化成1*1
  • Excitation:自适应调整,用两个全连接,训练参数W,得到每通道的权重s

cd588c54dd51c2edfa34895000c86aa8.png

SE模块

  • 总流程:X经过一系列传统卷积得到U,对U先做一个Global Average Pooling(Fsq),输出的1x1xC数据再经过两级全连接(Fex),最后用sigmoid限制到[0, 1]的范围,把这个值作为scale乘到U的C个通道上,输入到下级。
  • Squeeze:顺着空间维度来压缩特征,就是在空间上做全局平均池化,每个通道的二维特征变成了一个实数,这个实数某种程度上具有全局的感受野,并且输出的维度和输入的通道数相匹配。
    • 用GAP是因为scale是对整个通道作用的,利用的是通道间的相关性,要屏蔽掉空间分布相关性的干扰。

f26f364d93a9faedbb2563355680b778.png
  • Excitation:用2个全连接来实现 ,第一个全连接把C个通道压缩成了C/r个通道来降低计算量(后面跟了RELU,增加非线性并减少计算量),r是指压缩的比例一般取r=16;第二个全连接再恢复回C个通道(后面跟了Sigmoid归一化到0~1),Sigmoid后得到权重 s。s就是U中C个feature map的权重,通过训练的参数 w 来为每个特征通道生成权重s,其中参数 w 被学习用来显式地建模特征通道间的相关性。
    • 用全连接是因为scale要基于全部数据集来训练得出,而不是基于单个batch,所以后面要加全连接层来进行训练。全连接层也融合了各通道的feature map信息。

d905155ec8049b9479938e7006130829.png
  • Reweight(Scale):将 Excitation 的输出的权重看做是经过特征选择后的每个特征通道的重要性,然后通过乘法逐通道加权到先前的特征上,这就完成了在通道维度上的对原始特征的重标定。
    • 低层级中scale的分布和输入的类别无关;靠后层级的scale大小和输入的类别强相关;在倒数第2层几乎所有的scale都饱和,大多数激活都接近于1,当所有激活都取值1时,SE块就会缩减为identity操作符;而最后一层的scale在不同的类上出现了类似的模式,不太重要。去掉最后阶段的SE块可以显著减少额外的参数计数,性能损失很小,因为越往后通道越多参数越大。

fe5bef853d23d389c7ddadecc8dd899a.png

嵌入到现有网络中
SE 模块可以嵌入到现在几乎所有的网络结构中,左图是将 SE 模块嵌入到 Inception 结构;右图是将 SE 嵌入到 ResNet 模块中,在 Addition 前对分支上 Residual 的特征进行了特征重标定,否则如果对 Addition 后主支上的特征进行重标定,由于在主干上存在 0~1 的 scale 操作,在网络较深 BP 优化时就会在靠近输入层容易出现梯度消散的情况,导致模型难以优化。

e32945310568d35d98c22c0a68ec18ff.png


fc后面的内括号表示SE模块中两个完全连接的层的输出维度。

ea09a84045e6995c5d37a35a91619ae3.png

论文测试结果
在所有的结构上SENet要比非SENet的准确率更高出1%左右,而计算复杂度上只是略微有提升(增加的主要是全连接层,全连接层其实主要还是增加参数量,对速度影响不会太大)。在MobileNet上提升更高。而且SE块会使训练和收敛更容易。CPU推断时间的基准测试:224×224的输入图像,ResNet-50 164ms,SE-ResNet-50 167ms。

bf5429d5a2862a2e799cdf6cc6e22c8a.png


在ImageNet上不同尺寸的比较。SENet-154实质上是一个 SE-ResNeXt-152(64x4d),并做了一些其他修改和训练优化上的小技巧。可以看出 SENet 获得了迄今为止在 single-crop 上最好的性能。

b9afab6f7095dc7b2bb736884184cd88.png


在场景分类和目标检测上的效果。

147a87a9025daae782130096df3baa3b.png


在 ILSVRC 2017 竞赛中,SENet-154在测试集上获得了 2.251% Top-5 错误率。对比于去年第一名的结果 2.991%, 我们获得了将近 25% 的精度提升。

75237fcdecaf0a60fc58cb55f856582f.png

caffe可视化
SENet-154.prototxt

0a826563679390f7113ad58ba08068dc.png

6a008a5bf937d838aaef056b7b7d61c2.png

参考
作者课件 翻译 公式参考
作者源码(caffe): https://github.com/hujie-frank/SENet(有模型)

SENet-Tensorflow推理: https://github.com/taki0112/SENet-Tensorflow

SENet-PyTorch训练: https://github.com/miraclewkf/SENet-PyTorch

MXNet训练: https://github.com/bruinxiong/SENet.mxnet

另外在我的主页中还能看到其他系列专栏:【OpenCV图像处理】【斯坦福CS231n笔记】
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/546128
推荐阅读
相关标签
  

闽ICP备14008679号