Squeeze-and-Excitation Networks 的理解



SE-Block 主要是考虑到了不同通道之间所占的重要性可能不一样,而以前的网络中并没有考虑到这一点,而是把所有通道的重要性当成一样来处理的。

不同的通道的重要性是通过学到的一组权值来scale的,相当于经过加入权值进来之后,对原来的feature的一个重新的标定,具体的结构如下:


相当于先将input(h*w*c)沿着size方向经过Squeeze操作变成(1*1*c)的,

然后再经过Excitation这一步学到一个权重W,

最后根据学到的权重W 再经过scale操作变成(h*w*c)的output, 可以看出,input

和Output的shape是一样的,但是每个位置上的值却是经过重新标定的,实际上直观地看这个网络BLOCK 应该会提升性能,因为假设W是identity那么就是原来的情况,这里的思想个人感觉有点像Resduial里的想法,就是有一条路可以保证不变,然后另外一条路多少可以学到一些,所以得到的网络是有提升的,不过Resduial里面还有其他优点,比如可以避免因为网络过深而带来的梯度消失问题。

下面举例说明具体的情况。



左图是Inception中添加了SE-block之后的结构,右图是Residual添加了SE-block之后的结构,框右下角的数字是输出的shape,个人觉得之所以以这两个网络为例说明是因为目前一般会在网络的深度上和宽度上对网络进行设计,而这两个刚好是代表。

从Inception输出之后的shape是c * h*w, 

step1. 沿着size的方向作Global average pooling, 出来的shape 是c*1*1,

step2.经过一个FC层,出来的是(c/16, 1, 1),注意可以不是16,然后经过Relu,

  然后再经过一个FC层,再经过一个Sigmoid 层,output的shape是(c, 1, 1)这里没有注意顺序。这一步做完之后出来了c个weight,

step3. 根据上面得到的c个weight,分别scale之后作为最终的输出,这里的scale的意思是比如得到的是(0.1,0.2,0.7)那么就在对应的通道上乘上对应的weight.

欢迎指正!多谢! 

 

  • 7
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值