本文主要是介绍Shift-ConvNets:具有大核效应的小卷积核,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
摘要
https://arxiv.org/pdf/2401.12736.pdf
最近的研究表明,Vision transformers (ViTs)的卓越性能得益于大的感受野。因此,大型卷积核设计成为使卷积神经网络(CNNs)再次变得出色的理想解决方案。然而,典型的大的卷积核被证明是对硬件不友好的操作,导致与各种硬件平台的兼容性降低。因此,简单地增大卷积核的大小是不明智的。在本文中,我们揭示了小型卷积核和卷积操作可以实现大型内核大小的封闭效果。然后,我们提出了一种shift-wise操作,该操作借助稀疏机制确保CNN捕获长距离依赖关系,同时保持对硬件的友好性。实验结果表明,我们的shift-wise操作显著提高了常规CNN的准确性,同时显著降低了计算要求。在ImageNet-1k上,我们的shift-wise增强CNN模型优于最先进的模型。代码和模型在https://github.com/lidc54/shift-wiseConv上。
关键词:CNN;大卷积核;Shift-wise
1、简介
神经网络的发展在机器学习领域取得了重大突破,特别是在计算机视觉和自然语言处理领域[1,2,3]。卷积神经网络(CNN)作为这一阶段的支配性架构之一,广泛应用于自然语言处理、计算机视觉等领域[4,5]等等。尽管如此,转换器的发展在2020年代推动了视觉识别进入爆炸性增长的时代。它迅速取代了CNN,成为计算机视觉领域的最先进模型。ConvNeXts [6]是一项开创性的工作,使CNN能够与转换器竞争。它根据转换器重新设计了ResNet,并重新强调了大型卷积核的作用。关于增加卷积核大小的好处出现了思考。丁等人在[7]中通过特征重新参数化将卷积核大小增加到31×31,提高了模型在RepLK-net中的能力。刘等人在[8]中通过特征分解和权重矩阵训练的稀疏性,将核大小增加到51×51在SLaK-net中,并在此过程中保持对所提出的架构的持续好处。
事实上,使用大型卷积核并不是最近的现象。在Alexnet [9]中,11×11和5×5的卷积被大量使用,为后续研究奠定了良好的研究基础。随后,CNN中出现了许多经典的主干架构,如被广泛采用并不断优化的ResNet [1]。在早期版本的主干层中,ResNet采用了大型卷积核。同样,GoogleNet Inception V1 [10]采用了使用不同大小的多个并行卷积核进行信息融合的结构,如图1(a)所示。在后来的研究中,基本架构中使用的大型卷积核部分逐渐被较小的核所取代。VGG-Net[11]引入了感受野的概念,建议通过堆叠小核可以在理论上达到与大核相同的效果,同时减少参数和计算成本。另一个好处是增加了更多的非线性层来增强网络的表达能力。后来,Limu的研究团队在论文[12]中总结了ResNet训练的技巧,并提出了一个新的ResNet结构,该结构去除了ResNet主干层中使用的大型核。
然而,在某些领域,大型卷积核的使用并没有完全消失。1)从InceptionV1-like架构风格的多尺度特征融合技术已被反复引用和增强。例如:在SPPnet [13]中,多尺度池化层与普通卷积有效结合,在金字塔池化模块结构中形成大卷积核,如图1(d)所示。为了进一步增强这种特征融合方法,DeepLab [2]中的ASPP(Atrous Spatial Pyramid Pooling)模块和Trident Networks [14]中的Trident结构采用渐进增加的空洞卷积实现类似的功能,如图1(c)所示。2)此外,利用大感受野进行远距离特征融合的实践也一直是长期存在的技术。FCN [15]中引入的空洞卷积是分割中广泛采用的技术。SegNeXt [16]利用大小为1×7、1×11和1×21的并行卷积进行对象分割。全局卷积网络(GCN) [17]采用堆叠的1×k和k×1卷积进行相同的目的。此外,一些细粒度特征提取研究方法,如[18,19,20],在卷积层后使用矩阵乘法来建立长距离特征依赖性。广泛使用的非局部结构[21]也采用了类似的运算。3)可变形卷积神经网络(DCN) [22]实现了具有小参数量的大的感受野。这一思想引发了许多研究。动态蛇形卷积(DSConv) [23]在DCN之上添加了额外的约束,以适应血管分割场景。线性核[24]将DCN的思想应用于3D稀疏点云,以实现更强的感知和更高的效率。在[25]中,使用DCN的思想精细调整实例分割的边缘。
上述涉及大卷积核概念的应用,无论是整体还是部分,都揭示了长距离特征依赖对于特征聚合的重要性。ConvNeXts、RepLK-net和SLaK的实验证实了这一点。丁等人在[3]中引用了平方根的卷积核大小和堆叠深度与实际感受野成正比的论点。这表明大卷积核是必要的。然而,考虑到卷积核大小演变的必然性,我们可以预期仅使用小卷积核就能实现与大卷积核相似的效果。实际上,ParCNetV2 [26]将卷积核大小急剧扩大到输入特征图的两倍。继续增加卷积核的大小似乎已经达到了边际收益递减的点。另一方面,特征依赖不需要过于密集,正如Transformer [27]所证明的那样。因此,一个直观的问题出现了:CNN能否使用标准卷积构建稀疏的长距离依赖关系?
为了解决这个问题,我们提出了一种方法:通过平移标准卷积实现大卷积核的效果,然后通过修剪获得稀疏组卷积。我们将其称为“shift-wise”操作符。该操作符与采用的重参数化结构相结合,以增强模型的性能能力。它将大卷积核的效果与标准CNN的进步无缝地结合起来。
2、相关工作
2.1、大卷积核的研究进展
与CNN相比,Transformer具有更高的计算复杂性、更大的训练和推理成本以及更多的训练数据需求等局限性。此外,它不擅长处理数据中的位移。Transformer和CNN之间的差异为我们理解神经网络造成了鸿沟。CNN是否因为其设计而慢,还是因为其本质上的更深层次差异?Liu等人[6]分析了Transformer的设计空间,并成功地重新设计了ResNet。他们的工作开创了大型卷积核范式的应用。后来,视觉注意力网络(VAN) [28]结合了膨胀卷积、逐点操作和逐深度操作来构建通用权重张量,扩大了空间感知的范围。在RepLK-net [7]中,卷积核大小扩大到31×31,在SLaK-net [8]中扩大到51×51。UniRepLKNet [3]使用更多的并行膨胀卷积进行重参数化,并使用Squeeze-and-Excitation块 [29]增强空间和通道信息的融合。这种方法进一步提高了CNN的性能。利用DCN自组织空间特征的能力,InternImage方法 [30]为CNN构建了稀疏的长距离依赖关系。在[31]中,具有可学习间距的膨胀卷积(DCLS)将膨胀率转换为可学习参数,并允许参数在卷积核大小内的位置移动。这增加了CNN的表现力。
一些研究[32,28]使用可分离卷积来适应最新的大型卷积核方法。在[32]中,Large Separable Kernel Attention使用k×1和1×k卷积来分解基于VAN [28]的CNN,以较低的成本实现类似的效果。在[33]中,Oriented 1D卷积增加了两个额外的对角线形式的可分离卷积。Deformable Large Kernel Attention [34]向大型内核注意力(LKA)中添加了可变形卷积,如VAN [28]中所介绍。ParCNetV2 [26]将卷积核大小扩展到输入特征图大小的的两倍。Huang等人[35]证明,大型卷积核在特征提取和组织方面具有优势,这是通过从具有大型卷积核的老师网络中进行知识蒸馏来实现的。
大型卷积核是提高CNN性能的核心要素。同时,其固有的问题也不容忽视:-
-
- 大型卷积核的核大小过大,超出了传统操作符的优化范围。在各种软件和硬件平台上的有限优化阻碍了其广泛应用。
-
- 增加卷积核的大小似乎会逐渐减少边际回报。
-
- Transformer具有稀疏注意力的能力,而不必关注所有输入令牌。CNN是否可以引入此功能?
-
- 大型卷积核的计算成本是其应用的障碍。即使是参数较少的异构卷积,如可学习的膨胀卷积和DCN,也不是硬件友好的操作符。
2.2、移位操作
2007年,Wu等人[36]引入了Shift操作,该操作以较低的成本实现了卷积的多样化输出,如图3(a)所示。它可以视为Depthwise Convolution的一个特例。Active Shift方法[37]将Shift操作转换为可学习的参数,从而增强了其捕获能力,如图3(b)所示。Sparse Shift Layer [38]与Active Shift方法相比,消除了不必要的可学习Shift参数。它需要更少的操作来实现满意的结果,如图3©所示。ACmix方法[39]将普通卷积视为1×1卷积和Shift操作的组合。因此,它引入了一种更具成本效益的新型Transformer自注意力机制。Shift Graph Convolutional Network [40]在图神经网络上采用特征移动方法来表示全局和局部空间信息。Xvolution [41]也采用了类似的想法来近似特征注意力机制的全局和局部信息。AKConv方法[42]类似于Dilated Convolution with Learnable Spacings (DCLS) [31],也可以调整核参数的采样位置。
Shift-wise与上述Shift操作在以下几个方面有所不同:
-
- Shift GCN [40]和Xvolution [41]背后的关键思想是使用Shift操作来估计全局特征。Xvolution使用此方法来近似局部卷积附近区域中的全局信息。与常见的Shift操作相比,实际感受野的差异并不显著。Shift GCN没有引入各种Shift选项。我们提出的shift-wise操作沿一个维度进行位移,旨在最大限度地扩展实际感受野。
-
- 提出的shift-wise运算符引入了稀疏依赖关系作为特征,并形成了一个原子操作来扩展感受野。
2.3、修剪操作
粗粒度剪枝神经网络是通过剪枝网络的通道或滤波器来实现的。然而,剪枝往往给多分支融合带来挑战。在不同的层之间对齐有价值的通道并确保有效的多分支融合可能很困难。相比之下,我们的方法保持神经网络结构的相同。这是一个罕见的框架,可以在训练过程中改变数据流形并保持网络结构的恒定性。
2.4、Ghost和重新参数化
“Ghost”的概念最初由GhostNet[43]提出并明确使用,它指的是对于每个基本模块只处理部分特征,并将其与剩余特征连接作为输出。后续的工作从不同的角度扩展了这一思想。例如,[44]中的CSPNet通过关注级联层中特征的重用进行了改进。另一方面,[45]中的FasterNet结合了深度和幽灵网的思想,提出了一个增强方法。
RepVGG[46]和重参数化方法在训练过程中使用多个分支来增加数据流形的复杂性,在推理过程中合并这些分支来加速前向速度。ExpandNets[47]、MobileOne[48]和VanillaNet[49]分别通过分解权重矩阵扩展了重新参数化的思想,增加了重新参数化的宽度和深度。此外,该方法还应用于RepLK-Net[7]、SLaK-Net[8]和UniRepLKNet[3]。
2.5、创新总结
我们在方法方面的创新总结如下:
-
虽然RepLK-net [7]引入了自定义操作来加速31×31卷积核的性能,而SLaK通过使用最大为61×5的核验证了其高效率,但我们的推理单元可能不限于单个平台或框架。新引入的优化操作在某些情况下可能会带来适用性挑战。
-
大型卷积核虽然提升了CNN的“复兴”效果,推动CNN与Transformer的能力相媲美,但它们在应用和研究方面尚未达到预期的影响。shift-wise可以降低使用大型卷积核的成本。
-
与已经成熟且广泛应用的深度、点和其他形式的展开相比,shift-wise的引入无疑在新的维度上扩展了卷积核的组织。
3、提出的方法
3.1、卷积的分解与组合
基于大卷积核的连续演变,我们提出了一种shift-wise运算符。改进的模块结构如图4(a)所示。具体来说,我们将大卷积核转化为一系列正常的小卷积核,然后对每个卷积结果应用一个位移操作。
具体来说,传统的卷积可以用公式1表示:
y ( p ( i , j ) ) = ∑ m = 0 k w ∑ n = 0 k h w ( p ( Δ m , Δ n ) ) ⋅ x ( p ( i , j ) + p ( Δ m , Δ n ) ) (1) y\left(p_{(i, j)}\right)=\sum_{m=0}^{k w} \sum_{n=0}^{k h} w\left(p_{(\Delta m, \Delta n)}\right) \cdot x\left(p_{(i, j)}+p_{(\Delta m, \Delta n)}\right) \tag{1} y(p(i,j))=m=0∑kwn=0∑khw(p(Δm,Δn))⋅x(p(i,j)+p(Δm,Δn))(1)
Δ m = m − k w 2 ; Δ n = n − k h 2 \Delta m=m-\frac{k w}{2} ; \Delta n=n-\frac{k h}{2} Δm=m−2kw;Δn=n−2kh
其中 (i, j) 表示图像或特征图上滑动窗口的位置。k w 和 k h 是卷积核的维度。p 表示位置信息。w 和 × 是相应位置上的权重和特征。为了简单起见,我们让 k w>k h 。大卷积核可以通过以下变换进行分解(分解结构大的核),如公式2所示:
y ( p ( i , j ) ) = ∑ k = 0 ⌈ k w k h ⌉ ∑ m = 0 k h ∑ n = 0 k h w ( p ( Δ m , Δ n ) + Δ p ) ⋅ x ( p ( i , j ) + p ( Δ m , Δ n ) + Δ p ) Δ m = m − k w 2 ; Δ n = n − k h 2 Δ p = k h ∗ k , ( k ∈ [ 0 , ⌈ k w k h ⌉ ] ) (2) \begin{array}{c} y\left(p_{(i, j)}\right)=\sum_{k=0}^{\left\lceil\frac{k w}{k h}\right\rceil} \sum_{m=0}^{k h} \sum_{n=0}^{k h} w\left(p_{(\Delta m, \Delta n)}+\Delta p\right) \cdot x\left(p_{(i, j)}+p_{(\Delta m, \Delta n)}+\Delta p\right) \\ \Delta m=m-\frac{k w}{2} ; \Delta n=n-\frac{k h}{2} \\ \Delta p=k h * k,\left(k \in\left[0,\left\lceil\frac{k w}{k h}\right\rceil\right]\right) \end{array} \tag{2} y(p(i,j))=∑k=0⌈khkw⌉∑m=0kh∑n=0khw(p(Δm,Δn)+Δp)⋅x(p(i,j)+p(Δm,Δn)+Δp)Δm=m−2kw;Δn=n−2khΔp=kh∗k,(k∈[0,⌈khkw⌉])(2)
其中⌈ ⌉是向上取整函数。从公式2中,我们可以很容易地看到分解后的大卷积核,即k w>k h 的情况。它可以被多个常规的小卷积核替代。当然,这需要调整超参数,如偏移控制和填充设置。图4(a)提供了更直观的理解,并使用不同颜色的块来表示这种替代关系。其中15×3的卷积可以等效地表示为53×3的卷积。对于这种情况,我们需要使用位移操作。与之前的情况不同,位移需要在某一维度上移动得更远,并对应于大小为k h 的网格。为了更详细地表示这种位移的差异,我们使用了图5(c)中的示意图。
3.2、大卷积核的稀疏依赖性
大卷积核的存在可以在特征空间中建立长距离依赖关系。然而,生物视觉理解倾向于忽略某些信息。Transformer也建立了稀疏的依赖关系。尽管SLaK也使用了一个精细的稀疏权重矩阵。考虑到局部信息感受野,很难说SLaK建立了稀疏的注意力关系。这个问题在高语义级别上带来了计算冗余,而不仅仅是在低语义级别上减少计算量。在低语义级别上减少计算量不太理想。
我们的改进方法也很直接。我们在训练过程中修剪一些连接。虚线彩色块表示修剪的通道,如图5(c)和图6(b)所示。通过这种粗粒度的修剪,我们获得了稀疏组卷积。由于后续的加法操作,我们可以确保模块的总通道输出保持不变。对于这种方法,我们可以在训练过程中从数据流形角度不断优化依赖关系,同时保持整个网络结构不变。我们称之为组移位操作。我们的整体结构如图4(b)所示。首先,我们对同一输入应用组移位操作来模拟多个卷积核大小,创建多个输出分支。然后,我们从每个组中采样一个通道形成身份分支。最后,我们将所有输出分支组合成一个单一分支。在本文中,我们使用了与SLaK相似的三种类型的卷积核:m×n、n×m和n×n(其中m>n),没有进一步探索。同时,我们将这种整体结构称为shift-wise运算符。
与SLaK相比,我们提出的shift-wise运算符是一种更通用的形式。而且,它可以进一步放宽限制,包括卷积核大小、形状和信息融合方法。由于移位和稀疏性,我们引入了新的概念:焦点长度和焦点宽度,这与之前提到的SLaK中的核大小m和n相对应。在这里,我们正式将shift-wise运算符定义为一种方法,该方法首先指定一个具有焦点长度和焦点宽度的矩形区域,然后选择大小小于或等于焦点宽度的卷积核,并调整这些卷积组的分布以进行信息融合。焦点长度不需要小于当前特征图的大小。对于这种情况,我们稍微调整公式2以获得公式3:
y ( p ( i , j ) ) = ∏ k = 0 f ( k w , k h , A ) ∑ m = 0 A ∑ n = 0 A w ( p ( Δ m , Δ n ) + Δ p ) ⋅ x ( p ( i , j ) + p ( Δ m , Δ n ) + Δ p ) Δ m = m − A 2 ; Δ n = n − A 2 Δ p = g ( k h , k ) , ( k ∈ [ 0 , f ( k w , k h , A ) ] ) (3) \begin{array}{c} y\left(p_{(i, j)}\right)=\prod_{k=0}^{f(k w, k h, A)} \sum_{m=0}^{A} \sum_{n=0}^{A} w\left(p_{(\Delta m, \Delta n)}+\Delta p\right) \cdot x\left(p_{(i, j)}+p_{(\Delta m, \Delta n)}+\Delta p\right) \\ \Delta m=m-\frac{A}{2} ; \Delta n=n-\frac{A}{2} \\ \Delta p=g(k h, k),(k \in[0, f(k w, k h, A)]) \end{array} \tag{3} y(p(i,j))=∏k=0f(kw,kh,A)∑m=0A∑n=0Aw(p(Δm,Δn)+Δp)⋅x(p(i,j)+p(Δm,Δn)+Δp)Δm=m−2A;Δn=n−2AΔp=g(kh,k),(k∈[0,f(kw,kh,A)])(3)
其中,π表示所有预定的非重叠的小卷积。A表示小卷积核的大小。kw和kh分别表示焦点长度和焦点宽度。 f ( k w , k h , A ) f(kw, kh, A) f(kw,kh,A)表示与 ( k w , k h , A ) (kw, kh, A) (kw,kh,A)有关的函数。相应地,权重和特征偏移Δp是关于(kh, k)的函数。将该函数记为g。
3.3、模块间的特征操作
为了减少推理时的计算量,我们尝试对模块内的特征进行管理。具体来说,我们将“ghost”和重参数化(rep)技术结合到一个模块中,如图7所示。
3.4、理论计算复杂度的变化
实验设置如下:SLaK模块有两个分支,分别为m×n卷积和一个n×n卷积的身份分支(m>n)。所有分支都是深度卷积分支。移位-wise模块使用Shift-wise运算符,结合了“ghost”和“rep”风格。它包括k组具有n×n内核大小的卷积,以及相应的移位操作。在这里,k是m/n的向上取整值。假设输入特征大小为B、C、H、W,分别表示批处理、通道、高度和宽度。
m ∗ n ∗ H ∗ W ∗ C ∗ B ∗ 2 + Rep ( n ∗ n ∗ H ∗ W ∗ C ∗ B + C B N ) C slak = ( 2 m + τ n ) ∗ n ∗ H ∗ W ∗ C ∗ B (4) \begin{array}{c} m * n * H * W * C * B * 2+\operatorname{Rep}\left(n * n * H * W * C * B+C_{B N}\right) \\ C_{\text {slak }}=\left(2 m+\tau_{n}\right) * n * H * W * C * B \end{array} \tag{4} m∗n∗H∗W∗C∗B∗2+Rep(n∗n∗H∗W∗C∗B+CBN)Cslak =(2m+τn)∗n∗H∗W∗C∗B(4)
对于SLaK的深度卷积计算复杂度,我们得到了如方程4所示的公式。前后的加号“+”表示大卷积核和小卷积核部分。对于合并层bn的情况,在本节中我们不考虑bn层的参数数量和计算复杂度。小卷积核部分在推理过程中可以通过Rep方法合并到两个大分支中,因此可以忽略掉。相应地,我们得出了SLaK的深度卷积参数数量,如方程5所示。
P slak = m ∗ n ∗ C ∗ 2 + Rep ( n ∗ n ∗ C ) (5) P_{\text {slak }}=m * n * C * 2+\operatorname{Rep}(n * n * C) \tag{5} Pslak =m∗n∗C∗2+Rep(n∗n∗C)(5)
移位-wise运算的计算复杂度由方程6给出。其中, k = ⌈ m / n ⌉ , H ′ 和 W ˙ ′ k=\lceil m / n \rceil,H^{\prime}和\dot{W}^{\prime} k=⌈m/n⌉,H′和W˙′是填充后的特征尺寸,它们将比原始尺寸大 p − n / 2 ( p ∈ [ n / 2 , n − 1 ] ) p-n/2(p∈[n/2, n-1]) p−n/2(p∈[n/2,n−1])。
n ∗ n ∗ H ˙ ∗ W ˙ ∗ k ∗ C ∗ B + add ( H ∗ W ∗ k ∗ C ∗ 2 ) C shift = ( k ∗ n ) ∗ n ∗ H ∗ W ∗ C ∗ B + δ (6) \begin{array}{c} n * n * \dot{H} * \dot{W} * k * C * B+\operatorname{add}(H * W * k * C * 2) \\ C_{\text {shift }}=(k * n) * n * H * W * C * B+\delta \end{array} \tag{6} n∗n∗H˙∗W˙∗k∗C∗B+add(H∗W∗k∗C∗2)Cshift =(k∗n)∗n∗H∗W∗C∗B+δ(6)
identity 分支从具有kC个通道的组卷积的输出中随机采样C个特征。两个大卷积核分支从组卷积的输出中重新排列特征。两个大卷积核分支将执行移位操作,然后进行特征添加。所有C个通道都进行相同的移位操作。加函数指定必要的移位和加法操作。加法操作的计算成本记为 δ \delta δ。我们注意到,移位-wise操作是一种稀疏组卷积类型。
P shift = n ∗ n ∗ k ∗ C (7) P_{\text {shift }}=n * n * k * C \tag{7} Pshift =n∗n∗k∗C(7)
Shift-wise操作的相应参数数量由方程7给出。SLaK和Shift-wise的计算复杂度比分别为 C s l a k C_{s l a k} Cslak和 C s h i f t C_{s h i f t} Cshift,如方程8所示。目前,忽略了 ( H ˙ , W ˙ ) (\dot{H}, \dot{W}) (H˙,W˙)和 ( H , W ) (H, W) (H,W)以及 δ \delta δ之间的差异。
r C = C slak / C shift = ( 2 m + τ n ) / ( k ∗ n ) ≈ 2 (8) r_{C}=C_{\text {slak }} / C_{\text {shift }}=\left(2 m+\tau_{n}\right) /(k * n) \approx 2 \tag{8} rC=Cslak /Cshift =(2m+τn)/(k∗n)≈2(8)
对于SLaK,4个阶段的m=[51,49,45,13]和n=5,具有比率[1.85,1.96,2.0,1.73,2.0]。考虑到( H ˙ , W ˙ ′ \dot{H}, \dot{W}^{\prime} H˙,W˙′)和( H , W H , W H,W ,以及 δ \delta δ)之间的差异,这个值会略有下降。然而,Shift-wise操作中的稀疏组卷积会显著增加它。我们计算了 P slak P_{\text{slak}} Pslak与 P shift P_{\text {shift}} Pshift的参数计数比,如公式9所示。与SLaK相比,Shift-wise操作的参数计数和计算复杂度都大约减半。
r P = P slak / P shift = ( 2 m ) / ( k ∗ n ) ≈ 2 (9) r_{P}=P_{\text {slak }} / P_{\text {shift }}=(2 m) /(k * n) \approx 2 \tag{9} rP=Pslak /Pshift =(2m)/(k∗n)≈2(9)
4、实验设置和结果分析
4.1、实验配置
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的4x4卷积。关于可实施的移位操作的可行方案,Lart等人总结了五种可行操作:切片索引、torch.roll、可变形卷积、深度卷积和网格采样F.grid_sample。这些操作计算量大。因此,我们使用taichi重写了相应的运算符。
4.2、在ImageNet-1K上的评估
ImageNet-1k是一个大型视觉数据库,用于视觉对象识别软件研究。它提供了超过一千个不同类别的图像,用于训练和测试各种图像识别算法。
如第3.1节所述,Shift-Wise操作可以完全等效于SLaK中使用的大的卷积核。这需要仔细设置填充和移位。我们将等效版本称为“equ-SLaK-T”。然后,对于没有稀疏组训练的SW模块和N=1的情况,我们使用填充=kernelsize-1,并将其标记为“p-SW”。对于填充=kernelsize/2,我们将其标记为“p2-SW”。表1详细列出了这些设置的精度。我们可以观察到,使用近一半的参数数量,Shift-wise操作的精度几乎与训练了120个周期的SLaK-T相同。我们发现填充=kernelsize-1比填充=kernelsize/2更好。我们将填充=kernelsize-1设置为默认值。
为了进一步分析稀疏的Shift-wise网络结构,我们展示了每个阶段第一层的稀疏性,如表2所示。显然,早期阶段的稀疏比更高。需要较少的组来实现大卷积核的效果。在后期阶段,稀疏比逐渐减少。剩余的有效组完全由数据驱动,显示出提高推理效率的巨大潜力。
为了保持计算效率并提高准确性,我们使用了shift-wise模块中介绍的多个分支。多个分支共享一个通用的稀疏掩码,以确保稀疏训练中的可重参数化。结果如表3所示。Shift-wise模块方法保持了表2中的稀疏性,并实现了比SLaK更高的准确性。
表4显示,与SLaK相比,shift-wise模块显著降低了卷积运算的计算复杂性。减少其使用可以增强整体计算吞吐量。
我们还测试了当单分支操作时,Shift-wise模块的时间消耗,如表5所示。结果表明,所提出的操作在特定稀疏度下减少了时间成本。由于SLaK使用双分支网络,而Shift-wise模块使用一半的卷积数,推理时间的减少更加显著。
5、结论
近年来,大规模视觉Transformer(ViT)取得了显著进展。同时,对卷积神经网络(CNN)的改进研究也取得了快速进展。本文提出的方法通过规则卷积实现了大核效果,更加硬件友好和软件高效。对于广泛的设备,我们的研究使CNN的最新进展得以应用,成本更低。我们不仅在优化效率方面取得了进步,还开始探索提高CNN性能的方法。创建空间稀疏依赖关系是一种有效的方法。建立的长期稀疏依赖关系由数据驱动,可以缓解手动设计可能引起的下游任务的迁移问题。提出的操作需要基本的数据读取过程,在多步骤融合领域还有进一步优化的潜力。同时,关于稀疏依赖结构的新发现的设计空间需要进一步研究。
这篇关于Shift-ConvNets:具有大核效应的小卷积核的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!