ResNet变体:Res2Net

今天跟大家分享TPAMI2021中的一篇文章,文章详细信息如下:

ResNet变体:Res2Net_第1张图片

这篇文章是ResNet的变体,通过改进ResNet中的残差模块,在几乎不改变计算量的前提下,提高了网络提取多尺度特征的能力。

下载链接:https://arxiv.org/abs/1904.01169

开源代码地址:https://github.com/Res2Net

0.动机

在图像分类、目标检测、分割等计算机视觉任务中,网络提取多尺度特征的能力是至关重要的。

当前很多Backbone都是在layer-wise这个层面做改进,以提高网络提取多尺度特征的能力。这篇文章提出在一个更细的粒度(a more granular level)中改进,即改进Residual Block内部,以提高该模块提取多尺度特征的能力。

1.Res2Net

ResNet中的Bottleneck block如下图中图(a)所示:

ResNet变体:Res2Net_第2张图片

作者以上图中图(a)中的结构为基础,构造上图中图(b)所示的结构,并将其称作Res2Net模块。

在Res2Net模块中,将输入特征分为 s s s组,分别记作 x i \mathbf{x}_{i} xi,$ i \in{1,2, \ldots, s}$;每组feature map的通道数均为输入feature map通道数的 1 / s 1 / s 1/s。除了 x 1 \mathbf{x}_{1} x1外,每组feature map都会经过1个 3 × 3 3 \times 3 3×3卷积,将该卷积操作记作 K i ( ) \mathbf{K}_{i}() Ki()。除了 x 1 \mathbf{x}_{1} x1 x 2 \mathbf{x}_{2} x2外,第 i i i组的feature map x i \mathbf{x}_{i} xi先与前一组 K i − 1 ( ) \mathbf{K}_{i-1}() Ki1()的输出相加,将相加后的结果进行 K i ( ) \mathbf{K}_{i}() Ki()操作。上述操作可用如下公式表示:

y i = { x i i = 1 K i ( x i ) i = 2 K i ( x i + y i − 1 ) 2 < i ⩽ s \mathbf{y}_{i}=\left\{\begin{array}{ll} \mathbf{x}_{i} & i=1 \\ \mathbf{K}_{i}\left(\mathbf{x}_{i}\right) & i=2 \\ \mathbf{K}_{i}\left(\mathbf{x}_{i}+\mathbf{y}_{i-1}\right) & 2yi=xiKi(xi)Ki(xi+yi1)i=1i=22<is

将这 s s s组的输出在通道维度拼接,然后进行 1 × 1 1 \times 1 1×1卷积操作。

显然,第 i i i组的卷积操作 K i ( ) \mathbf{K}_{i}() Ki()的输入包含了多组输入特征: { x j , j ≤ i } \left\{\mathbf{x}_{j}, j \leq i\right\} {xj,ji}。Res2Net能够提取不同感受野、多种尺度的特征,能够有效地提取全局特征和局部特征。

由于该模块是residual-like connections within a single residual block,因此将其称作Res2Net。

Res2Net模块不仅可以无缝替换原ResNet中的残差结构,还可以与多种结构融合,形成更强的Backbone。

比如可以将Res2Net模块与ResNeXt、SE结合:参照ResNeXt,将每组中的 3 × 3 3 \times 3 3×3卷积改为分组卷积;在残差连接前加入SE block。形成的网络结构如下图所示:

ResNet变体:Res2Net_第3张图片

关于ResNeXt的相关信息,参考ResNeXt。

2.将Res2Net应用于计算机视觉任务

2.1 图像分类

在ImageNet数据集上,分别对ResNet、ResNeXt、DLA、Big-Little Net等多种网络进行改进,将其中的残差模块替换为Res2Net模块,Res2Net模块中分组为4,即 s = 4 s=4 s=4。性能提升情况如下表所示:

ResNet变体:Res2Net_第4张图片

在上表中,改进后的网络与原baseline网络保持几乎相当的参数量和计算量。可以看到,使用了Res2Net模块的网络,网络性能均有明显提高。

2.2 目标检测

分别在PASCAL VOC07和COCO数据集上,使用Faster R-CNN目标检测方法,以ResNet-50和Res2Net-50作为backbone,实验结果如下表所示:

ResNet变体:Res2Net_第5张图片

从上表中可以看到,对于不同的数据集,使用Res2Net-50作为Backbone能够提高检测器性能。

2.3 语义分割

在PASCAL VOC12数据集上,使用Deeplab v3+方法,分别使用ResNet-50和Res2Net-50、ResNet-101和Res2Net-101作为Backbone完成语义分割任务,实验结果如下表所示:

ResNet变体:Res2Net_第6张图片

从上表中可以看出,使用Res2Net作为Backbone能够提高网络性能。其中Setting一栏表示Res2Net模块配置, x w × y s xw \times ys xw×ys中的 x x x表示每组中feature map通道数, y y y表示分组数量,即 s s s的值。

使用ResNet-101和Res2Net-101作为Backbone的网络分割结果对比如下图所示:

ResNet变体:Res2Net_第7张图片

2.4 实例分割

在COCO数据集上,使用Mask R-CNN方法进行实例分割,分别使用ResNet-50和Res2Net-50作为Backbone,结果如下表所示:

ResNet变体:Res2Net_第8张图片

从上表中可以看出,使用Res2Net-50代替ResNet-50作为Backbone,能够提高Mask R-CNN性能。

3.总结

作者在ResNet中残差模块基础上设计出了Res2Net模块,该模块能进一步提取多尺度特征。

使用Res2Net代替原网络中的ResNet Backbone,能够提高baseline网络在图像分类、目标检测、语义分割、实例分割等多种计算机视觉任务中的性能,而且几乎不增加计算量。

推荐阅读:

ResNet从理论到实践(一)ResNet原理

ResNet从理论到实践(二)使用ResNet18进行猫狗分类

ResNet变体:ResNeXt

如果你对计算机视觉中的目标检测、跟踪、分割、轻量化神经网络感兴趣,欢迎关注公众号一起交流学习~
ResNet变体:Res2Net_第9张图片

你可能感兴趣的:(ResNet入门和进阶,计算机视觉,卷积神经网络,深度学习)