SENet Note

SENet 是 ImageNet 2017 的冠军模型,全称为 Squeeze-and-Excitation Networks。

arXiv链接:https://arxiv.org/abs/1709.01507

SENet 机制一句话介绍就是 reweight channel,即为每个通道加上一个自适应权重系数。

1 权重系数怎么计算?

1.1 SEBlock架构

1.2 模块实现

2 实现细节

2.1 压缩率

由于SEBlock中使用了两个全连接层来作为 Excitation 结构提取 channel 间的相关性。

所以为了减少计算量,第一层全连接的channel数量设为一个较少的值,以超参描述为输入channel数量的 $\cfrac{1}{r}$。

作者的实验表明当 $r=16$ 时,能够在仅损失微弱精度的情况下大幅降低模型计算量。

2.2 加多少个?

作者在ResNet的实验表明,在越靠后的 stage 上添加 SEBlock 对模型的提升越明显。

并且,在所有 stage 上都添加 SEBlock 的结果是最好的。

2.3 加在残差前后?

作者的实验表明,SEBlock 只要加在残差模块之内区别都不大;若加在残差模块之外则效果比较差。

并且,如果 SEBlock 直接加在 $3\times3$ 卷积层后,参数量会明显减少,因为 ResNet Bottleneck中 $3\times3$ 卷积前对channel 数量进行了压缩。

3 权重系数分布

作者可视化了对于不同类的输入,整个网络层的 Excitation 权重系数分布。

越靠后的SEBlock,其权重系数越有区分度,这与在不同stage添加SEBlock对模型的提升结果相吻合。

唯一的例外是最后一层的SEBlock,其结果近似于恒等映射,加不加没啥区别。