FasterNet:CVPR2023年最新的网络,基于部分卷积PConv,性能远超MobileNet,MobileVit


在这里插入图片描述

摘要

为了设计快速神经网络,许多工作都专注于减少浮点运算(FLOPs)的数量。然而,我们观察到这样的flop减少并不一定会导致类似水平的延迟减少。这主要源于低效的低浮点运算每秒(FLOPS)。为了实现更快的网络,我们重新考察了流行的运算符,并证明了这样低的FLOPS主要是由于运算符频繁的内存访问,特别是深度卷积。因此,我们提出了一种新的部分卷积(PConv),通过同时减少冗余计算和内存访问,更有效地提取空间特征。在PConv的基础上,我们进一步提出了fastternet,这是一种新的神经网络家族,它在各种设备上获得了比其他网络更高的运行速度,而不影响各种视觉任务的准确性。例如,在ImageNet- 1k上,我们的小型FasterNet-T0分别比GPU、CPU和ARM处理器上的MobileViT-XXS快3:1×、3:1×和2:5×,同时精度提高了2:9%。我们的大型fastnet - l达到了令人印象深刻的83:5%的top-1精度,与新兴的Swin-B相当,同时在GPU上具有49%的更高推断吞吐量,以及在CPU上节省42%的计算时间。代码可从https://github.com/JierunChen/FasterNet获得。

在这里插入图片描述

1、简介

神经网络在图像分类、检测和分割等各种计算机视觉任务中得到了快速发展。虽然它们令人印象深刻的性能支持了许多应用程序,但追求具有低延迟和高吞吐量的快速神经网络是一个蓬勃发展的趋势,以获得良好的用户体验、即时响应、安全原因等。

怎样才能更快?与要求更昂贵的计算设备相比,研究人员和从业者更喜欢设计具有成本效益的快速神经网络,降低计算复杂度,主要以浮点运算(FLOPs)的数量衡量。MobileNets [24, 25, 54], ShuffleNets[46, 84]和GhostNet[17]等利用深度卷积(DWConv)[55]和/或组卷积(GConv)[31]来提取空间特征。然而,在减少FLOPs的过程中,操作符经常会受到内存访问增加的副作用的影响。MicroNet[33]进一步分解和稀疏化网络,将其flop推到极低的水平。尽管在FLOPs上有所改进,但这种方法的分片计算效率很低。此外,上述网络通常伴有额外的数据操作,如拼接、洗牌和池化,这些操作的运行时间对小型模型来说往往很重要。

除了上述纯卷积神经网络(cnn)外,人们对使视觉transformer (vit)[12]和多层感知器(MLPs)架构[64]更小和更快的兴趣正在出现。例如,MobileViTs[48, 49, 70]和MobileFormer[6]通过将DWConv与改进的注意力机制相结合来降低计算复杂度。然而,他们仍然存在上述DWConv的问题,并且还需要专门的硬件支持修改后的注意力机制。使用高级但耗时的规范化和激活层也可能限制它们在设备上的速度。

所有这些问题共同导致了以下问题:这些“快速”的神经网络真的很快吗?为了回答这个问题,我们来看看延迟和FLOPs之间的关系

 Latency 

=

F

L

O

P

s

F

L

O

P

S

(1)

text { Latency }=frac{F L O P s}{F L O P S} text {, } tag{1}

 Latency =FLOPSFLOPs(1)

其中FLOPS是浮点运算每秒(floating-point operations per second)的缩写,用于衡量有效的计算速度。虽然有很多方法试图减少FLOPs,但很少考虑同时优化FLOPs以实现真正的低延迟。为了更好地理解这种情况,我们比较了典型神经网络在英特尔CPU上的flop。图2中的结果表明,许多现有的神经网络存在低FLOPS问题,它们的FLOPS通常低于流行的ResNet50。在如此低的flop情况下,这些“快”的神经网络实际上还不够快。FLOPs的减少不能准确地转化为延迟的减少。在某些情况下,没有任何改善,甚至会导致更糟糕的延迟。例如,CycleMLP-B1[5]的FLOPs是ResNet50[20]的一半,但运行更慢(即CycleMLPB1与ResNet50: 111.9ms与69.4ms)。请注意,FLOPs和延迟之间的这种差异在以前的工作[46,48]中也被注意到了,但仍未部分解决,因为他们采用了DWConv/GConv和各种具有低FLOPs的数据操作。人们认为没有更好的选择。
在这里插入图片描述

本文旨在通过开发一种简单而快速且有效的运算符来消除这种差异,该运算符可以用更少的运算符来维持较高的运算符。具体来说,在计算速度方面重新检查了现有的操作符,特别是DWConv。我们发现导致低FLOPS问题的主要原因是频繁的内存访问。本文提出一种新的部分卷积(PConv),作为一种有竞争力的替代方案,减少了计算冗余以及内存访问的数量。图1说明了我们的PConv的设计。它利用了特征图中的冗余,并系统地仅对部分输入通道应用常规卷积(Conv),而对其余通道保持不变。本质上,PConv比常规Conv具有更低的FLOPs,而比DWConv/GConv具有更高的FLOPs。换句话说,PConv更好地利用了设备上的计算能力。PConv在提取空间特征方面也很有效,本文后面的经验验证了这一点。

我们进一步介绍fastnet,它主要建立在我们的PConv之上,作为一个新的网络家族,在各种设备上高速运行。特别是,我们的fastnet实现了分类、检测和分割任务的最先进性能,同时具有更低的延迟和更高的吞吐量。例如,我们的小型fastnet - t0在GPU、CPU和ARM处理器上分别比MobileViT-XXS[48]快3:1×、3:1×和2:5×,而在ImageNet-1k上比MobileViT-XXS[48]快2:9%。我们的大型fastnet - l达到了83.5%的top-1精度,与新兴的Swin-B[41]不相上下,同时在GPU上提供了更高49%的吞吐量,并节省了42%的CPU计算时间。综上所述,我们的贡献如下:

  • 我们指出了实现更高的失败次数而不仅仅是为了更快的神经网络而减少失败次数的重要性。
  • 我们引入了一个简单但快速和有效的算子PConv,它有很大的潜力来取代现有的go-to - choice DWConv。
  • 我们引入了fastnet,它在各种设备上运行良好且普遍快速,如GPU、CPU和ARM处理器。
  • 我们对各种任务进行了广泛的实验,并验证了我们的PConv和fastnet的高速和有效性。

2、相关工作

我们简要回顾了之前关于快速和高效神经网络的工作,并将其与之区分开来。

CNN。cnn是计算机视觉领域的主流架构,尤其是在实际部署时,快速和准确同样重要。虽然已经有大量的研究[7,8,21,33,55,56,83,86]来实现更高的效率,但它们背后的原理或多或少是执行低秩近似。具体来说,群卷积[31]和深度可分离卷积 [55] (由深度卷积和逐点卷积组成)可能是最受欢迎的。它们已被广泛应用于移动/面向边缘的网络,如MobileNets [24,25,54], ShuffleNets [46,84], GhostNet [17], EfficientNets [61,62], TinyNet [18], Xception [8], CondenseNet [27,78], TVConv [4], MnasNet[60],和FBNet[74]。虽然它们利用滤波器中的冗余来减少参数和FLOPs的数量,但在增加网络宽度以补偿精度下降时,它们会受到内存访问增加的影响。相反,我们考虑了特征映射中的冗余,并提出了一种局部卷积来同时减少失败和内存访问。

ViT、MLP和变体。自从Dosovitskiy等人[12]将变压器的应用范围[69]从机器翻译[69]或预测[73]扩展到计算机视觉领域以来,人们对ViT的研究兴趣日益浓厚。后续的许多工作尝试在训练设置[58,65,66]和模型设计[15,40,41,72,85]方面改进ViT。一个显著的趋势是通过降低注意力算子的复杂性[1,29,45,63,68],将卷积纳入ViTs[6,10,57],或同时进行[3,34,49,52]来追求更好的准确度-潜伏期权衡。此外,还有一些研究[5,35,64]提出用简单的mlp算子代替注意力。然而,它们经常进化成类似cnn的[39]。在本文中,我们重点分析卷积运算,尤其是DWConv,原因如下:第一,注意力相对于卷积的优势不明确或存在争议[42,71]。其次,基于注意力的机制通常比卷积机制运行得慢,因此对当前行业不利[26,48]。最后,DWConv在许多混合模型中仍然是热门的选择,因此值得仔细研究。

3、PConv和fastnet的设计

在本节中,我们首先回顾DWConv并分析其频繁内存访问的问题。引入PConv作为一种有竞争力的替代算子来解决这个问题。之后,介绍FasterNet并解释其细节,包括设计注意事项。

3.1. 准备工作

DWConv是Conv的一个流行变体,已经被广泛采用为许多神经网络的关键构建模块。对于一个输入

I

R

c

×

h

×

w

mathbf{I} in mathbb{R}^{c times h times w}

IRc×h×w, DWConv应用c过滤器

W

R

k

×

k

mathbf{W} in mathbb{R}^{k times k}

WRk×k来计算输出

O

R

c

×

h

×

w

mathbf{O} in mathbb{R}^{c times h times w}

ORc×h×w。如图1(b)所示,每个滤波器在一个输入通道上空间滑动,并贡献于一个输出通道。这种深度计算使得DWConv的计算FLOPs次数低至

h

×

w

×

k

2

×

c

h times w times k^{2} times c

h×w×k2×c,而普通Conv的计算次数为

h

×

w

×

k

2

×

c

2

h times w times k^{2} times c^{2}

h×w×k2×c2。虽然DWConv可以有效地减少FLOPs,但它通常后面跟着逐点卷积(PWConv),不能简单地用于替换常规Conv,因为它会导致严重的精度下降。因此,在实际应用中,DWConv的通道数c(或网络宽度)被增加到

c

(

c

>

c

)

c^{prime}(c^{prime} > c )

c(c>c)以补偿精度下降,例如,在反向残差块[54]中,DWConv的宽度被扩大6倍。然而,这会导致更高的内存访问,导致不可忽视的延迟,并降低整体计算速度,特别是对于I/ o密集型设备。特别是,内存访问的次数现在上升到

h

×

w

×

2

c

+

k

2

×

c

h

×

w

×

2

c

,

(2)

h times w times 2 c^{prime}+k^{2} times c^{prime} approx h times w times 2 c^{prime}, tag{2}

h×w×2c+k2×ch×w×2c,(2)

这比常规的Conv要高,即

h

×

w

×

2

c

+

k

2

×

c

2

h

×

w

×

2

c

.

(3)

h times w times 2 c+k^{2} times c^{2} approx h times w times 2 c . tag{3}

h×w×2c+k2×c2h×w×2c.(3)

请注意,

h

×

w

×

2

c

h×w ×2c^{prime}

h×w×2c内存访问花费在I/O操作上,这已经被认为是最小成本,很难进一步优化。

3.2. 部分卷积作为基本算子

下面我们展示了可以通过利用特征图的冗余来进一步优化成本。如图3所示,不同通道之间的特征图具有高度的相似性。这种冗余也在许多其他工作中被涵盖[17,82],但很少有人以简单而有效的方式充分利用它。
在这里插入图片描述

具体来说,我们提出了一种简单的PConv来同时减少计算冗余和内存访问。图4的左下角说明了我们的PConv是如何工作的。它只是简单地对部分输入通道应用常规变换以进行空间特征提取,并保持其余通道不变。对于连续或常规的内存访问,我们认为第一个或最后一个连续cp通道是整个特征映射的代表,用于计算。在不损失通用性的情况下,我们认为输入和输出特征图具有相同的通道数。因此,PConv的FLOPs只是

h

×

w

×

k

2

×

c

p

2

(4)

h times w times k^{2} times c_{p}^{2} tag{4}

h×w×k2×cp2(4)

在典型的部分比

r

=

c

p

c

=

1

4

r=frac{c_{p}}{c}=frac{1}{4}

r=ccp=41时,PConv的FLOPs仅为普通Conv的

1

4

frac{1}{4}

41,且PConv具有较小的内存访问量,即:

h

×

w

×

2

c

p

+

k

2

×

c

p

2

h

×

w

×

2

c

p

,

(5)

h times w times 2 c_{p}+k^{2} times c_{p}^{2} approx h times w times 2 c_{p},tag{5}

h×w×2cp+k2×cp2h×w×2cp,(5)

这只是

1

4

frac{1}{4}

41的正则表达式,

r

=

1

4

r=frac{1}{4}

r=41

由于只有

c

p

c_{p}

cp通道用于空间特征提取,人们可能会问,我们是否可以简单地删除剩余的

(

c

c

p

)

left(c-c_{p}right)

(ccp)通道?如果是这样,PConv将降级为具有较少通道的常规Conv,这偏离了我们减少冗余的目标。请注意,我们保持其余通道不变,而不是从特征图中删除它们。这是因为它们对后续的PWConv层很有用,该层允许特征信息通过所有通道。
在这里插入图片描述
为了充分和有效地利用来自所有通道的信息,进一步在PConv中添加逐点卷积(PWConv)。它们在输入特征图上的有效感受野一起看起来像一个t形的Conv,与均匀处理patch的常规Conv相比,它更侧重于中心位置,如图5所示。为证明这种t型感受野的合理性,首先通过计算位置上的Frobenius范数来评估每个位置的重要性。我们假设,如果一个头寸的Frobenius范数比其他头寸更大,那么该头寸往往更重要。对于一个普通的Conv滤波器

F

R

k

2

×

c

mathbf{F} in mathbb{R}^{k^{2} times c}

FRk2×c,位置i处的Frobenius范数是由

F

i

=

j

=

1

c

f

i

j

2

left|mathbf{F} {i}right|=sqrt{sum_{j=1}^{c}left|f_{i j}right|^{2}}

Fi=j=1cfij2

计算的,对于

i

=

1

,

2

,

3

,

k

2

i=1,2,3 ldots, k^{2}

i=1,2,3,k2。我们认为显著位置是具有最大Frobenius范数的位置。然后,在预训练的ResNet18中集体检查每个滤波器,找出它们的显著位置,并绘制显著位置的直方图。从图6的结果可以看出,中心位置是滤波器中出现频率最高的显著位置。换句话说,中心位置比周围的邻居更重要。这与集中在中心位置的t型计算是一致的。
在这里插入图片描述

虽然t型卷积可以直接用于高效计算,但最好将t型卷积分解为PConv和PWConv,因为分解利用了滤波器间的冗余,进一步节省了计算量。对于相同的输入

I

R

c

×

h

×

w

mathbf{I} in mathbb{R}^{c times h times w}

IRc×h×w和输出

O

R

c

×

h

×

w

mathbf{O} in mathbb{R}^{c times h times w}

ORc×h×w, t型Conv的计算结果可以这样计算

h

×

w

×

(

k

2

×

c

p

×

c

+

c

×

(

c

c

p

)

)

,

(6)

h times w timesleft(k^{2} times c_{p} times c+c timesleft(c-c_{p}right)right), tag{6}

h×w×(k2×cp×c+c×(ccp)),(6)

这比PConv和PWConv的FLOPs要高,即:

h

×

w

×

(

k

2

×

c

p

2

+

c

×

c

p

)

,

(7)

h times w timesleft(k^{2} times c_{p}^{2}+c times c_{p}right), tag{7}

h×w×(k2×cp2+c×cp),(7)

c

>

c

p

c> c_ {p}

c>cp

c

c

p

>

c

p

c-c_{p}>c_{p}

ccp>cp(例如当

c

p

=

c

4

)

left.c_{p}=frac{c}{4}right)

cp=4c)。此外,我们可以轻松地利用常规转换进行两步实现。

在这里插入图片描述

3.4. FasterNet作为一般的主干网络

鉴于新的PConv和现成的PWConv作为主要的构建算子,本文进一步提出FasterNet,一种新的神经网络族,运行速度非常快,对许多视觉任务非常有效。我们的目标是保持架构尽可能简单,没有花哨的东西,使其对硬件友好。

我们在图4中展示了整体架构。它有四个层次阶段,每个阶段之前都有一个嵌入层(步长为4的正则变换4 × 4)或一个合并层(步长为2的正则变换2 × 2),用于空间下采样和通道数扩展。每个阶段都有一个FasterNet块的堆栈。我们观察到,最后两个阶段的块消耗的内存访问更少,并且往往具有更高的FLOPS,如表1所示。因此,我们放置了更多的FasterNet块,并相应地将更多的计算分配给最后两个阶段。每个FasterNet块都有一个PConv层,后面是两个PWConv(或Conv 1 × 1)层。它们一起表现为反向残差块,其中中间层具有扩展的通道数量,并放置了一个快捷连接以重用输入特征。

除了上述算子之外,规范化和激活层对于高性能神经网络也是不可或缺的。然而,许多之前的工作[17,20,54]在整个网络中过度使用这样的层,可能会限制特征多样性,从而损害性能。它还会降低整体计算速度。相比之下,只将它们放在每个中间PWConv之后,以保持特征多样性并实现更低的延迟。此外,我们使用批量归一化(BN)[30]而不是其他替代方法[2,67,75]。BN的好处是,它可以合并到相邻的转换层中,以更快的推理,同时与其他转换层一样有效。至于激活层,根据经验选择GELU[22]作为较小的FasterNet变体,选择ReLU[51]作为较大的FasterNet变体,同时考虑运行时间和有效性。最后的三层,即全局平均池化,Conv 1×1和全连接层,一起用于特征转换和分类。

为了在不同的计算预算下服务于广泛的应用,本文提供了小型、小型、中型和大型的FasterNet变体,分别称为FasterNet /1/2、FasterNet- s、FasterNet- m和FasterNet- l。它们共享相似的架构,但在深度和宽度上有所不同。附录中提供了详细的体系结构规范。

4、实验结果

我们首先研究我们的PConv的计算速度和它的有效性,当与PWConv结合。然后,我们综合评估我们的fastnet在分类、检测和分割任务中的性能。最后,我们进行了一项简短的消融研究。

为了对延迟和吞吐量进行基准测试,我们选择了以下三种典型的处理器,它们涵盖了广泛的计算能力:GPU (2080Ti)、CPU (Intel i9-9900X,使用单线程)和ARM (Cortex-A72,使用单线程)。我们报告了批大小为1的输入的延迟和批大小为32的输入的吞吐量。在推断过程中,只要适用,BN层都会合并到它们的相邻层。

4.1. PConv是快速的,但具有很高的FLOPS

下面我们展示了我们的PConv是快速的,更好地利用了设备上的计算能力。具体来说,我们将10层纯PConv叠加在一起,以典型维度的特征图作为输入。然后我们在GPU、CPU和ARM处理器上测量FLOPs和延迟/吞吐量,这也允许我们进一步计算FLOPs。我们对其他卷积变异体重复相同的过程并进行比较。

表1中的结果显示,对于高失败次数和低失败次数,PConv总体上是一个有吸引力的选择。它只有常规Conv的

1

16

frac{1}{16}

161 FLOPs,在GPU、CPU和ARM上分别比DWConv高14×、6.5×和22.7× FLOPs。我们不惊讶地看到,常规Conv有最高的失败,因为它已经不断地优化了多年。然而,它的总失败次数和延迟/吞吐量是无法承受的。尽管GConv和DWConv的失败次数显著减少,但失败次数也大幅减少。此外,它们倾向于增加通道的数量来补偿性能下降,然而,这增加了它们的延迟。

在这里插入图片描述

4.2. PConv与PWConv同时有效

接下来,我们展示了一个PConv后跟一个PWConv是有效的近似一个正则Conv来转换特征映射。为此,我们首先将ImageNet-1k val分割图像输入到预训练的ResNet50中,构建4个数据集,并在4个阶段中分别提取第1次Conv 3 × 3前后的特征图。每个特征图数据集被进一步划分为train (70%), val(10%)和test(20%)子集。然后,我们构建了一个由PConv和PWConv组成的简单网络,并在具有均方误差损失的特征地图数据集上训练它。为了比较,我们还在相同的设置下构建和训练了DWConv + PWConv和GConv + PWConv网络。
在这里插入图片描述

从表2可以看出,PConv + PWConv的测试损失最小,这意味着它们在特征变换中可以更好地逼近一个规则的Conv。研究结果还表明,仅从特征地图的一部分捕获空间特征是充分和有效的。PConv在设计快速有效的神经网络方面显示出巨大的潜力。

4.3. fastnet对ImageNet-1k分类

为了验证我们的fastnet的有效性和效率,我们首先在大规模的ImageNet-1k分类数据集[53]上进行实验。它涵盖了1k类的常见对象,包含约1.3M的标记图像用于训练和50k的标记图像用于验证。我们使用AdamW优化器[44]训练我们的模型300个时期。对于fastnet - m /L,我们将批量大小设置为2048,对于其他变异体,我们将批量大小设置为4096。我们使用峰值为0:001的余弦学习率调度器[43]·批大小=1024和20个周期的线性预热。我们应用常用的正则化和增强技术,包括权重衰减[32]、随机深度[28]、标签平滑[59]、Mixup[81]、Cutmix[80]和Rand增强[9],对不同的fastnet变异体具有不同的幅度。为了减少训练时间,我们对前280个训练周期使用192×192分辨率,其余20个周期使用224×224分辨率。为了公平的比较,我们没有使用知识蒸馏[23]和神经架构搜索[87]。我们报告了使用224 × 224分辨率和0.9作物比的中心作物在验证集上的top-1精度。详细的训练和验证设置见附录。
在这里插入图片描述

图7和表3展示了我们的fastnet相对于最先进的分类模型的优越性。图7中的权衡曲线清楚地表明,fastnet在平衡所有被检测网络的精度和延迟/吞吐量方面达到了最新的水平。从另一个角度来看,当具有相似的top-1精度时,fastnet在各种设备上运行的速度比各种CNN, ViT和MLP模型更快。如表3所示,fastnet - t0在GPU、CPU和ARM处理器上分别比MobileViT-XXS[48]快3:1×、3:1×和2:5×,同时比MobileViT-XXS[48]更精确2:9%。我们的大型fastnet - l实现了83.5%的top-1精度,与新兴的Swin-B[41]和ConvNeXt-B[42]相当,同时在GPU上有49%和39%的高推断吞吐量,以及节省42%和22%的CPU计算时间。鉴于如此有前景的结果,我们强调,我们的fastnet在架构设计方面比许多其他模型要简单得多,这表明了设计简单而强大的神经网络的可行性。
在这里插入图片描述

4.4. 下游任务的fastnet

为了进一步评估fastnet的泛化能力,我们在具有挑战性的COCO数据集[36]上进行了对象检测和实例分割的实验。作为一种惯例,我们使用ImageNet预训练的fastnet作为骨干,并配备流行的掩码R-CNN检测器[19]。为了突出骨干本身的有效性,我们只需遵循PoolFormer[79],并采用AdamW优化器,1×训练计划(12个周期),批大小为16,和其他训练设置,而无需进一步的超参数调优。

在这里插入图片描述

表4显示了fastnet与代表性模型的比较结果。fastnet通过具有更低的延迟和更高的平均精度(AP),始终优于ResNet和ResNext。具体来说,与标准基线ResNet50相比,fastnet节省了36%的计算时间,并产生了+1.9+1.9的框AP和+2.4+2.4的掩码AP。fastnet也对ViT变体具有竞争力。在类似的失败情况下,fastnet - l将PVT-Large的延迟减少了一半,即在GPU上从152毫秒减少到74毫秒,并实现+1.1+1.1更高的框AP和+0.4+0.4更高的mask AP。

4.5、消融实现

我们对部分比值r的值以及激活层和归一化层的选择进行了简单的消融研究。我们在ImageNet top-1准确性和设备上的延迟/吞吐量方面比较了不同的变体。结果汇总于表5中。对于部分比率r,我们默认为所有fastnet变体将其设置为

1

4

frac{1}{4}

41 ,这在类似的复杂性下实现了更高的准确性、更高的吞吐量和更低的延迟。过大的偏比r会使PConv退化为常规的Conv,而过小的偏比r会使PConv对空间特征的捕获效果降低。对于规范化层,我们选择BatchNorm而不是LayerNorm,因为BatchNorm可以合并到其相邻的卷积层中,从而更快地进行推断,而在我们的实验中,BatchNorm与LayerNorm一样有效。对于激活函数,我们经验地发现GELU比ReLU更适合fastnet - t0 /T1模型。然而,fastnett2 /S/M/L则相反。由于篇幅的限制,我们在表5中只展示了两个示例。我们推测,GELU通过具有较高的非线性来增强fastnet - t0 /T1,而对于较大的fastnet变体,这种优势逐渐消失。
在这里插入图片描述

5、结论

在本文中,我们研究了许多已建立的神经网络遭受每秒低浮点运算(FLOPS)这一常见且尚未解决的问题。我们回顾了一个瓶颈运算符,DWConv,并分析了它导致减速的主要原因——频繁的内存访问。为了克服这一问题并实现更快的神经网络,我们提出了一种简单而快速有效的算子PConv,它可以很容易地插入到许多现有的网络中。我们进一步介绍了我们的通用fastnet,建立在我们的PConv之上,在各种设备和视觉任务上实现了最先进的速度和精度权衡。我们希望我们的PConv和fastnet将激发更多关于简单而有效的神经网络的研究,超越学术界,直接影响行业和社区。

附录

在本附录中,我们提供了关于实验设置、完整的比较图、架构配置、PConv实现、与相关工作的比较、局限性和未来工作的进一步细节。

A. ImageNet-1k实验设置

我们在表6中提供了ImageNet-1k训练和评估设置。它们可以用于再现我们在表3和图7中的主要结果。不同的fastnet变体在正则化和增强技术的大小上有所不同。幅度随模型增大而增大,以缓解过拟合,提高精度。需要注意的是,在表3和图7的比较作品中,MobileViT、EdgeNext、PVT、CycleMLP、ConvNeXt、Swin等大部分也采用了这种先进的训练技术(ADT)。有些甚至严重依赖超参数搜索。对于其他无ADT的,如ShuffleNetV2, MobileNetV2, GhostNet,虽然比较不完全公平,但我们纳入它们作为参考。
在这里插入图片描述

B.下游任务实验设置

对于COCO2017数据集上的对象检测和实例分割,我们为我们的fastnet骨干配备了流行的Mask R-CNN检测器。我们使用ImageNet-1k预训练权重初始化骨干和Xavier初始化附加层。详细设置见表7。
在这里插入图片描述

C. ImageNet-1k上的完整比较图

图8为ImageNet-1k上的完整对比图,这是本文中图7的扩展,延迟范围更大。图8显示了一致的结果,在GPU、CPU和ARM处理器上,fastnet在平衡精度和延迟/吞吐量方面比其他算法做了更好的权衡。

D.详细的架构配置

我们在表8中给出了详细的架构配置。虽然不同的fastnet变体共享一个统一的体系结构,但它们在网络宽度(通道的数量)和网络深度(每个阶段的fastnet块的数量)方面有所不同。体系结构末尾的分类器用于分类任务,但在其他下游任务中被删除。
在这里插入图片描述

在这里插入图片描述

E. PConv的实现

我们在清单1中提供了基于pytorch的PConv实现。有两种向前传球选择,即向前切片和向前分猫。前向切片选择写入卷积输出来代替输入,这是用于更快的推断,但不是用于训练,因为就地操作修改梯度计算。相比之下,前向分割猫选择将卷积输出与不变的特征映射连接起来,这保留了中间梯度计算,并用于训练。表9显示了这两个选择在推理过程中的速度比较。前向切片实现比另一种运行更快,特别是对于小型模型和更强大的计算设备,例如GPU上的fastnet - t0。
在这里插入图片描述

在这里插入图片描述

F.更多与相关工作的比较

提高FLOPS。还有一些其他的作品[11,76]也在研究FLOPS的问题,并试图改进它。它们通常遵循现有的操作符,并试图找到它们合适的配置,例如,RepLKNet[11]只是增加内核大小,而TRT-ViT[76]则在体系结构中对不同的块进行重新排序。相比之下,本文提出了一种新颖高效的PConv,为FLOPS的改进开辟了新的方向和潜在的更大空间。

PConv与GConv。PConv在原理上相当于一个修改的GConv[31],它只作用于一个组,而不影响其他组。虽然很简单,但这种改变在以前还没有被探索过。它还可以防止操作符对内存的过度访问,并且在计算上更加高效。从低秩近似的角度来看,PConv通过进一步降低滤波器内部冗余度来改进GConv,而不局限于滤波器间冗余[16]。

fastnet vs. ConvNeXt。在用PConv替换DWConv后,我们的fastnet看起来类似于ConvNeXt[42]。然而,他们的动机是不同的。当ConvNeXt通过试错寻找更好的结构时,我们在PConv之后附加PWConv以更好地聚合来自所有信道的信息。此外,ConvNeXt遵循ViT,使用更少的激活函数,而我们有意地从PConv和PWConv的中间去掉它们,以减少它们在逼近常规Conv时的误差。

有效推理的其他范例。我们的工作重点是高效的网络设计,与其他范式正交,如神经架构搜索[13],网络修剪[50]和知识蒸馏[23]。它们可以在本文中得到更好的应用。然而,我们选择不这样做,以保持我们的核心思想为中心,并使成绩获得明确和公平。

其他的部分/掩模卷积也可以。有几个作品[14,37,38]与我们的PConv有相似的名字。然而,它们在目标和方法上有很大的不同。例如,他们在部分像素上应用过滤器以排除无效斑块[38],实现自我监督学习[14],或合成新图像[37],而我们的目标是通道维度,以实现高效推断。

G.局限性和未来工作

我们已经证明了PConv和fastnet与现有的操作和网络竞争是快速和有效的。然而,本文有一些次要的技术限制。首先,PConv设计为只对部分输入通道进行正则卷积,而对其余通道保持不变。因此,偏卷积的步幅应始终为1,以使卷积输出的空间分辨率与未触及通道的空间分辨率对齐。注意,对空间分辨率进行下采样仍然是可行的,因为在架构中可能会有额外的下采样层。其次,虽然我们提供了PConv前向传递的两种实现,但我们认为它们不一定是最优的。可能会有更高效、运行速度更快的实现,例如,使用channel-last张量格式、自定义c++和CUDA扩展。最后,我们的fastnet简单地建立在卷积算子的基础上,其接受域可能有限。未来可努力扩大其接受域,并与其他操作相结合,以追求更高的精度。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>