【论文解读】Concurrent Spatial and Channel `Squeeze & Excitation' in Fully Convolutional Networks

  • Paper


这篇论文提出了一种称为scSE(Concurrent Spatial and Channel `Squeeze & Excitation’) block的神经网络,它可以应用在CNN的任意层,用于增强CNN编码空间信息(spatial encoding)能力,提高CNN的图像识别能力。

在Kaggle image segmentation比赛–TGS Salt Identification Challenge中,它帮助我的ResNet34+U-Net模型在LB上的得分提升了0.032,排名提升了50+位。

SE(Squeeze & Excitation) Network / Paper

scSE的灵感源于SE block。Figure 1是SE block的架构图, F t r F_{tr} Ftr是常规的CNN layer, F s q ( . ) F_{sq}(.) Fsq(.)是’Squeeze & Excitation’中的’Squeeze’,通过global pooling函数将矩阵U(H x W x C)压缩为1 x 1 x C的通道向量。 F e x ( . , W ) F_{ex}(.,W) Fex(.,W)则是’Excitation’,通过全连接层(FC)的训练得到每个通道的重要性(by sigmoid),最终 F s c a l e ( . , . ) F_{scale}(.,.) Fscale(.,.)根据excitation来校准采样(feature recalibration),即调整特征矩阵的值: U * excitation(1 x 1 x C)。

【论文解读】Concurrent Spatial and Channel `Squeeze & Excitation' in Fully Convolutional Networks_第1张图片

【论文解读】Concurrent Spatial and Channel `Squeeze & Excitation' in Fully Convolutional Networks_第2张图片

ResNet、Inception等CNN的工作原理是相似的:

  • 首先,通过卷积层来提取图像特征
  • 将特征矩阵压缩成特征向量(adaptive global pooling)
  • 通过训练全连接层来找到特征与分类的关联
  • 最终计算出样本对应所有分类的概率

由此可知,图像特征的提取能力是CNN的核心能力,而SE block可以起到为CNN校准采样的作用。以Figure 3为例,图像样本有两个分类:[人, 酒瓶]。根据感受野(Receptive Field)理论,特征矩阵主要来自于样本的中央区域,处在边缘位置的酒瓶的图像特征很大概率会被pooling层抛弃掉。SE block的加入就可以通过 F s c a l e ( . , . ) F_{scale}(.,.) Fscale(.,.)来调整特征矩阵,增强酒瓶特征的比重,提高它的识别概率。

【论文解读】Concurrent Spatial and Channel `Squeeze & Excitation' in Fully Convolutional Networks_第3张图片


scSE Network

【论文解读】Concurrent Spatial and Channel `Squeeze & Excitation' in Fully Convolutional Networks_第4张图片

理解了SE之后再看scSE就简单多了,scSE在SE的基础上提出cSE、sSE、scSE这三个变种。cSE和sSE分别是根据通道和feature map cell的重要性来校准采样。scSE则是同时进行两种不同采样校准,并将它们的结果结合起来使用。

class SCSEModule(nn.Module):
    def __init__(self, ch, re=16):
        super().__init__()
        self.cSE = nn.Sequential(nn.AdaptiveAvgPool2d(1),
                                 nn.Conv2d(ch,ch//re,1),
                                 nn.ReLU(inplace=True),
                                 nn.Conv2d(ch//re,ch,1),
                                 nn.Sigmoid())
        self.sSE = nn.Sequential(nn.Conv2d(ch,ch,1),
                                 nn.Sigmoid())
    def forward(self, x):
        return x * self.cSE(x) + x * self.sSE(x)

END

本文分析了scSE工作原理:它可以帮助校准CNN的图像特征采样区域,提高CNN图像识别能力。

Refences

  • Concurrent Spatial and Channel `Squeeze & Excitation’ in Fully Convolutional Networks
  • Squeeze & Excitation Network
  • TGS_Salt_resnext50_unet_5Fold_scSE.ipynb

你可能感兴趣的:(deep,learning,CNN,SE,scSE)