Run, Don’t Walk: Chasing Higher FLOPS for Faster Neural Networks

摘要

为了设计快速神经网络,许多工作都集中在减少浮点运算的数量上。然而,我们观察到这种FLOPs的减少并不一定会导致类似程度的延迟减少。这主要是由于每秒的浮点运算效率很低(FLOPS)。为了实现更快的网络,我们回顾了一些主流的卷积运算符,并证明如此低的FLOPS主要是由于卷积运算符频繁的内存访问,特别是深度卷积。因此,我们提出了一种新的局部卷积(PConv),通过同时减少冗余计算和内存访问,从而更有效地提取空间特征。在我们的PConv基础上,我们进一步提出了FasterNet,一种新的神经网络家族,它在广泛的设备上获得比其他网络更高的运行速度,而不影响各种视觉任务的准确性。例如,在ImageNet1k上,我们的微型FasterNet-T0在GPU、CPU和ARM处理器上分别比MobileViT-XXS快2.8×、3.3×和2.4×,同时精度提高了2.9%。我们的大型fastnet - l达到了令人印象深刻的83.5%的top-1精度,与新兴的swi - b相当,同时在GPU上有36%更高的推理吞吐量,以及在CPU上节省37%的计算时间。代码可以在https://github.com/JierunChen/FasterNet上找到。

1.介绍

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

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

除了上述的纯卷积神经网络(CNNs)外,人们对使视觉变压器(vit)[12]和多层感知器(MLPs)架构[64]更小、更快的兴趣也越来越浓厚。例如,MobileViTs[48, 49, 70]和MobileFormer[6]通过将DWConv与一种改进的注意机制相结合来降低计算复杂度。然而,它们仍然受到上述DWConv问题的困扰,还需要对修改后的注意机制提供专门的硬件支持。使用高级的、耗时的、非程序化和激活层也可能限制它们在设备上的速度。

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

Latency=\dfrac{FLOPs}{FLOPS},\qquad(1)

FLOPS是每秒浮点运算的缩写,用来衡量有效的计算速度。虽然有许多减少FLOPs的尝试,但他们很少考虑同时优化FLOPs以实现真正的低延迟。为了更好地理解这种情况,我们比较了典型神经网络在Intel CPU上的FLOPS。图2的结果显示,现有的许多神经网络的FLOPS都很低,它们的FLOPS普遍低于流行的ResNet50。尽管FLOPs如此低,这些“快速”神经网络实际上还不够快。他们在FLOPs上的减少不能转化为延迟的实际减少量。在某些情况下,甚至没有任何改进,导致更糟糕的延迟。例如,CycleMLP-B1[5]的FLOPs是ResNet50[20]的一半,但运行速度更慢(即CycleMLPB1 vs. ResNet50: 116.1ms vs. 73.0ms)。请注意,FLOPs和延迟之间的差异在之前的作品中也已经被注意到[46,48],但仍然没有得到部分解决,因为他们使用了DWConv/GConv和各种低FLOPs的数据操作。人们认为没有更好的选择。

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

我们进一步介绍了FasterNet,,它主要是建立在我们的PConv上,作为一个新的系列的网络,在各种设备上高速运行。特别是,我们的FasterNet,在分类、检测和分割任务方面达到了最先进的性能,同时具有更低的延迟和更高的吞吐量。例如,我们的微型FasterNet-T0在GPU、CPU和ARM处理器上分别比MobileViT-XXS[48]快2.8×、3.3×和2.4×,而在ImageNet-1k上的精度则比MobileViT-XXS[48]高2.9%。我们的大型fastnet - l达到了83.5%的top-1精度,与新兴的swi - b[41]相当,同时在GPU上提供了36%的更高吞吐量,在CPU上节省了37%的计算时间。综上所述,我们的贡献如下:

•我们指出,对于更快的神经网络,实现更高的FLOPS的重要性,而不仅仅是减少FLOPs。

•我们引入了一种简单但快速有效的卷积运算符PConv,它有很大的潜力取代现有的首选卷积运算符DWConv。

•我们引入了FasterNet,它在各种设备上(如GPU, CPU和ARM处理器)运行良好,普遍较快。

•我们对各种任务进行了广泛的实验,并验证了PConv和FasterNet的高速和有效性。

2.相关工作

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

CNN.

CNN是计算机视觉领域的主流架构,特别是在实际部署时,速度和准确性同样重要。虽然已经有很多研究[7,8,21,33,55,56,83,86]来实现更高的效率,但它们背后的基本原理或多或少是为了执行低秩近似。具体来说,组卷积[31]和深度可分离卷积[55](由深度卷积和点卷积组成)可能是最流行的卷积。它们已被广泛应用于移动/边缘网络,如mobilenet [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的数量,但在增加网络宽度以弥补准确性下降时,它们会受到内存访问增加的影响。相比之下,我们考虑了特征映射中的冗余,并提出了部分卷积来同时减少FLOPs和内存访问。

ViT, MLP和相关变体

自Dosovitskiy等人[12]将ViT的应用范围[69]从机器翻译[69]或预测[73]扩展到计算机视觉领域以来,人们对ViT的研究兴趣日益浓厚。许多后续的工作从训练设置[58,65,66]和模型设计[15,40,41,72,85]方面尝试改进ViT。一个值得注意的趋势是,通过降低注意力算子的复杂性[1,29,45,63,68],将卷积纳入vit[6,10,57],或两者兼顾[3,34,49,52],来寻求更好的准确性-延迟的权衡。此外,其他研究[5,35,64]提出用简单的基于mlp的算子代替注意力机制。然而,他们经常演变成像CNN一样的[39]。在本文中,我们重点分析了卷积运算符,特别是DWConv,原因如下:第一,注意力相对于卷积的优势尚不清楚或存在争议[42,71]。其次,基于注意力的机制通常比卷积机制运行缓慢,因此对当前行业不利[26,48]。最后,DWConv在许多混合模型中仍然是一个流行的选择,因此值得仔细研究。

3.PConv和FasterNet的设计

在本节中,我们首先回顾DWConv,并分析其频繁访问内存的问题。然后我们引入PConv作为一种竞争性的替代卷积运算符来解决这个问题。然后,我们介绍FasterNet并解释它的细节,包括设计考虑。

3.1.准备工作

DWConv是Conv的一种流行变体,已被广泛采用为许多神经网络的关键构件。对于输入\tilde{\mathbf{I}}\in\mathbb{R}^{c\times{h}\times w}, DWConv应用c个滤波器大小{\textbf{W}}\in\mathbb{R}^{k\times k}来计算输出\mathbf{O}\in\mathbb{R}^{c\times h\times w}.如图1(b)所示,每个滤波器在一个输入通道上进行空间滑动,并对一个输出通道作出贡献。与具有h\times w\times k^2 \times c^2的常规Conv相比,这种深度计算使得DWConv具有低到h\times w\times k^2 \times c的FLOPs。虽然可以有效地减少FLOPs,但DWConv(通常后面又逐点卷积或PWConv)不能简单地用来取代常规Conv,因为它会导致准确性严重的下降。因此,在实践中,DWConv的通道数c(或网络宽度)增加到c ' (c ' > c),以弥补精度下降,例如,在反向残差块[54]中,DWConv的宽度扩大了6倍。然而,这将导致更高的内存访问,从而导致不可忽视的延迟并降低整体计算速度,特别是对于I/O绑定设备。特别的,内存访问的数量现在增加到

h\times w\times2c'+k^2\times c'\approx h\times w\times2c',\qquad(2)

比一般的Conv要高,一般Conv内存访问的数量为

h\times w\times2c+k^2\times c^2\approx h\times w\times2c.\qquad(3)

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

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

下面我们证明了可以通过利用特征映射的冗余来进一步优化成本。如图3所示,不同通道之间的特征图具有较高的相似性。这种冗余也在许多其他著作中得到了论述[17,82],但很少有人能以简单而有效的方式充分利用它。

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

h\times w\times k^2\times c_p^2.\qquad(4)

在典型的部分比率r=\frac{c_p}{c}=\frac{1}{4}时,PConv的FLOPs仅为常规Conv的\frac{1}{16}。此外,PConv具有更小的内存访问量,即

h\times w\times2c_p+k^2\times c_p^2\approx h\times w\times2c_p,\qquad(5)

当r =\frac{1}{4}时,PConv的内存访问量只是常规Conv的\frac{1}{4}

由于只有c_p通道用于空间特征提取,有人可能会问,我们是否可以简单地删除剩余的(c−c_p)通道?如果是这样,PConv将降级为具有更少通道的常规Conv,这就偏离了我们减少冗余的目标。请注意,我们将保留剩余的通道,而不是将它们从特性图中移除。这是因为它们对于后续的PWConv层非常有用,PWConv层允许特征信息流经所有通道。

图4.FasterNet.的整体架构。它有四个层次阶段,每个阶段都有一个FasterNet块,在FasterNet块之前有一个嵌入或合并层。最后三层用于特征分类。在每个FasterNet块中,一个PConv层后面跟着两个PWConv层。为了保持特征的多样性,降低延迟,我们将归一化层和激活层放在中间层之后。

3.3.在PConv后使用PWConv

为了充分和有效地利用来自所有通道的信息,我们进一步在PConv上附加了一个逐点卷积(PWConv)。它们在输入特征图上的有效感受野看起来像一个T形的Conv,与统一处理patch的常规Conv相比,T形Conv更关注于中心位置,如图5所示。为了证明这个T形的感受野,我们首先通过计算位置上的Frobenius范数来评估每个位置的重要性。如果一个位置有更大的Frobenius范数,我们认为该位置比其他位置更重要。对于正则Conv滤波器\mathbf{F}\in\mathbb{R}^{k^{2}\times c},第i位的Frobenius范数由\|\mathbf{F}_{i}\|=\sqrt{\sum_{j=1}^{c}|f_{ij}|^{2}}计算得到,其中i = 1,2,3,…k^2。我们认为显著位置是具有最大Frobenius范数的位置。然后,我们在一个预先训练的ResNet18中集体检查每个过滤器,找出它们的显著位置,并绘制显著位置的直方图。图6的结果表明,中心位置是滤波器中最常见的显著位置。换句话说,中心位置比它周围的区域更重要。这与集中在中心位置的T形计算是一致的。

图6。预训练ResNet18常规Conv 3 × 3滤波器的显著位置分布直方图。直方图包含四种柱状图,对应于网络中的不同阶段。在所有阶段中,中心位置(位置5)作为突出位置出现的频率最高。

虽然T形Conv可以直接用于高效计算,但我们表明,将T形Conv分解为PConv和PWConv会更好,因为这种分解利用了滤波器间的冗余,并进一步节省了FLOPs。对于相同的输入\mathbf{I}\in\mathbb{R}^{c\times h\times{w}},输出\mathbf{O}\in\mathbb{R}^{c\times h\times\tilde{w}}, T型Conv的FLOPs可计算为

h\times w\times\left(k^2\times c_p\times c+c\times(c-c_p)\right),\qquad(6)

k表示PConv卷积核大小,c_p\times c表示T形Conv中PConv部分的输出通道数×输入通道数,c\times (c-c_p)表示T形Conv中PWConv部分的输出通道数×输入通道数(输入通道数为除c_p以外的剩余通道),PWConv的卷积核大小为1

比PConv和PWConv的FLOPs高,即

h\times w\times(k^{2}\times c_{p}^{2}+c^{2}),\qquad(7)

c_p^2表示在PConv中输入通道数和输出通道数都为c_pc^2表示在PWConv中输入通道数和输出通道数都为c

其中(k^2-1)c>k^2c_p,例如当c_p = \frac{1}{4}, k = 3。此外,我们可以很容易地利用常规的Conv进行两步实现。

3.4.FasterNet作为通用骨干

鉴于我们的新型PConv和现成的PWConv是主要的架构卷积运算符,我们进一步提出了FasterNet,这是一种新的神经网络,运行速度非常快,对许多视觉任务非常有效。我们的目标是使架构尽可能简单,不带任何花哨的东西,使其总体上对硬件友好。

我们在图4中展示了整个架构。它有四个层次阶段,每个阶段之前都有一个嵌入层(一个规则的大小为 4 × 4的Conv,步长为4)或一个合并层(一个规则的大小为2 × 2的Conv ,步长为2),用于空间下采样和通道数扩展。每个阶段都有一堆FasterNet块。我们观察到,在最后两个阶段的块消耗更少的内存访问,往往有更高的FLOPS,如表1中的经验验证。因此,我们放置了更多的FasterNet块,并相应地将更多的计算分配到最后两个阶段。每个FasterNet块有一个PConv层,后面跟着两个PWConv(或Conv 1 × 1)层。它们一起显示为倒残余块,其中中间层有更多的通道,并放置了一个快捷连接来重用输入特征。

残差块:由3×3逐深度卷积、1×1逐点卷积(用于降维)构成,沙漏形 或者说是梭子形,两头粗,中间细;

倒残差块:由1×1逐点卷积(升维)、3×3逐深度卷积、1×1逐点卷积(降维)构成,柳叶形或者说是纺锤形,中间粗,两头细。

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

为了在不同的计算预算下为广泛的应用提供服务,我们提供了微型、小型、中型和大型的FasterNet变体,分别称为FasterNetT0/1/2、FasterNet- S、FasterNet- M和FasterNet- L。它们的结构相似,但深度和宽度不同。详细的体系结构规范在附录中提供。

4.实验结果

我们首先检查我们的PConv的计算速度和它与PWConv结合时的有效性。然后我们综合评估我们的FasterNet在分类、检测和分割任务方面的性能。最后,我们进行了一个简要的消融研究。

为了对延迟和吞吐量进行基准测试,我们选择了以下三种典型处理器,它们涵盖了广泛的计算能力: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的结果显示,对于FLOPS高而FLOPs少的情况,PConv总体上是一个有选择性的选择。相比于常规Conv,PConv只有1/16次FLOPs,在GPU、CPU和ARM上分别比DWConv高10.5×、6.2×和22.8× FLOPS。我们毫不惊讶地看到,常规的Conv拥有最高的FLOPS,因为它已经不断优化了多年。然而,它的总FLOPs和延迟/吞吐量是无法承担的。尽管GConv和DWConv的FLOPs显著减少,但它们的FLOPS却急剧下降。此外,他们倾向于增加通道的数量来弥补性能下降,然而,这会增加延迟。

4.2.PConv和PWConv是有效的

我们接下来展示PConv后面跟着PWConv是有效地逼近一个标准Conv来转换特征图。为此,我们首先构建四个数据集,将ImageNet-1k val分割图像输入到一个预先训练的ResNet50中,并在四个阶段中分别提取第一个Conv 3 × 3前后的特征图。每个特征图数据集被进一步划分为训练(70%)、验证(10%)和测试(20%)子集。然后,我们构建一个由PConv和PWConv组成的简单网络,并以均方误差作为损失函数进行训练。为了比较,我们还建立了相同设置下的DWConv + PWConv和GConv + PWConv网络并进行了训练。

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

4.3.在ImageNet-1k分类数据集上使用FasterNet

为了验证我们的FasterNet的有效性和效率,我们首先在大规模的ImageNet-1k分类数据集[53]上进行实验。它涵盖了1k种常见的对象,包含约1.3M的带标签的图像用于训练和50k带标签的图像用于验证。我们使用300个epoch训练我们的模型,并且使用AdamW优化器[44]。我们将FasterNet-M/L的批量大小设置为2048,其他变体的批量大小为4096。使用峰值为0.001·(batch size/1024)的余弦学习速率调度器[43]和20个epoch的线性预热。我们应用了常用的正则化和增强技术,包括权值衰减[32]、随机深度[28]、标签平滑[59]、Mixup[81]、Cutmix[80]和Rand Augment[9],对于不同的FasterNet变体具有不同的幅度。为了减少训练时间,我们在前280个训练阶段使用192×192分辨率,在剩下的20个训练阶段使用224×224分辨率。为了便于比较,我们没有使用知识蒸馏[23]和神经结构搜索[87]。我们报告了我们在验证集上的最高精度,中心裁剪224 × 224分辨率和0.9的裁剪比。附录中提供了详细的训练和验证设置。

图7和表3显示了我们的FasterNet相对于最先进的分类模型的优越性。图7中的权衡曲线清楚地表明,在所有被检测的网络中,FasterNet在平衡准确性和延迟/吞吐量方面设置了最新的技术水平。从另一个角度来看,FasterNet比各种CNN、ViT和MLP模型在各种设备上运行得更快,拥有类似的top-1准确度。如表3所示,在GPU、CPU和ARM处理器上,FasterNet- T0分别比MobileViT-XXS[48]快2.8×、3.3×和2.4×,同时精度高2.9%。我们的大型FasterNet-L达到了83.5%的top-1精度,可与新兴的Swin-B[41]和ConvNeXt-B[42]相媲美,同时在GPU上的推理吞吐量提高了36%和28%,在CPU上节省了37%和15%的计算时间。鉴于如此有前景的结果,我们强调,在架构设计方面,我们的FasterNet比许多其他模型简单得多,这表明了设计简单而强大的神经网络的可行性。

图7。FasterNet在平衡不同设备的准确性-吞吐量和准确性-延迟方面具有最高的效率。为了节省空间并使图更匀称,我们展示了一定延迟范围内的网络变体。在附录中可以找到完整的图表,结果一致。

表3。ImageNet-1k基准比较。具有相似的top-1精度的模型被分组在一起。对于每个组,我们的FasterNet在GPU上实现了最高的吞吐量,在CPU和ARM上实现了最低的延迟。除MobileViT和EdgeNeXt的256 × 256之外,所有模型都在224×224分辨率进行评估。OOM是out of memory的缩写。

4.4.下游任务上的FasterNet

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

表4显示了FasterNet与代表性模型的对比结果。FasterNet比ResNet和ResNext有更高的平均精度(AP)和相似的延迟。具体来说,与标准基线ResNet50相比,FasterNet获得了更高的1.9个boxAP和更高的2.4个maskAP。FasterNet和ViT变体相比也有竞争力。在类似的FLOPs下,FasterNet- L将PVT-Large的延迟降低了38%,即在GPU上从152.2 ms减少到93.8 ms,并实现了+1.1更高的boxAP和+0.4更高的maskAP。

4.5.消融研究

我们对部分比率r的取值以及激活层和归一化层的选择进行了简要的消融研究。我们比较了ImageNet的top-1准确性和设备上的延迟/吞吐量的不同变体。结果如表5所示。对于部分比率r,我们在默认情况下将所有FasterNet变种的部分比率r设置为1/4,这样可以在相似的复杂性下实现更高的准确性、更高的吞吐量和更低的延迟。过大的部分比率r将使PConv退化为一个常规的Conv,而太小的值将使PConv在捕捉空间特征方面效率降低。对于归一化层,我们选择BatchNorm而不是LayerNorm,因为BatchNorm可以合并到相邻的卷积层中以实现更快的推理,而在我们的实验中,它与LayerNorm一样有效。对于激活函数,有趣的是,我们的经验发现GELU比ReLU更适合FasterNet-T0/T1模型。然而,对于FasterNet-T2/S/M/L来说,这是相反的。由于篇幅限制,在这里我们只展示了表5中的两个示例。我们推测GELU通过具有更高的非线性来增强FasterNet-T0/T1模型,而对于更大的FasterNet变体,这种优势会逐渐消失。

5. 结论

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

附录

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

A. ImageNet-1k实验设置

我们在表6中提供了ImageNet-1k训练和评估的设置。它们可以用来复现表3和图7中的主要结果。不同的FasterNet变体在正则化和增强技术的程度上有所不同。当模型变大时,数量级增加,以缓解过拟合和提高精度。请注意,表3和图7中的大部分比较作品,如MobileViT、EdgeNext、PVT、CycleMLP、ConvNeXt、Swin等,也采用了这种高级训练技术(ADT)。有些甚至严重依赖超参数搜索。对于其他没有ADT的,例如ShuffleNetV2、MobileNetV2和GhostNet,虽然比较并不完全公平,但我们包括它们作为参考。

B.下游任务实验设置

对于COCO2017数据集上的对象检测和实例分割,我们用流行的Mask R-CNN检测器作为我们的FasterNet主干。我们使用ImageNet-1k预先训练的权值来初始化骨干,使用Xavier来初始化附加层。详细的设置汇总在表7中。

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

图8为ImageNet-1k上的完整对比图,是对主文中图7的扩展,有更大范围的延迟。在GPU、CPU和ARM处理器上,图8显示了一致的结果,即FasterNet在平衡精度和延迟/吞吐量方面比其他模型表现得更好。

D.详细的结构设置

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

表8。不同的FasterNet变体配置。“Conv_k_c_s”表示卷积核大小为k,输出通道为c,步幅为s的卷积层。“PConv_k_c_s_r”表示带有额外参数的部分卷积,即r为卷积处理的通道数和总的通道数的比。“FC_1000”表示带有1000个输出通道的全连接层。h×w为输入大小,bi为第i阶段的FasterNet块数。FLOPs为输入大小为224 × 224计算得到。

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

提高FLOPS

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

PConv与GConv比较

PConv大致相当于修改后的GConv[31],它只对单个组进行卷积,而不处理其他组。虽然很简单,但这种修改以前从未被探索过。同样重要的是,它可以防止卷积运算符过度访问内存,并且计算效率更高。从低秩近似的角度来看,PConv通过进一步降低除滤波器内部的冗余[16]来改进GConv。

FasterNet与ConvNeXt比较

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

其他有效推理的范例

有几个作品[14,37,38]与我们的PConv有着相似的名字。但两者在目标和方法上存在很大差异。例如,在部分像素上使用过滤器排除无效的patch[38],通过自我监督学习[14],合成新的图像[37],而我们以通道维数为目标进行有效推理。

F.局限性和未来工作

与现有的卷积运算符和网络模型竞争,我们已经证明PConv和FasterNet是快速和有效的。然而,这篇论文有一些小的技术限制。首先,PConv被设计为只对一部分输入通道应用常规的卷积,而对其余的通道保持不变。因此,为了使卷积输出的空间分辨率与未处理的通道的空间分辨率保持一致,对部分通道处理的卷积核的步幅应该始终为1。注意,对空间分辨率进行下采样仍然是可行的,因为在结构中可以有额外的下采样层。另一方面,我们的FasterNet只是建立在卷积运算符的基础上,其感受野可能是有限的。今后可以进一步扩大其感受野,并与其他操作结合,追求更高的精度。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值