一. 简介
"Squeeze-and-Excitation”(SE)模块
SE模块是通过显式地建模卷积特征通道之间的相互依赖性来提高网络的表示能力。
它是一种机制,使网络能够执行特征重新校准,通过这种机制可以学习使用全局信息来选择性地强调信息特征并抑制不太有用的特征。
如图,输入X做卷积,得到特征映射UU,特征映射UU再通过squeeze操作,产生通道描述符,再经过excitaion操作,特征映射UU被重新加权以生成SE块的输出,然后可以将其直接输入到随后的层中。
通道描述符作用: 嵌入了通道特征响应的全局分布,使来自网络全局感受野的信息能够被其较低层利用
squueeze操作: 降维操作 H*W*C -> 1*1*C
excitaion操作:过基于通道依赖性的自门机制为每个通道学习特定采样的激活,控制每个通道的激励,其实就是每个通道通过一个激活函数激活。
SE网络,是可以通过简单地堆叠SE构建块的集合来生成。SE块也可以用作架构中任意深度的原始块的直接替换。
二.Squeeze-and-Excitation块
1.输入变换
其中为卷积核, x为作用通道
2.Squeeze:全局信息嵌入
将全局空间信息压缩成一个通道描述符,通过使用全局平均池化生成通道统计实现。
通道描述符解决利用通道依赖性:每个学习到的滤波器都对局部感受野进行操作,因此变换输出UU的每个单元都无法利用该区域之外的上下文信息,在网络较低的层次上其感受野尺寸很小。
通过在空间维度H*W上收缩UU生成, 转换输出UU可以被解释为局部描述子的集合,这些描述子的统计信息对于整个图像来说是有表现力的。
3.Excitation:自适应重新校正
利用压缩操作中汇聚的信息,我们接下来通过第二个操作来全面捕获通道依赖性,使用sigmoid激活
为了限制模型复杂度和辅助泛化,通过在非线性周围形成两个全连接(FC)层的瓶颈来参数化门机制,一个ReLU,然后是一个参数为W2的升维层
4.模型:SE-Inception和SE-ResNet
Inception网络:多个Inception层
组成的,它的最大优点是可以一定程度上帮你省去指定CNN卷积核大小和MP调优的工作
三. 模型和计算复杂度
SENet通过堆叠一组SE块来构建。实际上,它是通过用原始块的SE对应部分(即SE残差块)替换每个原始块(即残差块)而产生的。
在括号内列出了残差构建块特定参数设置的形状和操作,并且在外部呈现了一个阶段中堆叠块的数量。fc后面的内括号表示SE模块中两个全连接层的输出维度。
ImageNet验证集上的单裁剪图像错误率(%)和复杂度比较
Top-1 err 即对一个图片,如果概率最大的是正确答案,才认为正确。
Top-5 err 即对一个图片,如果概率前五中包含正确答案,即认为正确。
Top-1 err,Top-5 err 是ImageNet 一种图片检测准确率的标准。
FLOPS是Fl**oating-point Operations Per Second 每秒所执行的浮点运算次数的英文缩写。它是一个衡量计算机计算能力的量,这个量经常使用在那些需要大量浮点运算的科学运算中。有时也会被记为flop/s。
GFLOPS 就是 Giga Floating-point Operations Per Second,即每秒10亿次的浮点运算数,常作为GPU性能参数但不一定代表GPU的实际表现,因为还要考虑具体如何拆分多边形和像素、以及纹理填充,理论上该数值越高越好。1GFlops = 1,000MFlops
SE块引入的附加参数。所有附加参数都包含在门机制的两个全连接层中,构成网络总容量的一小部分。更确切地说,引入的附加参数的数量由下式给出
其中r表示减少比率(在所有的实验中将r设置为16),S指的是阶段数量(每个阶段是指在共同的空间维度的特征映射上运行的块的集合),Cs表示阶段s的输出通道的维度,Ns表示重复的块编号。减少比率r是一个重要的超参数,它允许我们改变模型中SE块的容量和计算成本。
这些附加参数仅来自选通机制的两个FC层,因此只占总网络容量的一小部分。
四. 实验
实验数据集采用的是ImageNet 2012(1000个类别的128万张训练图像和5万张验证图像)
网络深度
与现代架构集成
SE块在非残差网络上的效果
与现有高性能网络比较
SE块 旨在通过使网络能够执行动态通道特征重新校准来提高网络的表示能力。
SE块 pytorch实现
self.se = nn.Sequential(
nn.AdaptiveAvgPool2d((1,1)),
nn.Conv2d(filter3,filter3//16,kernel_size=1),
nn.ReLU(),
nn.Conv2d(filter3//16,filter3,kernel_size=1),
nn.Sigmoid()
)