人工不智能

【论文解读】Concurrent Spatial and Cha

2019-03-06  本文已影响0人  A君来了

这篇论文提出了一种称为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,因此,有必要先了解SE block。

Figure 1: SE block arch Figure 2: SE-ResNet arch

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

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

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

Figure 3: image sample

scSE Network

Figure 4: scSE arch

理解了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

上一篇 下一篇

猜你喜欢

热点阅读