论文链接:https://arxiv.org/abs/1904.01169
摘要
对于许多视觉任务来说,在多个尺度上表示特征是非常重要的。卷积神经网络(CNNs)不断发展,并显示出较强的多尺度表示能力,在广泛的应用中一致取得了性能的提升。然而,大多数现有的方法以分层的方式表示多尺度特性。在本文提出了一种新的CNNs模块,即Res2Net,通过在一个残差块内构造分层的类残差连接。Res2Net以粒度级别表示多尺度特性,并增加了每个网络层的感受野范围。本文提出的Res2Net块可以插入到最先进的CNN主干模型中,例如ResNet、ResNeXt和DLA。我们在所有这些模型上评估了Res2Net模块,在广泛使用的数据集(如CIFAR-100和ImageNet)上相比基准模型性能都得到了提升。针对典型的计算机视觉任务,如目标检测、分类和显著性目标检测,模型简化测试和实验结果进一步验证了Res2Net相对于最先进的基准方法的优越性。源代码和经过训练的模型将会公开。
1 介绍
视觉模式在自然自然场景中以多尺度呈现,如图1所示。首先,同一图像中的物体尺寸可能不同,例如,沙发和杯子的尺寸是不同的。其次,对象的基本上下文信息可能占据比对象本身更大的区域。例如,我们需要依赖大桌子作为上下文来更好地判断放在上面的小黑点是杯子还是笔架。第三,感知来自不同尺度的信息对于细粒度分类和语义分割等任务是必不可少的。因此,良好的多尺度特征对于视觉任务至关重要,包括图像分类[22]、目标检测[33]、注意预测[35]、目标跟踪[50]、动作识别[36]、语义分割[3]和显著性目标检测[18]。
图1 多尺度表示对于各种视觉任务都是必不可少的,比如感知目标物体的边界、区域和语义类别。即使对于最简单的识别任务,从非常不同的尺度感知信息对于理解部件、物体(例如,本例中的沙发、桌子和杯子)及其周围的上下文(例如,‘on the table’上下文有助于识别黑色斑点)也是必不可少的。
毫无疑问,多尺度特征在传统的特征设计[1]、[31]和深度学习[6]、[18]、[29]、[39]、[44]、[52]中都得到了广泛的应用。在视觉任务中获取多尺度表示需要特征提取器使用大范围的感受野来描述不同尺度下的物体/部件/上下文。卷积神经网络(CNNs)通过一堆卷积操作自然地学习由粗到精的多尺度特征。神经网络固有的多尺度特征提取能力,使其能够有效地表示出大量的视觉任务。如何设计更高效的网络体系结构是进一步提高CNNs性能的关键。
近年来,[6]、[9]、[17]、[19]、[20]、[22]、[37]、[39]、[43]、[47]等骨干网络在众多视觉任务中取得了显著进展,表现出了世界先进水平。早期的架构,如AlexNet[22]和VGGNet[37]栈卷积运算符,使得多尺度特性的数据驱动学习成为可能。随后,通过使用不同内核大小的conv层(如InceptionNets[38] -[40])、残差模块(如ResNet[17])、密集连接(如DenseNet[20])和分层聚合(如DLA[47]),提高了多尺度能力的效率。骨干CNN体系结构的发展表明了更有效和高效的多尺度表示的发展趋势。
在这项工作中,我们提出了一个简单而有效的多尺度处理方法。与现有的增强CNNs分层多尺度表示的方法不同,我们在更细粒度上提高了CNNs的多尺度表示能力。为了实现这一目标,我们使用一组w个通道,较小的滤波器组取代 n个通道大小为3×3 的滤波器(不失一般性,我们使用n = s×w),如图2所示,这些较小的滤波器组连接在一个分层类残差网络中来增加输出特性可以代表的尺度。具体来说,我们将输入特征映射划分为几个组。一组滤波器首先从一组输入特征映射中提取特征。然后,将前一组的输出特性与另一组输入特性映射一起发送到下一组滤波器。这个过程重复几次,直到处理完所有的输入特征映射。最后,将所有组的feature map连接起来,发送到另一组1×1的滤波器中,将所有信息融合在一起。随着输入特征转化为输出特征的任何可能路径的出现,当经过3×3滤波器时,等效感受野就会增大,由于组合效应导致了许多等效的特征尺度。
图2:Bottleneck模块与提出的Res2Net模块的比较(scale dimension s = 4)。
Res2Net策略公开了一个新的维度,即scale (Res2Net块中特征组的数量),作为深度[37]、宽度和基数[43]等现有维度之外的一个基本因素。我们在第4.4节中指出,扩大尺度比扩大其他方面更有效。
注意,所提出的方法在更细粒度的层次上利用了多尺度潜力,这与使用分层操作的现有方法是正交的。因此,所提出的构建块,即Res2Net模块,可以很容易地插入到许多现有的CNN架构中。大量的实验结果表明,Res2Net模块可以进一步提高最先进的CNNs的性能,如ResNet[17]、ResNeXt[43]和DLA[47]。
2 相关工作
2.1 主干网络
近年来出现了众多的骨干网络[9]、[17]、[20]、[22]、[37]、[39]、[43]、[47],实现了在各种视觉任务中的最先进表现,具有较强的多尺度表示能力。由于输入信息由粗到精的变化过程,网络具有基本的多尺度特征表示能力。AlexNet[22]按顺序过滤,比传统的视觉识别方法获得了显著的性能提高。然而,由于网络深度和滤波器内核大小的限制,AlexNet只有相对较小的感受野。VGGNet[37]增加了网络深度,并使用内核大小更小的滤波器。更深层次的结构可以增大感受野,这对于从更大的范围内提取特征非常有用。因此,VGGNet提供了比AlexNet更强的多尺度表示模型,参数更少。然而,AlexNet和VGGNet滤波器都是线性拓扑结构,这意味着这些网络只能具有相对不灵活的感受野,并且在处理小范围尺度的物体时是最优的。
GoogLeNet[39]使用不同内核大小的并行过滤器来增强多尺度表示能力。然而,由于计算资源的限制,GoogLeNet中的内核不容易进一步丰富。因此,GoogLeNet的多尺度表示仍然不能覆盖大范围的感受野。Inception[38]、[40]在GoogLeNet的每条并行路径上堆叠更多的滤波器,为了进一步扩展感受野。另一方面,ResNet[17]引入了与神经网络的短路连接,从而在获得更深层次的网络结构的同时减轻了梯度消失。在特征提取过程中,短连接允许不同的卷积操作组合,产生大量等价的特征尺度。类似地,DenseNet[20]中密集连接的层使网络能够处理范围非常广的超度范围。DPN[6]将ResNet与DenseNet相结合,实现了ResNet的特征重用能力和DenseNet的特征挖掘能力。最近提出的DLA[47]方法结合了树结构中的层。层次树结构使网络获得更强的分层多尺度表示能力。
2.2视觉任务的多尺度表示
CNNs的多尺度特征表示对目标检测[33]、显著性目标检测[18]、语义分割[3]等视觉任务具有重要意义,提高了这些领域的模型性能。
2.2.1 目标检测
有效的CNN模型需要定位场景中不同尺度的物体。早期的R-CNN[12]等工作主要依靠主干网VGGNet[37]来提取多尺度特征。He等人提出了一种SPP-Net方法[16],该方法利用骨干网后的空间金字塔池来增强多尺度能力。Faster R-CNN[33]进一步提出了RPN来生成不同尺度的边界框。基于Faster R-CNN, FPN[25]方法引入特征金字塔,从一张图像中提取不同尺度的特征。SSD方法[28]利用不同阶段的特征图对不同尺度的视觉信息进行处理。
2.2.2 语义分割
提取目标的基本上下文信息需要CNN模型对不同尺度的特征进行处理,以实现有效的语义分割。Long等人[30]提出了一种最早的实现全卷积网络(FCN)多尺度表示的语义分割方法。在DeepLab中,Chen等人[3],[4]引入级联的带孔卷积模块,在保持空间分辨率的同时进一步扩展感受野。最近,全局上下文信息通过PSPNet[51]中的金字塔池方案从基于区域的特性聚合。
2.2.3 显著性目标检测
准确定位图像中突出的目标区域,既需要了解确定目标显著性的大规模上下文信息,又需要了解准确定位目标边界的小规模特征。早期的[2]方法使用手工表示全局对比[7]或多尺度区域特性[41]。Li等人提出了一种最早的多尺度深度特征检测方法。随后,提出了多上下文深度学习[53]和多级卷积特征[49]来改进突出目标检测。最近,Hou等人[18]引入阶段间密集的短路连接,在每一层提供丰富的多尺度特征图,用于突出目标检测。
3 Res2Net
3.1 Res2Net Module
图2(a)所示的瓶颈结构是许多现代主干CNNs网络的基本构件,如ResNet[17]、ResNeXt[43]和DLA[47]。本文不像瓶颈模块那样使用一组3×3的过滤器来提取特征,而是寻找具有更强多尺度特征提取能力的替代架构,同时保持相似的计算负载。具体地说,我们将一组3×3的过滤器替换为更小的过滤器组,同时将不同的过滤器组以分层的残差样式连接起来。由于我们提出的神经网络模块包含一个残差块内的类残差连接,我们将其命名为Res2Net。
图2显示了瓶颈块与所提出的Res2Net模块之间的差异。经过 1 × 1 1×1 1×1的卷积后,将特征图平均分割为 s s s个特征图子集,用 x i x_i xi表示,其中 i ∈ { 1 , 2 , . . . , s } i\in\lbrace1,2,...,s\rbrace i∈{1,2,...,s}。每个特征子集具有相同的空间大小,相比输入特征图,有 1 s \frac 1s s1个通道数。除 x 1 x_1 x1外,每个 x i x_i xi都有对应的3×3卷积,记作 K i ( ) K_i() Ki()。我们用 y i y_i yi表示 K i ( ) K_i() Ki()的输出。特征子集 x i x_i xi与输出 K i ( ) K_i() Ki()相加,
然后送入 K i ( ) K_i() Ki()。为了避免 s s s增加的同时参数量也增加,我们省略了 x i x_i xi的3×3卷积。因此, y i y_i yi可以写成:
y i = { x i i = 1 K i ( x i + y i − 1 ) 1 < i ≤ s ( 1 ) y_i= \begin{cases} x_i & \text {$i$ = 1} \\ K_i(x_i+y_{i-1}) & \text{1 < $i$ $\leq$ s} \end{cases}(1) yi={xiKi(xi+yi−1)i = 11 < i ≤ s(1)
注意,每个 3 × 3 3×3 3×3卷积操作 K i ( ) K_i() Ki()都有可能从所有特征分割 { x j , j ≤ i } \lbrace x_j,j\leq i\rbrace {xj,j≤i}中接收特征信息。每当一个特征分割 x j x_j xj经过一个 3 × 3 3\times3 3×3的卷积运算符时,输出结果的感受野会比 x j x_j xj更大。由于组合爆炸效应,Res2Net模块的输出包含不同数量和不同组合的感受野尺寸。
在Res2Net模块中,分割以多尺度的方式进行处理,有利于提取全局和局部信息。为了更好地融合不同尺度的信息,我们将所有的分割连接起来,并通过一个 3 × 3 3\times3 3×3的卷积传递它们。分割和连接策略可以强制卷积以更有效地处理特征。为了减少参数量,我们省略了第一次分割的卷积,这也可以看作是一种特征复用的形式。
在本文中,我们使用s作为尺度维数的控制参数。较大的s通常对应较强的多尺度能力,而级联带来的计算/内存开销可以忽略不计。
3.2 与现有框架集成
近年来,许多神经网络模块被提出,包括Xie等人提出的[43]的基数维,以及Hu等人提出的SE模块。提出的Res2Net模块引入了与这些改进正交的尺寸维度。如图3所示,我们可以很容易地将基数维度[43]和SE块[19]与提出的Res2Net模块集成。
图3 Res2Net模块可以与维度基数[43](将conv替换为group conv)和SE[19]块集成。
3.2.1 维度基数
维度基数表示滤波器[43]中的组数。该维度将滤波器从单分支转换为多分支,提高了CNN模型的表示能力。在我们的设计中,我们可以用3×3的组卷积代替3×3卷积,其中c表示组的个数。第4.2节和第4.4节给出了尺度维度和基数之间的实验比较。
3.2.2 SE模块
SE块通过显式地建模通道[19]之间的依赖关系,自适应地重新校准通道特征响应。与[19]类似,我们在Res2Net模块的残差连接之前添加SE块。Res2Net模块与SE模块集成可获得更好的性能,我们已经在第4.2和4.3节中进行了实验说明。
3.3集成模型
由于Res2Net模块对整体的网络结构没有特定要求,而且Res2Net模块的多尺度表征能力正交于分层的CNNs模型,所以,我们可以很容易地将Res2Net模块集成到先进的模型中,如ResNet [17],ResNeXt[43],和Res2Net- DLA[47]。相应的模型分别称为Res2Net、Res2NeXt和Res2Net- DLA。
提出的尺度维数与已有工作的基数[43]维数和宽度[17]维数正交。因此,在设置尺度之后,我们调整基数和宽度的值,以保持与其他模型类似的整体复杂度。在这项工作中,我们不关注减小模型大小,因为它需要更细致的设计,如深度可分离卷积[32]、模型剪枝[13]和模型压缩[8]。
对于ImageNet[34]数据集的实验,由于计算资源有限,我们主要使用ResNet - 50[17]、ResNeXt - 50[43]和DLA - 60[47]作为基准模型。本文提出的模型的复杂度与基准模型近似,其参数个数约为25M,对于50层网络,224×224像素图像的FLOPs约为4.2G。对于CIFAR[21]数据集上的实验,我们使用ResNeXt- 29,8c×64w[43]作为基准模型。在第4.4节中,对所提出的模型的复杂性进行了经验评估和讨论。