本篇介绍两个图像分类方面的工作:SENet 和 SKNet,听这名字就知道,这两个是兄弟。SENet 提出了 Sequeeze and Excitation block,而 SKNet 提出了 Selective Kernel Convolution,二者都可以很方便的嵌入到现在的网络结构,比如 ResNet、Inception、ShuffleNet,实现精度的提升。
作者丨郭晓锋
单位丨北京爱奇艺科技有限公司算法工程师
研究方向丨图像生成
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。
Select:Select 模块把 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% 左右:

#
• 稿件确系个人原创作品,来稿需注明作者个人信息(姓名+学校/工作单位+学历/职位+研究方向)
• PaperWeekly 默认每篇文章都是首发,均会添加“原创”标志
关于PaperWeekly返回搜狐,查看更多
责任编辑: