Pyramidal Convolution

Pyramidal Convolution: Rethinking Convolutional Neural Networks for Visual Recognition

本工作介绍了金字塔卷积(PyConv),它能够在多个滤波器尺度上处理输入。PyConv包含了一个金字塔的内核,其中每一级都涉及到不同类型的滤波器,它们的大小和深度各不相同,能够捕捉场景中不同层次的细节。在这些改进的识别能力之上,PyConv也是高效的,与标准卷积相比,通过我们的公式,它不会增加计算成本和参数。此外,它还非常灵活和可扩展,为不同的应用提供了很大的潜在网络架构空间。PyConv具有影响几乎所有计算机视觉任务的潜力,在这项工作中,我们提出了基于PyConv的不同架构,用于视觉识别的四个主要任务:图像分类、视频动作分类/识别、对象检测和语义图像分割/解析。与基线相比,我们的方法在所有这些核心任务上都有显著的改进。例如,在图像识别方面,我们的50层网络在ImageNet数据集上的识别性能优于拥有152层的基线ResNet,同时参数减少2.39倍,计算复杂度降低2.52倍,层数减少3倍以上。在图像分割方面,我们的新框架在具有挑战性的场景解析ADE20K基准上建立了一个新的先进技术。代码可在:https://github.com/iduta/pyconv

1 Introduction

在这里插入图片描述

图1:场景解析实例。一个室外和室内图像及其相关的像素级语义类别。

卷积神经网络(CNNs)[1]、[2]代表了当前计算机视觉应用的主力军。近来几乎所有用于视觉识别不同任务的最先进的架构都是基于CNN的[3]-[18]。CNN的核心是卷积,它学习视觉识别的空间核/滤波器。大多数CNN使用相对较小的内核大小,通常为3x3,这是因为增加内核大小会在参数数量和计算复杂度方面带来很大的成本。为了应对小核大小无法覆盖大面积输入的事实,CNNs采用小核大小和下采样层的连锁卷积,逐步减小输入的大小,增加网络的感受野。但是,会出现两个问题。首先,尽管对于目前的许多CNN来说,理论上的感受野可以覆盖输入的很大一部分甚至整个输入,但在[19]中表明,经验上的感受野要比理论上的小得多,甚至在网络的高层中要小2.7倍以上。其次,在之前没有获得足够的上下文信息的情况下对输入进行下采样(尤其是在复杂场景中,如图1),可能会影响网络的学习过程和识别性能,因为在执行下采样之前,由于感受野不够大,无法捕捉到场景中不同的依赖关系,所以有用的细节会丢失

自然图像可以包含极其复杂的场景。图1左边是两个例子(野外的室外场景和室内场景),右边则是场景中每个像素的语义标签(取自ADE20K数据集[20])。解析这些图像并提供每个像素的语义类别是非常具有挑战性的,然而,这是计算机视觉领域的圣杯目标之一。我们可以在这些例子中注意到,在同一个场景中,有大量的类目,有的部分被遮挡,还有不同的物体尺度。

我们在图1中可以看到,有些类目可以有非常大的空间表征(如建筑物、树木或沙发),而其他类目在图像中的表征则可以小得多(如人、书或瓶子)。此外,同一物体类别可以在同一图像中以不同的尺度出现。例如,图1中汽车的尺度有很大的不同,从成为图像中最大的物体之一到只覆盖了场景中很小的一部分。为了能够捕捉到如此多样的类别和如此多变的尺度,使用单一类型的内核(如标准卷积)和单一的空间尺寸,可能不是解决这种复杂性的最佳方案。计算机视觉长期以来的目标之一是能够在多个尺度上处理输入,以捕获场景内容的详细信息。在手工制作特征时代,最著名的例子之一是SIFT[21],它提取了不同尺度的描述符。然而,在目前的深度学习时代的学习特征中,标准卷积并没有隐含处理多尺度输入的能力,包含的内核类型单一,空间大小和深度单一。

为了解决上述挑战,本工作提供了以下主要贡献。(1)我们引入了金字塔卷积(PyConv),它包含不同级别的核,大小和深度各不相同。除了扩大感受野外,PyConv还可以使用不断增加的内核大小并行处理输入,以捕获不同层次的细节。在这些优点之上,PyConv的效率非常高,通过我们的公式,它可以保持与标准卷积相似的参数数量和计算成本。PyConv是非常灵活和可扩展的,为计算机视觉的众多任务打开了大量网络架构的大门(见第3节)。(2)我们提出了两种用于图像分类任务的网络架构,它们的性能明显优于基线。此外,它们在参数数量和计算成本方面是高效的,并且可以优于其他更复杂的架构(见第4节)。(3)我们提出了一种新的语义分割框架。我们的新型头用于解析骨干提供的输出,可以捕获从局部到全局的不同层次的上下文信息。它提供了最先进的场景解析结果(见第5节)。(4)我们提出了基于PyConv的网络架构,用于目标检测和视频分类任务,我们报告了识别性能比基线的显著改进(见附录)

2 Related Work

在图像识别所采用的各种方法中,残差网络(ResNets)家族[7],[8],[16]代表了最有影响力和应用最广泛的方法之一。通过使用shortcut连接,它促进了网络的学习过程。这些网络被用作各种复杂任务的骨干,如目标检测和实例分割[7],[13]-[18]。我们使用ResNets作为基线,并在构建我们不同的网络时利用这种架构。

创始性的工作[3]使用分组卷积的形式,将卷积的计算分布在两个GPU上,以克服计算资源(特别是内存)的限制。此外,[16]也使用分组卷积,但目的是提高ResNeXt架构的识别性能。我们也利用了分组卷积,但采用了不同的架构。作品[17]和[22]提出了squeeze-and-excitation和non-local blocks来捕获上下文信息。然而,这些都是需要插入到CNN中的额外块;因此,这些方法仍然需要在其整体CNN架构中使用空间卷积(因此,它们可以成为我们方法的补充)。此外,这些块显著增加了模型和计算复杂性。

在具有挑战性的语义分割任务上,一个非常强大的网络架构是PSPNet[23],它在骨干上使用一个金字塔池模块(PPM)头来解析场景,以提取不同层次的细节。另一个强大的架构是在[24]中提出的,它在骨干之上使用了一个空间金字塔池化(ASPP)头。与这些竞争性的作品相比,我们提出了一种新颖的头来解析骨干网提供的特征图,使用局部多尺度上下文聚合模块和全局多尺度上下文聚合块对输入进行高效解析。我们的新型图像分割框架不仅在识别性能上具有很强的竞争力,而且在模型和计算复杂度上也明显高于这些强架构。

3 Pyramidal Convolution

在这里插入图片描述

标准卷积,如图2(a)所示,包含单一类型的内核:具有单一的空间大小 k 1 2 k_1^2 k12,深度等于输入特征图的数量 F M i FM_i FMi。应用一些 F M o FM_o FMo kernels的结果(都具有以下特点
相同的空间分辨率和相同的深度)在 F M i FM_i FMi输入特征图上是若干 F M o FM_o FMo输出特征图(空间高度H和宽度W)。因此,标准卷积所需的参数和FLOPs(浮点运算)数量为: p a r a m e t e r s = K 1 2 ⋅ F M i ⋅ F M o ; F L O P s = K 1 2 ⋅ F M i ⋅ F M o ⋅ ( W ⋅ H ) parameters=K_1^2\cdot FM_i\cdot FM_o;FLOPs=K_1^2\cdot FM_i\cdot FM_o\cdot(W\cdot H) parameters=K12FMiFMo;FLOPs=K12FMiFMo(WH)

所提出的金字塔卷积(PyConv),如图2(b)所示,包含一个金字塔,有n个级别的不同类型的内核。所提出的PyConv的目标是在不增加计算成本或模型复杂度(参数)的情况下,以不同的内核尺度处理输入。在PyConv的每一级,内核包含不同的空间大小,从金字塔的底部(PyConv的第1级)到顶部(PyConv的第n级)增加卷积核大小。因此,如图2(b)所示,这将导致两个相互连接(interconnected)的金字塔,方向相反。其中一个金字塔has the base at the bottom(通过减小卷积核depth向顶部演化),另一个金字塔has the base on top,卷积核的空间大小最大(通过减小内核的空间大小向底部演化)。

在这里插入图片描述

Figure 3: Grouped Convolution.

为了能够在PyConv的每个层次上使用不同深度的核,将输入特征图分成不同的组,并对每个输入特征图组各自应用核。这就是所谓的分组卷积,图3中给出了一个说明,我们在图中展示了三个例子(颜色编码了分组分配)。在这些例子中,有八个输入和输出特征图。图3(a)显示了由单组输入特征图组成的情况,这是标准卷积,其中内核的深度等于输入特征图的数量。在这种情况下,每个输出特征图与所有输入特征图相连。图3(b)显示了输入特征图被分成两组的情况,在每组上独立应用核,因此,核的深度减少了2。如图3所示,当组数增加时,连通性(从而使内核的深度)减小。结果,卷积的参数个数和计算成本减少了一个等于组数的因子。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

其中, F M 0 n + . . . + F M 0 3 + F M 0 2 + F M 0 1 = F M 0 FM_{0_n}+...+FM_{0_3}+FM_{0_2}+FM_{0_1}=FM_0 FM0n+...+FM03+FM02+FM01=FM0这些等式中的每一行都代表了PyConv中一个级别的参数数量和计算成本。如果PyConv的每一级都输出相同数量的特征图,那么PyConv的参数数量和计算成本就会沿着每个金字塔级别均匀分布。

采用这种公式,无论PyConv的层数是多少,核空间大小从 K 1 2 K_1^2 K12 K n 2 K_n^2 Kn2不断增加,计算成本和参数数量都与单核大小 K 1 2 K_1^2 K12的标准卷积相似。为了将图3中的说明与方程1联系起来,方程1中 F M i FM_i FMi的分母是指图3中输入特征图 F M i FM_i FMi被分割的组数(G)。

在实践中,当构建PyConv时,有几个额外的规则。等式1中金字塔每一级的 F M i FM_i FMi的分母,应该的 F M i FM_i FMi除数。换句话说,在金字塔的每一层,每个创建组的特征图数量应该是相等的。因此,作为一个近似值,当选择金字塔各层的组数(从而选择内核的深度)时,我们可以从 F M i FM_i FMi可能的除数列表中取一个最接近FMi分母的数字。此外,每一级的组数也应该是PyConv每一级输出特征图数量的除数。为了能够轻松地使用PyConv创建不同的网络架构,建议输入特征图的数量、金字塔每一级的组数以及PyConv每一级的输出特征图的数量都是2的幂数。 接下来的章节将展示实际的例子。

提出的PyConv的主要优点是。(1)多尺度处理。与标准卷积相比,PyConv除了可以在不增加成本的情况下扩大内核的感受野外,还可以并行应用不同类型的内核,具有不同的空间分辨率和深度。因此,PyConv可以在多个尺度上解析输入,捕捉更多的细节信息。这种double-oriented的核类型金字塔,一边的核大小在增加,另一边的核深度(连接性)在减少(反之亦然),这使得PyConv能够提供一个不同内核类型组合的非常多样化的池,网络可以在学习过程中探索这些组合。该网络可以从连通性低的大感受野到连通性高的小感受野的探索。这些不同类型的PyConv内核带来了互补的信息,有助于提高网络的识别性能。接受野较小的核可以专注于细节,捕捉关于较小对象和/或部分对象的信息,而增大内核大小可以提供关于较大对象和/或上下文信息的更可靠的细节

(2) Efficiency. 与标准卷积相比,PyConv在默认情况下,保持了相似的模型参数数量和计算资源需求,如公式1所示。此外,由于金字塔级别可以独立并行计算,PyConv提供了高度的并行性。因此,PyConv还可以提供customizable heavy network架构的可能性(在架构无法放入计算单元的内存和/或在FLOPs方面过于昂贵的情况下), the levels of PyConv可以在不同的计算单元上独立执行,然后合并输出。

(3) Flexibility. PyConv为各种各样的网络架构打开了大门。用户可以灵活地选择金字塔的层数、每个PyConv级别的内核大小和深度,而无需付出增加参数数量或计算成本的代价此外,输出特征映射的数量在每个层次上可以是不同的。例如,对于一个特定的任务,感受野较小的内核输出特征映射较少,而接受野较大的内核输出特征映射越多可能会更有用。此外,PyConv的设置在网络上可能不同,因此,在网络的每一层,我们可以有不同的PyConv设置。例如,we can start with several layers for PyConv,根据网络每个层的输入特征映射的分辨率,我们可以随着网络分辨率的降低而降低PyConv的级别。也就是说,我们现在可以使用PyConv为不同的视觉识别任务构建体系结构

4 PyConv Networks for Image Classification

在这里插入图片描述

对于我们关于图像分类的PyConv网络架构,我们使用了一个类似于[7]中的residual bottleneck building block。图4显示了我们网络第一阶段使用的构建模块的一个例子。首先,它应用1x1 conv将输入的特征图减少到64,然后我们使用我们提出的PyConv与四个级别的不同内核大小。9x9, 7x7, 5x5, 3x3.同时,内核的深度也沿着每个级别而变化,从16组到完全depth/connectivity。每个级别输出16个特征图,加起来就是PyConv的64个输出特征图。然后应用1x1 conv来重新获得初始的特征图数量。如常见的,批量归一化[6]和ReLU激活函数[25]跟随conv块。最后,有一个shortcut,可以帮助identity mapping。

Table 1: PyConvResNet and PyConvHGResNet.

在这里插入图片描述

我们提出的图像分类网络PyConvResNet,如表1所示。为了直接比较,我们把基线架构ResNet[7]也放在一边。表1展示了50层深度网络的情况,对于其他深度的网络,层数会像[7]一样增加。沿着网络,我们可以根据特征图的空间大小,确定四个主要阶段。对于PyConvResNet,我们从一个有四个层次的PyConv开始。由于特征图的空间大小在每个阶段都会减小,所以我们也减少了PyConv的级别。在最后一个主要阶段,网络最终只用一个级别的PyConv,这基本上是标准卷积。这样做是合适的,因为特征图的空间大小只有7x7,因此,3个3x3大小的连续卷积可以很好地覆盖特征图。在效率方面,PyConvResNet提供的FLOPs也略有减少

正如我们所强调的,灵活性是PyConv的强项,表1介绍了另一种基于PyConv的架构,PyConvHGResNet,它对每一级都使用了更高的分组。对于这个架构,我们在PyConv中设置了最小32组,最大64组。空间卷积的特征图数量增加了一倍,以便在学习空间滤波器上提供更好的能力。需要注意的是,对于网络的第一阶段,不可能将组的数量增加超过32个,因为这是每个级别的输入和输出特征映射的数量。因此,PyConvHGResNet产生的FLOPs略有增加。

由于我们的网络包含不同层次的内核,它可以使用不同的内核大小来执行特征图的下采样。这一点很重要,因为下采样会产生空间分辨率的损失,因此会损失细节,但是拥有不同的内核大小来执行下采样,可以考虑到不同层次的空间上下文依赖性,以并行地执行下采样。从表1可以看出,原ResNet[7]在网络的第一级之前使用了一个最大池化层来对特征图进行下采样,并得到translation invariance。

与原来的ResNet不同,我们将最大池化移到了the first projection shortcut上,就在1x1 conv之前(通常,一个阶段的第一个shortcut包含一个projection 1x1 conv,以适应与块的输出的特征图数量及其空间分辨率)。这与[26]中的projection shortcut方式类似。因此,对于原始的ResNet,下采样并不是由the first stage来执行的(因为最大池化在之前就已经执行了),next three main stages会在它们的第一个块上执行下采样。在我们的网络中,all four main stages在它们的第一个块上执行下采样。

这种变化不会增加网络的参数数量,也不会显著影响计算成本(从表1中可以看出,因为第一块使用空间卷积与步长2),为我们的网络在识别性能上提供了优势.将最大池化移动到shortcut上,使我们的方法有机会在第一阶段的第一块中获得更大的特征图空间分辨率,使用多个内核尺度对输入进行下采样,同时,受益于最大池化提供的translation invariance。结果表明,我们的网络提供了improved recognition capa。

A Appendix

在这个附录中,我们提出了额外的实验,架构细节和/或分析。它包含三个主要部分。A.1节介绍了我们的物体检测架构的细节;A.2节介绍了视频分类流水线的细节;最后,A.3节展示了一些图像分割的视觉示例。

A.1 PyConv on object detection

由于我们已经在主论文中提出了关于对象检测的最终结果,我们以显著的优势超越了基线(见主论文中的主要贡献(4)),本节提供了我们的对象检测架构的细节和结果的确切数字。

在这里插入图片描述

由于我们提出的PyConv并行使用不同级别的内核大小,它可以为目标检测任务提供显著的好处,目标可以以不同的尺度出现在图像中。对于目标检测,我们将我们的PyConv集成在一个强大的方法中,即Single Shot Detector(SSD)[48]。SSD是一个非常高效的单阶段目标检测框架,它可以在多个特征图分辨率下执行检测。我们提出的对象检测框架PyConvSSD如图8所示。该框架包含两大部分:

(1) PyConvResNet Backbone. 在我们的框架中,我们使用提出的PyConvResNet作为骨干,该骨干之前已经在ImageNet数据集上进行了预训练[27]。为了保持框架的高效率,同时也为了获得与[48]中使用的骨干网类似数量的输出特征图,我们从PyConvResNet骨干网中删除了the third stage之后的所有层。我们还将骨干网络第3阶段的所有步长设置为1。这样一来,PyConvResNet就可以提供(作为第3阶段的输出)1024个空间分辨率为38x38的输出特征图(S3FM)(输入图像大小为300x300)。

(2) PyConvSSD Head. 我们的PyConvSSD头如图8所示,使用所提出的PyConv进一步提取不同的特征,并行使用不同的卷积核大小。在第三阶段backbone的resulted feature map上,我们应用了four levels的PyConv(核大小:9x9,7x7, 5x5, 3x3)。同时,PyConv还使用这些多核大小并行执行特征图的下采样(步长s=2)。随着特征图分辨率的降低,我们也降低了PyConv的金字塔的levels。最后两个PyConv只包含一个levels(基本上是标准的3x3),因为特征图的空间分辨率非常小。请注意,最后两个pyconv使用的stride为s=1,并且仅通过不使用padding来降低空间分辨率。因此,head部将特征图的空间分辨率从38x38降低到1x1。头部的PyConvs的所有输出特征图都用于检测(All the output feature maps from the PyConvs in the head are used for detections.)。

对于选择的六个输出特征图中的每一个进行检测 { S 3 F M , H F M 1 , H F M 2 , H F M 3 , H F M 4 , H F M 5 } \{S3_{FM},H_{FM1},H_{FM2},H_{FM3},H_{FM4},H_{FM5}\} {S3FM,HFM1,HFM2,HFM3,HFM4,HFM5},框架使用每个空间位置对应数量的默认框(anchor框) { 4 , 6 , 6 , 6 , 4 , 4 } \{4,6,6,6,4,4\} {4,6,6,6,4,4}来执行检测。例如,对于( S 3 F M S3_{FM} S3FM)输出的空间分辨率为38x38的特征图,在每个位置上使用四个默认框,结果是5776个检测。对于每个边界框的定位,网络应该预测的值有四种(loc: Δ ( c x , c y , w , h ) \Delta(cx,cy,w,h) Δ(cx,cy,w,h)),其中cx和cy代表边界盒的中心点,w和h代表边界盒的宽度和高度)。该边界框偏移输出值是相对于默认框位置,相对于每个特征图位置测量的。同时,对于每个边界盒,网络应该输出每个类目(总共有C个类目)的置信度。对于提供检测,该框架使用一个分类器,该分类器由一个3x3卷积表示,它为每个边界框输出所有类别(C)的置信度。对于位置信息,该框架也使用一个3x3卷积来输出每个回归的默认边界框的四个localization values。该框架总共输出8732个检测值(对于300x300的输入图像大小),通过非最大抑制提供最终的检测值。

与原来的SSD框架[48]不同,为了公平直接的比较,在基线SSD中,我们用ResNet[7]替换了VGG主干[4],因为如[7]所示,ResNet在识别性能和计算成本上远远优于VGG。因此,作为与我们PyConvSSD的主要区别,本作品中的基线SSD使用ResNet[7]作为骨干,SSD头使用标准的3x3 conv(而不是PyConv),就像原始框架[48]一样。为了显示比较我们的PyConvSSD和基线在目标检测上的确切数字,我们使用COCO数据集[49],其中包含81个类别。我们用于训练COCO train2017(118K图像)和测试COCO val2017(5K图像)。我们使用8个GPU,每个GPU有32个batch sizes,训练130个epoch,导致60K次训练迭代。我们使用动量0.9,权重衰减0.0005,学习率0.02(在86-th和108-th epoch之前减少1/10)的SGD优化器进行训练。我们还在第一个epoch使用线性热身[28]。对于数据增强,我们进行了[48]中的随机裁剪、颜色抖动和水平翻转。我们使用的输入图像大小为300x300,报告的指标与[48]相同。

在这里插入图片描述

数据增强,我们进行了[48]中的随机裁剪、颜色抖动和水平翻转。我们使用的输入图像大小为300x300,报告的指标与[48]相同。

[外链图片转存中…(img-jJeTNLwu-1598291080582)]

表8显示了PyConvSSD与基线、50层和101层骨架的对比结果。虽然在参数数量和FLOPs方面效率更高,但提出的PyConvSSD在所有指标上都比基线有显著改进。值得注意的是,使用50层骨架的PyConvSSD甚至比使用101层骨架的基线更有竞争力。这个结果显示了PyConv在对象检测任务上的优势。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值