Squeeze-and-Excitation Networks(SENet) 学习笔记
1. 简介
作者提出了一个SE块的概念,它是根据channel之间的相关性来进行显式建模,从而实现自适应地channel-wise上的特征响应,把重要的特征进行强化、不重要的特征进行抑制来提升准确率。
2. 网络结构
是传统的卷积结构,输入为的,和的。
SENet增加的是后面的部分:首先对进行一个Global Average Pooling,即图中的,作者称之为Squeeze,得到一个的数据。
接着是两个全连接层,即图中的,作者称之为Excitation。
最后用sigmoid进行归一化,把这个值作为scale乘到的 个通道上,作为下一级的输入。
下面来看一些细节。
2.2.1
很简单的一个传统卷积。
2.2.2 Squeeze
就是一个简单的global average pooling,将所有点的信息都平均成了一个值。这一步的意义在于,得到的的数据代表着个feature map的数值分布情况(scale),是一个全局信息。
2.2.3 Excitation
、为两个全连接,的shape为,是一个缩放参数,作者经过多次试验取了16,经过这样一个全连接层操作,得到一个的数据,把维降到了维,并经过一个ReLU函数。
同理,经过一个shape为的之后,恢复为一个的数据,并经过一个sigmoid函数。
-
为什么要加两个全连接层?
是为了利用通道间的相关性来训练出真正的scale。前面的squeeze输出都是基于某个channel的feature map,而真正的scale应该基于全部的数据集,需要融合各个通道的feature map信息。
这个s其实是本文的核心,它是用来刻画tensor U中C个feature map的权重。而且这个权重是通过前面这些全连接层和非线性层学习得到的,因此可以end-to-end训练。
2.2.4
是一个二维矩阵,是一个权重,把中的每个值都乘以得到带权重的输出。