深圳大学提出Shift-ConvNets | 稀疏/移位操作让小卷积核也能达到大卷积核效果,且硬件友好

简介: 深圳大学提出Shift-ConvNets | 稀疏/移位操作让小卷积核也能达到大卷积核效果,且硬件友好

最近的研究表明,视觉 Transformer (ViTs)出色的性能得益于大的感受野。因此,大的卷积核设计成为使卷积神经网络(CNNs)再次强大的理想解决方案。然而,典型的大的卷积核实际上是硬件不友好的运算符,导致各种硬件平台的兼容性降低。因此,简单地扩大卷积核大小是不明智的。

在本文中,作者揭示了小卷积核和卷积操作可以达到大的卷积核的近似效果。然后,作者提出了一种移位操作符,通过稀疏机制帮助卷积神经网络捕捉长程依赖关系,同时保持对硬件的友好性。

实验结果显示,作者的移位操作符显著提高了常规CNN的准确性,同时显著降低了计算需求。在ImageNet-1k上,作者的移位增强的CNN模型超过了最先进的模型。

代码和模型:https://github.com/lidc54/shift-wiseConv

1 Introduction

神经网络的发展在机器学习领域取得了显著的突破,尤其是在计算机视觉和自然语言处理等领域。卷积神经网络作为当前主导架构之一,在自然语言处理、计算机视觉等领域得到了广泛应用。尽管如此, Transformer 的发展推动了视觉识别在2020年代实现了爆炸性增长。它迅速取代了CNN,成为计算机视觉的最先进模型。

ConvNeXts是一项突破性工作,使CNN能够与 Transformer 竞争。它根据 Transformer 重新设计了ResNet,并重新点燃了对大卷积核作用的关注。Ding等人[7]使用特征重参化将卷积核大小增加到31x31,提高了模型在RepLK-net中的能力。Liu等人[8]通过特征分解和权重矩阵训练的稀疏性将核大小增加到51x51,在SLAK-net中保持了连续的优势,并维持了对所提出架构的连续益处。

事实上,使用大的卷积核并不是最近才出现的现象。在Alexnet中,11x11和5x5卷积被广泛使用,为后续研究奠定了良好的基础。随后,许多经典 Backbone 架构在CNN中出现,如广泛应用并不断优化的ResNet。在其Stem层早期版本中,ResNet采用了大的卷积核。同样,GoogleNet Inception V1使用多个不同大小的并行卷积核结构进行信息融合,如图1(a)所示。

在后续研究中,包括Alexnet、Resnet和GoogleNet在内的基本架构中的大卷积核部分被逐渐替换为较小的核。VGG-net引入了感受野的概念,认为堆叠小核理论上可以达到与大核相同的效果,但参数和计算成本较少。另一个好处是增加了更多的非线性层以增强网络的表达能力。后来,Limu的研究团队在论文[12]中总结了ResNet训练的技巧,并提出了一个新的ResNet结构,该结构在ResNet的Stem层中移除了使用大核的方式。

然而,在某些领域中,使用大的卷积核并未完全消失:

  1. 类似于Inception V1的层次结构的多尺度特征融合技术被反复引用和增强。例如:在SPPnet中,多尺度池化层与普通卷积有效形成了金字塔池化模块结构中的大卷积核,如图1(d)所示。为了进一步增强这种特征融合方法,DeepLab中的ASPP(空洞时空金字塔池化)模块和Trident Networks中的Trident结构使用逐步增加的空洞卷积来实现类似的功能,如图1(c)所示。
  2. 此外,利用大的感受野进行远程特征融合的实践也是一种长期的技术。FCN中引入的空洞卷积是一种广泛用于分割的技术。SegNeXt利用大小为1x7、1x11和1x21的并行卷积进行目标分割。Global Convolutional Network(GCN)采用堆叠1xk和kx1卷积来实现同样的目的。此外,一些细粒度特征提取研究方法,如[18, 19, 20],在卷积层后使用矩阵乘法建立长程特征依赖关系。广泛使用的非局部结构也采用了类似的操作。
  3. Deformable Convolutional Networks(DCN)通过使用较少的参数实现了一个大的感受野。这个想法导致了许多研究。Dynamic Snake Convolution(DSConv)在DCN的基础上增加了额外的约束,以适应血管分割场景。Linear kernel将DCN的思想应用于3D稀疏点云,以实现更强的感知和更高的效率。在[25]中,使用DCN思想精细调整实例分割的边缘。

上述涉及大卷积核概念的应用,无论是全部还是部分,都揭示了特征聚合对远程特征依赖的重要性。这一点得到了ConvNeXts、RepLK-net和SLAK实验的证实。Ding等人[3]引用了一个论点,即卷积核大小的平方根。堆叠深度与实际感受野成正比。实验证明,大卷积核是必要的。然而,考虑到核大小的不可避免的演变,作者可以预期可以仅通过小卷积核实现的大核效果。实际上,ParCNetV2将核大小扩展到输入特征图大小的两倍。继续增加卷积核大小似乎已经达到了边际收益递减的点。另一方面,特征依赖不需要太密集,正如Transformer所证明的那样。因此,一个直观的问题出现了:CNNs能否使用标准卷积构建稀疏的长程依赖关系?

为了应对这个问题,作者提出了一种方法:通过移位标准卷积来实现大卷积核的效果,然后通过剪枝获得稀疏组卷积,作者称这种运算符为移位运算符。该运算符与采用的参数重定义结构相结合,以增强模型的性能能力。它将大卷积核的效果与标准CNN的进步无缝地集成在一起。

2 Proposed Method

Decomposition and Combination of Convolution

基于大卷积核的持续演变,作者提出了Shift-wise运算符。改进的模块结构如图4(a)所示。具体来说,作者将大卷积核转换为一系列正常的较小卷积核,然后对每个卷积结果应用一个移位操作。

具体来说,传统卷积可以表示为公式1:

其中表示图像或特征图上滑动窗口的位置。和分别表示卷积核的宽度和高度。表示位置信息。和表示对应位置的权重和特征。为了通用性,假设。大卷积核可以通过以下变换分解(分解结构大的卷积核),如图2所示:

是向上取整。从公式很容易看出分解后的卷积核,即的情况。可以用多个正规小卷积核来替换。当然,这需要对超参数进行对齐,如偏移控制和填充设置。图4(a)提供了更直观的理解,并使用不同颜色的方块表示这种替换关系。

在这里,一个15x3的卷积可以等价于5x3x3的卷积。对于这种情况,需要使用移位操作。与之前的情况不同,移位需要在一维上移动得更远,并使它与大小的网格对齐。为了更详细地表示这种移位差异,作者使用图5(c)中的示意图。

Sparse Dependencies of Large Convolution Kernels

大卷积核可以在特征空间中建立长程依赖关系。然而,生物视觉理解往往忽略一些信息。Transformer 也建立稀疏依赖关系。尽管SLaK也使用了细粒度的稀疏权重矩阵。但由于局部信息感受野,很难说SLaK中确实建立了稀疏注意力关系。这个问题在高层语义水平上带来了计算冗余,这不仅仅是低层语义水平上减少计算量的覆盖。在低层语义水平上减少计算量更不理想。

作者改进的方法也非常简单。在训练过程中,剪枝一些连接。图5(c)和图6(b)中的虚线彩色块表示通道被剪枝,如图5(c)和图6(b)所示。通过这种粗粒度剪枝,可以得到稀疏组卷积。通过后续的add操作,可以确保模块的总通道输出保持不变。

对于这种方法,可以从训练过程中的数据流形角度不断优化依赖关系,同时保持整体网络结构不变。作者称之为组移位操作。整体结构如图4(b)所示。

  • 首先,将组移位操作应用于相同的输入,以模拟多个卷积核大小,创建多个输出分支
  • 然后,从每个组中选择一个通道形成Identity分支
  • 最后,将所有输出分支组合成一条单独的分支

在本文中使用了与SLaK类似的3种卷积核:,和(其中),不再进行进一步探索。同时,作者将这种整体结构称为移位运算符。

与SLaK相比,作者提出的移位运算符是一种更通用的形式,可以进一步放宽限制。这包括卷积核的大小、形状和信息融合的方法。由于移位和稀疏性,作者引入了新的概念:关注长度和关注宽度,对应于SLaK中 Kernel 大小的和。

在这里,作者正式定义移位运算符为一种方法,首先指定一个具有关注长度和关注宽度的矩形区域,然后选择大小小于或等于关注宽度的卷积核,并调整这些卷积组的分布进行信息融合。关注长度不需要小于当前特征图大小。对于这种情况,作者稍微调整公式2得到公式3:

其中代表所有预定的非重叠小卷积。表示小卷积核的大小。和分别表示关注长度和关注宽度。表示与相关的函数。相应地,权重和特征偏移是与相关的函数,表示为。

Intermodule Feature Manipulation

为了在推理过程中减少计算量,作者试图在模块内管理特征。具体而言,作者将'ghost'和重参化(rep)技术结合到一个模块中,如图7所示。

Theoretical Computational Complexity Changes

实验设置如下:SLaK模块有两个分支,一个是的卷积分支,一个是的Identity证分支,所有分支都是深度卷积分支()。移位模块使用将'ghost'和'rep'风格结合在一起的模块,其中包含组 Kernel 大小的卷积,并带有相应的移位操作。在这里,是的上取整。假设输入特征尺寸分别表示batch, channel, height和width。

对于SLaK的深度计算复杂度,作者得到以下公式,如图4所示。"+"在卷积核部分前后的表示大卷积核和小卷积核部分。对于合并-的情况,作者在此部分不考虑层的参数数量和计算复杂度。小卷积核部分理论上可以在推理阶段通过Rep方法合并到两个大分支中,因此也可以忽略不计。相应地,作者推导出SLaK的深度参数数量,如图5所示。

Shift-wise操作的计算复杂度由公式6给出。在这里,,和是填充后的特征尺寸,它们将比原始尺寸大(其中)。

Identity分支从组卷积的输出中随机选择个特征,每个分支有个通道。两个大卷积核分支将从组卷积的输出中重新排列特征。两个大卷积核分支将执行移位操作后进行特征加法。所有个通道都经过相同的移位操作。加法函数指定必要的移位和加法操作。加法操作的计算成本用表示。作者注意到Shift-wise操作是一种稀疏组卷积。

Shift-wise操作的对应参数数量由公式7给出。SLaK和shift-wise的计算复杂度比率由公式8给出。目前,忽略(, )和(, )之间的差异,以及。

对于SLaK,前四个阶段有,,比率为[1.85, 1.96, 2.0, 1.73, 2.0]。考虑到(, )和(, )之间的差异,以及,这个值将稍微降低。然而,Shift-wise操作中的稀疏组卷积将显著增加它。作者计算了与的参数数量比率,如图9所示。与SLaK相比,Shift-wise操作的参数数量和计算复杂度都约为减半。

4 Experimental Setup and Result Analysis

Experimental Configuration

Shift-wise网络(记作SW)保留ConvNeXt中优化的ResNet结构。在每个网络阶段中,作者使用不同的块数。具体来说,SW-T结构使用[3, 3, 9, 3]块,而SW-S/B使用[3, 3, 27, 3]块。核的短边为5,长边在每个阶段中变化为[51, 49, 47, 13]。Stem模块使用一个卷积,步长为4。

关于shift操作的实现,Lart等人[50]总结了五种可行的操作:切片索引,torch.roll,变形卷积,深度卷积和网格采样F.grid_sample。这些操作在计算上是昂贵的。因此,作者使用taichi[51]重新编写相应的运算符。

Evaluation on Imagenet-1k

Imagenet-1k是一个大规模的视觉数据库,用于视觉目标识别软件研究。它提供了超过1000种不同的类别图像,用于训练和测试各种图像识别算法。

正如3.1节中所述,shift-wise运算符可以完全等价于SLaK中使用的大卷积核。这需要仔细设置填充和移位。作者称这种等价版本为"equ-SLaK-T"。然后,对于没有稀疏组训练且的SW模块,作者使用并将其表示为"p-SW"。当时,作者将其表示为"p2-SW"。

这些几种设置的准确性详细地显示在表1中。作者可以观察到,在参数数量几乎减半的情况下,shift-wise操作的准确性几乎等于在120个周期内训练的SLaK-T。作者发现,比更好。作者将设置为默认值。

为了进一步分析稀疏的shift-wise网络结构,作者在表2中呈现了每个阶段第一层稀疏性。显然,在较早的阶段,稀疏度比更高,需要更少的组来实现大卷积核的效果。在较晚的阶段,稀疏度逐渐降低。这些剩余的有效组完全由数据驱动获得,显示了在提高推理效率方面具有巨大的潜力。

为了保持计算效率并提高准确性,作者使用了shift-wise模块中引入的多个分支。多个分支共享一个公共稀疏掩码,以确保在稀疏训练中参数重参化的可行性。结果如表3所示。shift-wise模块方法保持了表2中显示的稀疏性,并实现了比SLaK更高的准确性。

表4显示,与SLaK相比,shift-wise模块在卷积操作方面的计算复杂性显著降低。减少它们的用法可以提高整体计算吞吐量。

同时,作者在单个分支上测试了shift-wise模块的运行时间,如表5所示。结果表明,在特定稀疏度下,提出的运算符降低了时间成本。考虑到SLaK使用双分支网络,而shift-wise模块仅采用一半的卷积次数,推理时间的减少更加显著。

5 Conclusions

近年来,大规模视觉 Transformer (ViT)取得了显著的进展。同时,改善卷积神经网络(CNNs)的研究也取得了快速的进步。在本文中,提出的运算符通过常规卷积实现大规模核效果,这更具有硬件友好性和软件效率。

对于各种设备,作者的研究使得CNN的最新进展能够以更少的成本应用。作者不仅在优化效率方面取得了进步,而且还开始探索如何提高CNN性能的方法。创建空间稀疏相关性是一种有效的方法。已建立的长期稀疏依赖关系由数据驱动,可以缓解由手动设计可能引起的下游任务的迁移问题。提出的运算符需要基本的读取数据过程,而且在多步融合方面有进一步优化的潜力。同时,关于稀疏依赖性构建的新设计空间需要进一步的研究。

参考

[1].Shift-ConvNets: Small Convolutional Kernel.

相关文章
|
4月前
|
机器学习/深度学习
神经网络各种层的输入输出尺寸计算
神经网络各种层的输入输出尺寸计算
250 1
|
6月前
|
机器学习/深度学习
【从零开始学习深度学习】23. CNN中的多通道输入及多通道输出计算方式及1X1卷积层介绍
【从零开始学习深度学习】23. CNN中的多通道输入及多通道输出计算方式及1X1卷积层介绍
【从零开始学习深度学习】23. CNN中的多通道输入及多通道输出计算方式及1X1卷积层介绍
|
2月前
|
机器学习/深度学习
深度学习笔记(十二):普通卷积、深度可分离卷积、空间可分离卷积代码
本文探讨了深度可分离卷积和空间可分离卷积,通过代码示例展示了它们在降低计算复杂性和提高效率方面的优势。
199 2
深度学习笔记(十二):普通卷积、深度可分离卷积、空间可分离卷积代码
|
7月前
|
机器学习/深度学习 编解码 自然语言处理
LRP-QViT完美而来 | 输出层分配相关性+剪切通道让Swin Transformer量化后居然涨1.5个点
LRP-QViT完美而来 | 输出层分配相关性+剪切通道让Swin Transformer量化后居然涨1.5个点
297 0
|
机器学习/深度学习 编解码 数据可视化
深度学习基础入门篇9.1:卷积之标准卷积:卷积核/特征图/卷积计算、填充、感受视野、多通道输入输出、卷积优势和应用案例讲解
深度学习基础入门篇9.1:卷积之标准卷积:卷积核/特征图/卷积计算、填充、感受视野、多通道输入输出、卷积优势和应用案例讲解
深度学习基础入门篇9.1:卷积之标准卷积:卷积核/特征图/卷积计算、填充、感受视野、多通道输入输出、卷积优势和应用案例讲解
|
机器学习/深度学习 存储 编解码
深度学习基础入门篇[9.3]:卷积算子:空洞卷积、分组卷积、可分离卷积、可变性卷积等详细讲解以及应用场景和应用实例剖析
深度学习基础入门篇[9.3]:卷积算子:空洞卷积、分组卷积、可分离卷积、可变性卷积等详细讲解以及应用场景和应用实例剖析
215 0
|
机器学习/深度学习 设计模式
卷积越大性能越强!RepLKNet一作在线分享:Transformer阴影下的超大卷积核复兴
卷积越大性能越强!RepLKNet一作在线分享:Transformer阴影下的超大卷积核复兴
105 0
|
机器学习/深度学习 编解码 数据可视化
SPM: 一种即插即用的形状先验模块,可轻松嵌入任意编解码架构,助力涨点并显著改善分割效果!
SPM: 一种即插即用的形状先验模块,可轻松嵌入任意编解码架构,助力涨点并显著改善分割效果!
342 0
|
机器学习/深度学习 人工智能 数据挖掘
【Pytorch神经网络理论篇】 26 基于空间域的图卷积GCNs(ConvGNNs):定点域+谱域+图卷积的操作步骤
图卷积网络(Graph Convolutional Network,GCN)是一种能对图数据进行深度学习的方法。图卷积中的“图”是指数学(图论)中用顶点和边建立的有相关联系的拓扑图,而积指的是“离散卷积”,其本质就是一种加权求和,加权系数就是卷积核的权重系数。
392 0
|
人工智能 程序员 开发者
利用chatGPT实现卷积运算
利用chatGPT实现卷积运算
下一篇
DataWorks