Squeeze-and-Excitation Networks-----SENet

155 阅读2分钟

Squeeze-and-Excitation Networks(SENet)是CVPR2018公布的一种全新的图像识别结构,它通过对特征通道间的相关性进行建模,把重要的特征进行强化来提升准确率。是目前流行的一种子结构

SQUEEZE-AND-EXCITATION BLOCKS

上图是SE-block 结构,FtFt是卷积结构,XX和UU是卷积操作的输入与输入,SE-block对UU进行了加权的重标定. 其中包含 FsFs 和 FeFe 操作(由于公式编辑器的原因,用tt代替trtr, ss 代替sqsq、 ee代替exex).

Squeeze: Global Information Embedding

对于squeeze部分,作者提出将全局空间信息 squeeze 为 channel 描述子,通过使用全局平均池化(GAP)来生成 channel-wise 的统计 zz.

zc=Fs(Uc)=1H✖️W∑iH∑jWuc(i,j)zc=Fs(Uc)=1H✖️W∑iH∑jWuc(i,j)

Excitation: Adaptive Recalibration

为了利用 squeeze 模块获得信息,旨在完全获取 channel-wise 级的依赖关系. 作者认为自适应重标定需要满足以下两个准则:

  • 能够学得各个 channel 之间的非线性相互关系
  • 必须学的是非互斥得关系,因为可以有多个 channel 被强调,而不是 one-hot 激活

s=Fe(z,W)=σ(g(z,W))=σ(W2δ(W1z))s=Fe(z,W)=σ(g(z,W))=σ(W2δ(W1z))

W1W1, W2W2为全连接, δδ 为 relu 激活. 对于激励模块,作者首先使用一个全连接层对 GAP 结果以 CrCr降维, 然后接 relu 激活函数学习非线性相关性,之后再跟一个全连接恢复 channel 维度.

usage

  • SE-block 可用于分类与检测. 对于标准网络结构如VGGNet,SE-block 可以用在每一个卷积+非线性操作之后. Fig.2Fig.2和Fig.3Fig.3分别是SE-Inception module和SE-Resnet module.
  • ratio. 在ImageNet上,作者得到的最佳ratio为16,可做相对参考

简单代码(keras)


def squeeze_excitation_layer(x, ratio, out_dim):

        squeeze = GlobalAveragePooling2D()(x)
        excitation = Dense(units=out_dim // ratio)(squeeze)
        excitation = Activation('relu')(excitation)
        excitation = Dense(units=out_dim)(excitation)
        excitation = Activation('sigmoid')(excitation)
        excitation = Reshape((1, 1, out_dim))(excitation)
        scale = multiply([x, excitation])

    return scale

详细链接:完美起航-SENet详解及Keras复现代码