ShuffleNet V2:高效卷积神经网络架构设计的实用指南
摘要
https://arxiv.org/pdf/1807.11164
当前,神经网络架构设计大多以计算复杂度的间接指标,即浮点运算数(FLOPs)为指导。然而,直接指标(例如速度)还取决于其他因素,如内存访问成本和平台特性。因此,本文提出在目标平台上评估直接指标,而不仅仅是考虑FLOPs。基于一系列对照实验,本文得出了一些高效网络设计的实用指南。据此,提出了一种新的架构,称为ShuffleNet V2。全面的消融实验验证了我们的模型在速度和准确性的权衡方面达到了最先进的水平。
关键词:卷积神经网络(CNN)架构设计,效率,实用
1 引言
深度卷积神经网络(CNN)的架构多年来不断演进,变得更加准确和快速。自AlexNet [1]这一里程碑性工作以来,ImageNet分类准确性通过新型结构(包括VGG [2]、GoogLeNet [3]、ResNet [4,5]、DenseNet [6]、ResNeXt [7]、SE-Net [8]和自动神经网络架构搜索 [9,10,11]等)得到了显著提升。
除了准确性之外,计算复杂度是另一个重要考虑因素。现实世界中的任务通常旨在在目标平台(例如硬件)和应用场景(例如自动驾驶需要低延迟)提供的有限计算预算下获得最佳准确性。这促使了一系列工作朝着轻量级架构设计以及更好的速度和准确性权衡方向发展,包括Xception [12]、MobileNet [13]、MobileNet V2 [14]、ShuffleNet [15]和CondenseNet [16]等。在这些工作中,组卷积和深度卷积至关重要。
为了衡量计算复杂度,一个广泛使用的指标是浮点运算数(FLOPs){ }^{1} 。然而,FLOPs是一个间接指标。它是我们真正关心的直接指标(如速度或延迟)的近似值,但通常并不等价。这种差异已在先前的工作 [17,18,14,19] 中被注意到。例如,MobileNet v2 [14]比NASNET-A [9]快得多,但它们的FLOPs相当。这一现象在图1©(d)中得到了进一步例证,该图显示具有相似FLOPs的网络具有不同的速度。因此,将FLOPs作为计算复杂度的唯一指标是不够的,可能导致次优设计。
间接指标(FLOPs)和直接指标(速度)之间的差异可以归因于两个主要原因。首先,FLOPs没有考虑一些对速度有很大影响的重要因素。其中一个因素是内存访问成本(MAC)。这种成本在某些操作(如组卷积)的运行时中占很大比例。它可能是在具有强大计算能力的设备(例如GPU)上的瓶颈。在网络架构设计期间不应简单忽略此成本。另一个是并行度。在相同FLOPs下,并行度高的模型可能比并行度低的模型快得多。
其次,具有相同FLOPs的操作在不同平台上的运行时间可能不同。例如,张量分解在早期工作 [20,21,22] 中被广泛用于加速矩阵乘法。然而,最近的工作 [19] 发现,尽管[22]中的分解减少了75%的FLOPs,但在GPU上却更慢。我们调查了这个问题,发现这是因为最新的CUDNN [23]库特别优化了 3 × 3 3 \times 3 3×3卷积。我们不能当然地认为 3 × 3 3 \times 3 3×3卷积比 1 × 1 1 \times 1 1×1卷积慢9倍。
基于这些观察,我们提出在有效的网络架构设计中应考虑两个原则。首先,应使用直接指标(例如速度)而不是间接指标(例如FLOPs)。其次,应在目标平台上评估此类指标。
在这项工作中,我们遵循这两个原则,并提出了一种更有效的网络架构。在第2节中,我们首先分析了两种具有代表性的最先进的网络[15,14]的运行时性能。然后,我们得出了四条高效网络设计的指导原则,这些原则不仅仅是考虑浮点运算数(FLOPs)。虽然这些指导原则是平台无关的,但我们在两个不同的平台(GPU和ARM)上进行了一系列受控实验,并进行了专用代码优化,以确保我们的结论是最先进的。
在第3节中,我们根据这些指导原则设计了一种新的网络结构。由于它受到ShuffleNet[15]的启发,因此被称为ShuffleNet V2。通过第4节的综合验证实验,证明它在两个平台上都比以前的网络更快、更准确。图1(a)(b)给出了比较概览。例如,在给定40M FLOPs的计算复杂度预算下,ShuffleNet v2分别比ShuffleNet v1和MobileNet v2准确率高出 3.5 % 3.5 \% 3.5%和 3.7 % 3.7 \% 3.7%。
2. 高效网络设计的实用指导原则
我们的研究是在两个广泛采用的、具有行业级卷积神经网络(CNN)库优化的硬件上进行的。我们注意到,我们的CNN库比大多数开源库更高效。因此,我们确保我们的观察和结论对于工业实践是坚实且有意义的。
- GPU。使用的是NVIDIA GeForce GTX 1080Ti单卡。卷积库是CUDNN 7.0[23]。我们还激活了CUDNN的基准测试功能,以分别选择不同卷积的最快算法。
- ARM。使用的是高通骁龙810。我们使用了高度优化的基于Neon的实现。评估时使用单线程。
其他设置包括:启用了所有优化选项(例如,张量融合,用于减少小操作的开销)。输入图像大小为 224 × 224 224 \times 224 224×224。每个网络都随机初始化并评估100次。使用平均运行时间。
为了开展本研究,我们分析了两种最先进的网络ShuffleNet v1[15]和MobileNet v2[14]的运行时性能。它们在ImageNet分类任务上都非常高效且准确。它们都被广泛用于手机等低端设备。虽然我们只分析了这两个网络,但我们注意到它们代表了当前的趋势。其核心是组卷积和深度卷积,这也是其他最先进的网络(如ResNeXt[7]、Xception[12]、MobileNet[13]和CondenseNet[16])的关键组件。
总运行时被分解为不同的操作,如图2所示。我们注意到,FLOPs指标仅考虑了卷积部分。虽然这部分消耗了大部分时间,但其他操作(包括数据输入/输出、数据重排和逐元素操作(AddTensor、ReLU等))也占用了相当多的时间。因此,FLOPs并不是实际运行时间的足够准确的估计。
基于这一观察,我们从几个不同的方面对运行时(或速度)进行了详细分析,并得出了几条高效网络架构设计的实用指导原则。
G1) 等通道宽度可最小化内存访问成本(MAC)。现代网络通常采用深度可分离卷积[12,13,15,14],其中逐点卷积(即 1 × 1 1 \times 1 1×1卷积)占据了大部分复杂度[15]。我们研究了 1 × 1 1 \times 1 1×1卷积的核形状。该形状由两个参数指定:输入通道数 c 1 c_{1} c1和输出通道数 c 2 c_{2} c2。设特征图的空间大小为 h h h和 w w w,则 1 × 1 1 \times 1 1×1卷积的FLOPs为 B = h w c 1 c 2 B=h w c_{1} c_{2} B=hwc1c2。
为简化起见,我们假设计算设备的缓存足够大,可以存储整个特征图和参数。因此,内存访问成本(MAC)或内存访问操作的数量为MAC = h w ( c 1 + c 2 ) + c 1 c 2 =h w\left(c_{1}+c_{2}\right)+c_{1} c_{2} =hw(c1+c2)+c1c2。注意,这两项分别对应于输入/输出特征图和核权重的内存访问。
根据均值不等式,我们有
MAC ≥ 2 h w B + B h w \text{MAC} \geq 2\sqrt{hwB} + \frac{B}{hw} MAC≥2hwB+hwB
因此,MAC有一个由浮点运算数(FLOPs)给出的下界。当输入和输出通道的数量相等时,它达到这个下界。
这个结论是理论上的。在实践中,许多设备的缓存并不足够大。此外,现代计算库通常采用复杂的分块策略来充分利用缓存机制[24]。因此,实际的MAC可能会偏离理论值。为了验证上述结论,进行了如下实验。通过重复堆叠10个构建块来构建一个基准网络。每个构建块包含两个卷积层。第一个卷积层包含
c
1
c_{1}
c1个输入通道和
c
2
c_{2}
c2个输出通道,第二个则相反。
表1报告了在固定总FLOPs的情况下,通过改变 c 1 : c 2 c_{1}:c_{2} c1:c2的比例来测试的运行速度。很明显,当 c 1 : c 2 c_{1}:c_{2} c1:c2接近 1 : 1 1:1 1:1时,MAC变小,网络评估速度更快。
G2) 过度使用组卷积会增加MAC。组卷积是现代网络架构的核心[7,15,25,26,27,28]。它通过将所有通道之间的密集卷积变为稀疏(仅在通道组内)来降低计算复杂度(FLOPs)。一方面,在给定固定FLOPs的情况下,它允许使用更多的通道,并增加网络容量(从而提高准确性)。另一方面,通道数量的增加会导致MAC增加。
正式地,遵循G1和等式1中的符号, 1 × 1 1 \times 1 1×1组卷积的MAC和FLOPs之间的关系为
MAC = h w ( c 1 + c 2 ) + c 1 c 2 g = h w c 1 + B g c 1 + B h w \begin{aligned} \text{MAC} &= hw(c_{1} + c_{2}) + \frac{c_{1}c_{2}}{g} \\ &=hwc_{1} + \frac{Bg}{c_{1}} + \frac{B}{hw} \end{aligned} MAC=hw(c1+c2)+gc1c2=hwc1+c1Bg+hwB
其中
g
g
g是组数,
B
=
h
w
c
1
c
2
/
g
B =hwc_{1}c_{2}/g
B=hwc1c2/g是FLOPs。很容易看出,在给定固定输入形状
c
1
×
h
×
w
c_{1} \times h \times w
c1×h×w和计算成本
B
B
B的情况下,MAC随着
g
g
g的增长而增加。
为了研究实践中的影响,通过堆叠10个点组卷积层来构建一个基准网络。表2报告了在固定总FLOPs的情况下,使用不同组数的运行速度。很明显,使用大量的组会显著降低运行速度。例如,在GPU上使用8组比使用1组(标准密集卷积)慢两倍以上,在ARM上则慢30%。这主要是由于MAC的增加。我们注意到,我们的实现已经经过特殊优化,并且比逐组计算卷积要快得多。
因此,我们建议根据目标平台和任务仔细选择组数。仅仅因为使用更多的通道可能会增加准确性而简单地使用大量的组是不明智的,因为准确性增加的好处很容易被迅速增加的计算成本所抵消。
G3) 网络碎片化降低了并行度。在GoogLeNet系列[29,30,3,31]和自动生成的架构[9,11,10]中,每个网络构建块都广泛采用“多路径”结构。使用大量的小运算符(这里称为“碎片化运算符”)代替少数几个大的运算符。例如,在NASNET-A[9]中,碎片化运算符的数量(即一个构建块中单个卷积或池化运算的数量)为13。相比之下,在像ResNet[4]这样的常规结构中,这个数量是2或3。
尽管这种碎片化的结构已被证明对准确性有益,但它可能会降低效率,因为它对具有强大并行计算能力的设备(如GPU)不友好。它还引入了额外的开销,如内核启动和同步。
为了量化网络碎片化如何影响效率,我们评估了一系列具有不同程度碎片化的网络构建块。具体来说,每个构建块由1到4个
1
×
1
1 \times 1
1×1卷积组成,这些卷积按顺序或并行排列。构建块的结构在附录中进行了说明。每个构建块都重复堆叠了10次。表3中的结果显示,碎片化在GPU上显著降低了速度,例如,4个碎片的结构比1个碎片的结构慢了3倍。在ARM上,速度降低相对较小。
G4) 元素级操作不可忽视。如图2所示,在轻量级模型(如[15,14])中,元素级操作占用了大量时间,尤其是在GPU上。在这里,元素级运算符包括ReLU、AddTensor、AddBias等。它们的浮点运算数(FLOPs)较小,但MAC(内存访问成本)相对较高。特别地,我们还将深度卷积[12,13,14,15]视为元素级运算符,因为它也具有高MAC/FLOPs比。
为了验证这一点,我们在ResNet[4]中的“瓶颈”单元(由 1 × 1 1 \times 1 1×1卷积、 3 × 3 3 \times 3 3×3卷积和 1 × 1 1 \times 1 1×1卷积依次组成,带有ReLU和快捷连接)上进行了实验。我们分别移除了ReLU和快捷操作。表4报告了不同变体的运行时间。我们观察到,在移除ReLU和快捷操作后,GPU和ARM上的速度都提高了约20%。
结论与讨论基于上述指南和实证研究,我们得出结论:高效的网络架构应该1)使用“平衡”的卷积(通道宽度相等);2)意识到使用组卷积的成本;3)降低碎片化程度;4)减少元素级操作。这些期望的特性取决于平台特性(如内存操作和代码优化),这些特性超出了理论FLOPs的范围。在实际网络设计中应考虑这些因素。
最近轻量级神经网络架构的进展[15,13,14,9,11,10,12]大多基于FLOPs的指标,并未考虑上述特性。例如,ShuffleNet v1[15]大量使用组卷积(违反G2),并采用类似瓶颈的构建块(违反G1)。MobileNet v2[14]使用了一种违反G1的倒置瓶颈结构,它在“厚”特征图上使用深度卷积和ReLU。这违反了G4。自动生成的结构[9,11,10]高度碎片化,违反了G3。
3 ShuffleNet V2:一种高效架构
回顾ShuffleNet v1 [15]。ShuffleNet是一种最先进的网络架构,广泛应用于手机等低端设备中。它激发了我们的工作灵感,因此,我们首先对其进行回顾和分析。
根据[15],轻量级网络面临的主要挑战是在给定的计算预算(FLOPs)下,只能承受有限数量的特征通道。为了在不显著增加FLOPs的情况下增加通道数量,[15]中采用了两种技术:逐点组卷积和类似瓶颈的结构。然后引入了一个“通道混洗”操作,以实现不同通道组之间的信息通信并提高准确性。构建块如图3(a)(b)所示。
如第2节所述,逐点组卷积和瓶颈结构都会增加MAC(G1和G2)。这一成本不可忽视,尤其是对于轻量级模型。此外,使用过多的组会违反G3。快捷连接中的元素级“Add”操作也是不可取的(G4)。因此,为了实现高模型容量和效率,关键问题是如何在不使用密集卷积和过多组的情况下,保持大量且等宽的通道。
为了实现上述目标,我们引入了一个简单的操作符,称为通道拆分。它如图3©所示。在每个单元的开始,将 c c c个特征通道的输入拆分为两个分支,分别有 c − c ′ c-c^{\prime} c−c′和 c ′ c^{\prime} c′个通道。遵循G3,一个分支保持不变。另一个分支由三个具有相同输入和输出通道的卷积组成,以满足G1。与[15]不同,这两个 1 × 1 1 \times 1 1×1卷积不再是组卷积。这部分是为了遵循G2,部分是因为拆分操作已经产生了两个组。
卷积后,两个分支被拼接在一起。因此,通道数量保持不变(G1)。然后,使用与[15]中相同的“通道混洗”操作来实现两个分支之间的信息通信。
混洗后,下一个单元开始。注意,ShuffleNet v1 [15]中的“Add”操作不再存在。ReLU和深度卷积等元素级操作仅存在于一个分支中。此外,三个连续的元素级操作,“拼接”、“通道混洗”和“通道拆分”,被合并为一个单一的元素级操作。根据G4,这些更改是有益的。
对于空间下采样,单元进行了轻微修改,如图3(d)所示。移除了通道拆分操作符。因此,输出通道数量加倍。
提出的构建块©(d)以及由此产生的网络被称为ShuffleNet V2。基于上述分析,我们得出结论,该架构设计非常高效,因为它遵循了所有指导原则。
构建块被重复堆叠以构建整个网络。为了简化,我们设置 c ′ = c / 2 c^{\prime}=c / 2 c′=c/2。整体网络结构与ShuffleNet v1 [15]相似,并在表5中进行了总结。只有一个区别:在全局平均池化之前添加了一个额外的 1 × 1 1 \times 1 1×1卷积层来混合特征,这在ShuffleNet v1中是不存在的。与[15]类似,通过缩放每个块中的通道数量来生成不同复杂度的网络,标记为 0.5 × 0.5 \times 0.5×、 1 × 1 \times 1×等。
网络准确性分析 ShuffleNet v2不仅高效,而且准确。这主要有两个原因。首先,每个构建块的高效率使得能够使用更多的特征通道和更大的网络容量。
其次,在每个块中,当
c
′
=
c
/
2
c^{\prime}=c / 2
c′=c/2时,一半的特征通道直接通过该块并加入下一个块。这可以视为一种特征重用,与DenseNet [6]和CondenseNet [16]中的精神相似。
在DenseNet[6]中,为了分析特征重用模式,绘制了层间权重的
l
1
l_1
l1范数,如图4(a)所示。显然,相邻层之间的连接比其他层之间的连接更强。这表明所有层之间的密集连接可能会引入冗余。最近的CondenseNet[16]也支持这一观点。
在ShuffleNet V2中,很容易证明第 i i i个和第 ( i + j ) (i+j) (i+j)个构建块之间“直接连接”的通道数为 r j c r^{j}c rjc,其中 r = ( 1 − c ′ ) / c r=\left(1-c^{\prime}\right) / c r=(1−c′)/c。换句话说,特征重用的数量随着两个块之间距离的增大而指数衰减。在距离较远的块之间,特征重用变得非常弱。图4(b)绘制了 r = 0.5 r=0.5 r=0.5时与(a)类似的可视化图。注意,(b)中的模式与(a)相似。
因此,ShuffleNet V2的结构通过设计实现了这种类型的特征重用模式。它具有与DenseNet[6]中用于高精度的特征重用类似的优点,但如前所述,它更加高效。这在实验中得到验证,如表8所示。
4 实验
我们的消融实验在ImageNet 2012分类数据集[32,33]上进行。按照常见做法[15,13,14],所有比较的网络都有四个计算复杂度级别,即大约40、140、300和500+ MFLOPs(百万次浮点运算)。这种复杂度对于移动场景来说是典型的。其他超参数和协议与ShuffleNet v1[15]完全相同。
我们与以下网络架构[12,14,6,15]进行了比较:
- ShuffleNet v1[15]。在[15]中,比较了一系列组数 g g g。结果表明, g = 3 g=3 g=3在精度和速度之间取得了更好的权衡。这也与我们的观察结果一致。在这项工作中,我们主要使用 g = 3 g=3 g=3。
- MobileNet v2[14]。它比MobileNet v1[13]更好。为了进行全面比较,我们报告了原始论文[14]和我们重新实现中的准确性,因为[14]中的一些结果不可用。
- Xception[12]。原始的Xception模型[12]非常大(FLOPs >2G),超出了我们的比较范围。最近的工作[34]提出了一种改进的轻量级Xception结构,它在精度和效率之间表现出更好的权衡。因此,我们与该变体进行了比较。
- DenseNet[6]。原始工作[6]只报告了大型模型的结果(FLOPs >2G)。为了进行直接比较,我们根据表5中的架构设置对其进行了重新实现,其中第2-4阶段的构建块由DenseNet块组成。我们调整了通道数以满足不同的目标复杂度。
表8总结了所有结果。我们从不同方面分析了这些结果。
精度与FLOPs。显然,所提出的ShuffleNet v2模型在精度上大幅优于其他所有网络 2 { }^{2} 2,尤其是在较小的计算预算下。此外,我们注意到MobileNet v2在40 MFLOPs级别和 224 × 224 224 \times 224 224×224图像尺寸下表现不佳。这可能是因为通道太少。相比之下,我们的模型不会受到这一缺点的影响,因为我们高效的设计允许使用更多通道。此外,尽管我们的模型和DenseNet[6]都重用特征,但我们的模型更加高效,如第3节所述。
表8还将我们的模型与其他最先进的网络进行了比较,包括CondenseNet[16]、IGCV2[27]和IGCV3[28](在适当的情况下)。我们的模型在不同复杂度级别上始终表现出更好的性能。
推理速度与FLOPs/精度。对于四个精度较高的架构(ShuffleNet v2、MobileNet v2、ShuffleNet v1和Xception),我们比较了它们的实际速度与FLOPs,如图1©(d)所示。附录表1提供了不同分辨率下的更多结果。
ShuffleNet v2明显比其他三个网络更快,尤其是在GPU上。例如,在500 MFLOPs下,ShuffleNet v2比MobileNet v2快 58 % 58\% 58%,比ShuffleNet v1快 63 % 63\% 63%,比Xception快 25 % 25\% 25%。在ARM上,ShuffleNet v1、Xception和ShuffleNet v2的速度相当;然而,MobileNet v2要慢得多,尤其是在FLOPs较小的情况下。我们认为这是因为MobileNet v2具有更高的MAC(见第2节中的G1和G4),这在移动设备上很重要。
与MobileNet v1 [13]、IGCV2 [27]和IGCV3 [28]相比,我们有两个观察结果。首先,虽然MobileNet v1的准确度不如其他模型,但其在GPU上的速度比包括ShuffleNet v2在内的所有同类模型都快。我们认为,这是因为其结构满足了我们提出的大部分指导原则(例如,对于G3,MobileNet v1的碎片甚至比ShuffleNet v2还少)。其次,IGCV2和IGCV3的速度较慢,这是因为它们使用了太多的卷积组(在[27,28]中分别为4个或8个)。这两个观察结果都与我们提出的指导原则一致。
最近,自动模型搜索[9,10,11,35,36,37]已成为卷积神经网络(CNN)架构设计的一个有前途的趋势。表8的下半部分评估了一些自动生成的模型。我们发现,它们的速度相对较慢。我们认为,这主要是因为使用了太多的碎片(见G3)。然而,这个研究方向仍然很有前途。如果可以将模型搜索算法与我们提出的指导原则相结合,并在目标平台上评估直接指标(速度),那么可能会获得更好的模型。
最后,图1(a)(b)总结了准确度与速度(直接指标)的结果。我们得出结论:ShuffleNet v2在GPU和ARM上的表现都是最好的。
与其他方法的兼容性。ShuffleNet v2可以与其他技术相结合,以进一步提高性能。当配备了压缩和激励(SE)模块[8]后,ShuffleNet v2的分类准确度提高了0.5%,但速度略有下降。块结构如图2(b)(附录中)所示。结果如表8(下半部分)所示。
推广到大模型。虽然我们的主要消融实验是针对轻量级场景的,但ShuffleNet v2也可以用于大模型(例如,浮点运算数(FLOPs) ≥ 2 G \geq 2 \mathrm{G} ≥2G)。表6比较了一个50层的ShuffleNet v2(详细信息见附录)与ShuffleNet v1 [15]和ResNet-50 [4]的同类模型。ShuffleNet v2在2.3GFLOPs时仍然优于ShuffleNet v1,并且在FLOPs少40%的情况下超过了ResNet-50。
对于非常深的ShuffleNet v2(例如,超过100层),为了使训练更快收敛,我们对基本的ShuffleNet v2单元进行了轻微修改,增加了一条残差路径(详细信息见附录)。表6展示了一个配备了SE [8]组件(详细信息见附录)的164层的ShuffleNet v2模型。它在比先前最先进的模型[8]少得多的FLOPs下获得了更高的准确度。
目标检测。为了评估泛化能力,我们还测试了COCO目标检测[38]任务。我们使用最先进的轻量级检测器——轻量级头部区域卷积神经网络(Light-Head RCNN)[34]作为我们的框架,并遵循相同的训练和测试协议。我们只替换了主干网络。模型首先在ImageNet上进行预训练,然后在检测任务上进行微调。训练时,我们使用COCO的训练+验证集(除了来自minival集的5000张图像),并使用minival集进行测试。准确度指标是COCO标准的平均精度均值(mAP),即在框的交并比(IoU)阈值从0.5到0.95下的平均mAP。
ShuffleNet v2与其他三个轻量级模型(Xception [12,34]、ShuffleNet v1 [15]和MobileNet v2 [14])在四个复杂度级别上进行了比较。表7中的结果表明,ShuffleNet v2的表现最好。
将检测结果(表7)与分类结果(表8)进行比较,有趣的是,在分类上,准确度排名为ShuffleNet v2
≥
\geq
≥ MobileNet v2 > ShuffleNet v1 > Xception,而在检测上,排名变为ShuffleNet v2 > Xception
≥
\geq
≥ ShuffleNet v1
≥
\geq
≥ MobileNet v2。这表明Xception在检测任务上表现良好。这可能是因为Xception构建块的感受野比其他同类模型更大(7 vs. 3)。受此启发,我们也通过在每个构建块中的第一个逐点卷积之前引入一个额外的
3
×
3
3 \times 3
3×3深度卷积来增大ShuffleNet v2的感受野。这个变体表示为ShuffleNet v2*。它仅增加了少量的FLOPs,就进一步提高了准确度。
我们还测试了GPU上的运行时间。为了公平比较,我们将批量大小设置为4,以确保GPU满载。由于数据复制(分辨率为 800 × 1200 800 \times 1200 800×1200)和其他特定于检测的操作(如位置敏感区域兴趣池化(PSRoI Pooling)[34])的开销,不同模型之间的速度差距比分类任务小。尽管如此,ShuffleNet v2的表现仍然优于其他模型,例如,它比ShuffleNet v1快约40%,比MobileNet v2快约16%。
此外,变体ShuffleNet v2*具有最高的准确度,并且仍然比其他方法更快。这引发了一个实际问题:如何增大感受野?这对于高分辨率图像中的目标检测[39]至关重要。我们将在未来研究这个话题。
5 结论
我们提出,网络架构设计应考虑速度等直接指标,而不是浮点运算数(FLOPs)等间接指标。我们提出了实用的指导原则和一个新颖的架构ShuffleNet v2。全面的实验验证了我们新模型的有效性。我们希望这项工作能够激发未来对平台感知和更实用的网络架构设计的研究。
致谢。感谢魏一尘在论文写作方面的帮助。本研究得到了国家自然科学基金(项目号:61773229)的部分资助。
附录