Fast-ParC学习笔记
Fast-ParC: Position Aware Global Kernel for ConvNets and ViTs
Abstract
近年来,T型变压器模型在各个领域都取得了长足的进步。在计算机视觉领域,视觉变压器(ViTs)也成为卷积神经网络(ConvNets)的有力替代品,但由于卷积神经网络和视觉变压器都有各自的优点,所以它们无法取代卷积神经网络。例如,vit善于利用注意机制提取全局特征,而ConvNets则因其强烈的归纳偏差而更有效地建模局部关系。一个自然产生的想法是结合ConvNets和vit的优点来设计新的结构。本文提出了一种新的基本神经网络算子——位置感知圆卷积(ParC)及其加速版Fast-ParC。ParC算子可以通过使用全局核和循环卷积捕获全局特征,同时通过使用位置嵌入保持位置敏感性。我们的Fast-ParC使用快速傅里叶T变换进一步将ParC的O(n2)O(n^2)O(n2)时间复杂度降低到O(nlogn)O(n log n)O(nlogn)。这种加速使得在具有大型特征映射的模型的早期阶段使用全局卷积成为可能,但仍然保持与使用3x3或7x7核相比的总体计算成本.该操作可以plug-and-play(即插即用)地实现1)将vit转换为纯convnet架构,以获得更广泛的硬件支持和更高的推理速度;2)在卷积网络的深层阶段取代传统的卷积,通过扩大有效接受域来提高精度。实验结果表明,我们的ParC op可以有效地扩大传统ConvNets的接受域,采用所提出的op对ViTs和ConvNet模型在图像分类、目标检测和语义分割这三种常见视觉任务上都有优势。
https://github.com/yangtao2019yt/Fast_ParC.git.
Index Terms: 全局感受域,位置感知圆卷积,位置嵌入,纯卷积运算,快速傅里叶变换
1 INTRODUCTION
近年来,vision变压器已逐渐兴起。Transformer在2017年首次提出,用于解决NLP任务[2]。2020年,Dosovitskiy等人[3]直接将原始变压器应用于图像分类任务,发现在大型数据集(例如ImageNet-21K或JFM-300M[4])上预训练时,它取得了比卷积网络(ConvNets)更好的结果。ViT及其变体随后被广泛应用于其他下游视觉任务,如物体检测[5][6]、语义分割[7]和多模态任务,如人-物交互(HOI)[8]、文本-图像合成(T2I)[9]等。尽管变压器取得了巨大的成功,但它们仍然不能完全取代ConvNets。如前文[1][10][11][12]总结,与ViTS相比,ConvNets有更好的硬件支持,更容易训练。此外,ConvNets在移动和其他边缘计算场景的轻量级模型[13][14]领域仍然占主导地位。
变压器和convnet都有各自的特点。对于变压器,广泛公认的多头注意机制被设计来捕获令牌之间的远程成对关系,这提供了具有强大全局建模能力的transformer。在获得这种表示能力的同时,也需要较高的计算预算。自我注意的时间复杂度是令牌数量的二次方,因此处理高分辨率特征映射的速度较慢。与之不同的是,卷积运算擅长于提取局部信息。它在一个小的滑动窗口(通常为3x3)内捕获局部信息,并对不同的输入和不同的空间位置重用相同的卷积核。它可以被解释为一种有效的隐式权值共享方案,使卷积所需参数仅随输入线性增长。此外,ConvNets已经得到了很长时间的研究和使用,因此它们还具有其他一些独特的优势。例如,对于ConvNets,像修剪[17]和量化[18]这样的压缩算法是成熟的。至于硬件实现,也有许多现有的加速方案(例如Winograd [19], FFT [20], im2col[21]),无论是在一般的平台上,如CPU, GPU或专用的加速器,如FPGA, ASIC。总之,卷积运算实现成本较低,但不能像自我注意那样捕捉全局关系。显然,在变压器的表示能力和卷积网络的效率之间存在着一种互补关系,两者对于实际应用都是不可或缺的。
最近有一些结合变压器和convnet优点的工作。PVT [22], Swin[23]和CoAtNet[24]试图重新引入卷积的归纳偏差(例如它的滑动窗口策略),以帮助变压器模型更好地学习。就像LeViT [25],MobileViT [11], EfficientFormer[26]专注于设计高效的混合架构。这些工作大多将这两种网络结合在一起,但它们未能解决关键问题:新引入的注意算子的额外计算和工程复杂性。人们很自然地会问:是否有可能设计出一种不同于自注意和传统卷积的新算子,同时具有两者的优点?

本文结合变压器和ConvNets的优点,构造了一个新的即插即用算子ParC。由于采用全局核(Kh=H或Kw=WK_h = H或K_w = WKh=H或Kw=W),并采用循环卷积方案,ParC具有全局接受域。然后在卷积前采用显式可学习的位置嵌入,以保持模型的位置敏感性。如图1所示,不同的ConvNet模型通过简单地应用所提出的ParC算子将其有效接受域提高为全局的。由于ParC采用纯卷积运算,在不同平台上部署效率高。最后,我们将二维卷积分解为两个一维卷积,以克服flop /参数的增加。基于上述设计,我们实现了提取全局特征的目标,同时在空间和时间复杂度上保持了较低的成本。通过实验,我们验证了新算子在广泛的任务和模型中的有效性。总之,本文的贡献可以概括为以下三点:
1)结合ViTs和ConvNets的优点,提出了一种有效的新算子ParC。实验证明了ParC的优势,将其应用于广泛的模型,包括MobileViT [27], ResNet50 [28], MobileNetV2[14]和ConvNext[27]。我们还在多个任务上评估这些模型,包括分类、检测和分割。
2)针对输入特征分辨率较大时ParC算法复杂度过大的问题,提出了快速ParC算法。Fast-Parc在理论上等同于ParC,例如,当给定相同的输入时,它们的输出是相同的。然而,当给出大分辨率时,它比ParC要高效得多(例如112×122)。Fast-ParC扩展了ParC的使用场景,使其成为一个应用范围更广的运营商。
3)分析了新算子的内在机理。通过可视化,我们展示了ParC和纯卷积之间的几个明显区别。研究表明,普通ConvNet的有效接受域[15]是非常有限的,而基于parcel的网络的有效接受域[15]是全局的。我们还通过Grad-CAM[29]表明,基于parcel的网络在聚焦图像的重要区域方面比普通的ConvNets更全面。我们还详细分析了ParC和香草卷积的区别。
2 RELATER WORK
2.1 Theoretical/Effective Receptive Field
Hebel等[30]在神经科学中发现,浅层神经元只提取局部特征,覆盖的范围层层累积,称为“接受野(RF)”。自从VGGNet[31]成功以来,CNN架构的设计遵循类似的模式[28] [32] [14] [13]-使用小内核的堆叠,如3×3,而不是较大的内核。前人的一些工作给出了CNN的感受野[33] [34]的理论计算,即理论感受野(TRF),在此概念下,3×3的两层感受野等于5×5的一层感受野。然而,一些作品[15] [34]对这一观点提出了质疑,因为事实上像素的重要性在特征图中从中心迅速退化到边缘。随后,提出了有效感受野(ERF)来测量输入图像中实际影响神经元激活模式的区域。Luo等人[15]反向传播中心像素,并计算输入图像的偏导数来检查该区域。通过研究一系列的卷积网络,他们发现有效的接受电场通常比理论的要小得多。SKNet[35]采用注意机制选择合适的感受野。RF-Next[36]提出了一个基于nas的工作流来自动搜索模型的接收域。这些工作表明,适当的接受域的确定对网络的性能是非常有益的。最近的研究还发现,增大卷积网络的接受域可以获得更好的模型性能。我们称之为“大核卷积网络”,这将在后面的2.3节中讨论。
2.2 Vision Transformer and Hybrid Structures
ViTs在各种视觉任务中取得了令人印象深刻的表现。但是,最初的ViT[3]有一些限制。例如,它的权重大,计算效率低,难以训练。为了克服这些问题,提出了vit的后续变体。从改进训练策略的角度出发,Touvron等[37]提出使用知识蒸馏来训练ViT模型,并以较少的训练前数据达到竞争精度。为了进一步改进模型体系结构,一些研究人员尝试借鉴ConvNets对ViTs进行优化。其中,PVT[22]和CVT[38]在ViT的每个阶段插入卷积运算,减少令牌数量,构建层级化的多级结构。Swin变压器[23]在移位的局部窗口内计算自注意。PiT[39]联合使用池化层和深度卷积层实现信道倍增和空间约简。CCNet[40]提出了一种简化版的自我注意机制——交叉注意,并将其插入到ConvNets中,构建具有全局接受场的ConvNets。这些论文清楚地表明,ConvNets的一些技术可以应用于视觉变压器,以设计更好的视觉变压器模型。
另一个流行的研究方向是结合vit和ConvNets的元素来设计新的骨干。Graham等人在他们的LeViT[25]模型中混合了ConvNet和变压器,该模型在速度/精度权衡方面显著优于以前的ConvNet和ViT模型。BoTNet[41]在ResNet的最后几个块用多头注意代替了标准的卷积。vit-c[42]为纯ViT添加早期卷积。ConViT[43]通过门控位置自注意融合了软卷积归纳偏差。CMT[10]块由基于深度卷积的局部感知单元和一个轻型变压器模块组成。CoatNet[24]融合了卷积和自关注,设计了一个新的变压器模块,它既关注局部信息,也关注全局信息。
2.3 Large Kernel Convolution Network
早期的ConvNets如AlexNet[44]和GoogleNet[45]使用大内核,如5×5或7×7。但是自从VGGNet[31]成功之后,堆积像3x3和1x1这样的小内核被认为是计算和存储的有效选择。最近,受视觉变形器成功的启发,大内核再次被重用为改进模型性能的强大工具。ConvNext[27]通过引入一系列增量但有效的设计,使标准ResNet朝着视觉转换器的设计现代化,其中7×7深度卷积遵循Swin[23]中的窗口- sa的精神使用。RepLKNet[16]将卷积核扩展到31×31并获得性能增益,但是使用的重新参数化技巧会增加训练过程的负担,并且需要一个额外的转换步骤来部署模型。后来,Rao等人使用了一个更大的内核51×51,它具有动态稀疏度[46]。GFNet[47]用一个全局傅里叶卷积代替变压器块中的SA(自我注意),用FFT实现。
我们的工作与RepLKNet[16]和GFNet[47]密切相关。这些方法和我们提出的ParC方法都关注于扩大有效接受域,但我们提出的op不同于以下观点:1)我们的ParC使用可学习的位置嵌入来保持结果特征图的位置敏感。这对于位置敏感的任务(如语义分割和目标检测)非常重要。烧蚀研究的实验也证实了这一点。2)我们的ParC采用轻量化设计。RepLKNet使用重二维卷积核,GFNet使用形状为2CHW的可学习复权矩阵,而我们使用两个一维卷积,将核减少为CH或CW。3)不同于强调网络整体设计的RepLKNet和GFNet,我们提出的ParC是一种新型的基础算子,可以插入到vit和ConvNets中,即插即用。我们在4.1节和4.2节的实验结果验证了这一点。此外,我们还提出了Fast-ParC,进一步拓宽了ParC的使用场景。
3 THE PROPOSED FAST-PARC OPERATOR
在本节中,我们首先通过与普通卷积算子的比较来介绍所提出的ParC算子。然后,我们提出了FFT加速版本的ParC,命名为Fast-ParC。最后,我们解释了如何在ViT和ConvNet模型中使用所提出的ParC。
3.1 ParC Operation
3.1.1 Vanilla Depth-wise Convolution
为了描述在形状为B×C×H×W的4D输入张量上进行的水平维一维深度卷积(记为Conv1d-H),我们可以首先关注一个特定的通道。我们将输出表示为y=y1,…,yH−1y = {y_1,…, y_{H−1}}y=y1,…,yH−1,输入为x=x0,x1,…,xH−1x = {x_0, x_1,…, x_{H−1}}x=

最低0.47元/天 解锁文章
4993

被折叠的 条评论
为什么被折叠?



