后resnet时代

2019-05-09  本文已影响0人  Woooooooooooooo

文章整理自其他网文,仅作学习,若有侵权请联系,感谢

SENet

Motivation

目前的卷积是在 2D 空间中做卷积,其本质上来说只建模了图像的空间信息,并没有建模通道之间的信息。于是,作者就尝试对 Channel 之间的信息进行显式建模。

网络结构

左边为 C'×H'×W' 的特征图,经过一系列卷积,pooling操作 Ftr 之后,得到 C×H×W 大小的特征图。接下来进行一个 Sequeeze and Excitation block。 

Sequeeze对C×H×W 进行 global average pooling,得到1×1×C 大小的特征图,这个特征图可以理解为具有全局感受野。

Excitation 使用一个全连接神经网络,对Sequeeze 之后的结果做一个非线性变换。 

特征重标定:使用 Excitation 得到的结果作为权重,乘到输入特征上。

总结 

总体来说思路很清晰,Motivation 也有一定的道理。此外,这个结构可以作为任意网络的子模块添加进去以提升精度,而且引入的计算量非常小。 

但是有一个问题在于,卷积过程本身在 Channel 之间也会有一个乘数,这个乘数是不是可以理解为建模了Channel 之间的信息呢?

如果作者对前面的卷积使用 C 路的 Group Convolution,然后与加入Sequeeze and Excitation block 前后的精度进行对比,或许文章会更有说服力一些。 

最终结果很不错,计算量几乎没变化,但是精度上升了,取得了 ImageNet 2017 的冠军。

SKNet

Motivation 

SKNet 使用了两个思路来提高精度: 

1. 很多网络使用了各种 Trick 来降低计算量,比如 ResNeXt,计算量大大减少,精度却略有提升。那么如果不牺牲那么多计算量,能否精度提高一些呢?比如使用大一点的Kernel,如 5×5 的卷积提升精度;

2. 结合现在普遍使用的 Attention 操作。

加了上面两个操作之后,显然计算量会上去,于是作者再加了一个Group Convolution 来做 trade off。 

网络结构

上述结构可以分为三个步骤: 

Split输入为 c×h×w 的特征图,和均表示 Group Convolution。这里使用 Group Convolution 以减少计算量。注意,这里两路 Group Convolution 使用的卷积核大小不一致,原因在于 Motivation 中说的第一点,提升精度。 

Fuse通过 Split 操作分成两路之后,再把两路结果进行融合,然后就是一个 Sequeeze and

Excitation block。 

SelectSelect 模块把 Sequeeze and Excitation block 模块的结果通过两个 softmax 以回归出 Channel 之间的权重信息。然后把这个权重信息乘到和中。这个过程可以看做是一个 soft attention。最好把两路的特征图进行相加得到输出特征图V。

总结 

整体感觉融合了较多的trick,Select 部分使用 soft attention 和 Sequeeze and Excitation block 中对特征图加权蛮像的,区别在于 Sequeeze and

Excitation block 考虑的是 Channel 之间的权重,而 Select 部分的 attention 不仅考虑了 Channel 之间的权重,还考虑了两路卷积的权重。 

同样的,SKNet可以很容易地嵌入到其他网络结构中。下图是基于ResNeXt-50 的 SENet 和 SKNet 计算量,以及精度对比。可以看到,计算量(GFLOPs)只是略有上升,精度方面相比于 ResNeXt-50 涨了 1.4% 左右:

上一篇下一篇

猜你喜欢

热点阅读