摘要
目前,神经网络架构设计主要以计算复杂度的间接指标(即 FLOPs)为指导。然而,直接指标(如速度)还取决于其他因素,如内存访问成本和平台特性。因此,这项工作建议在目标平台上评估直接指标,而不仅仅考虑 FLOPs。在一系列受控实验的基础上,本研究为高效网络设计提供了若干实用指南。因此,本文提出了一种新架构,称为ShuffleNet V2。全面的消融实验验证了我们的模型在速度和准确性的权衡方面是最先进的。
引言
深度卷积网络(CNNs)架构经过多年发展,变得越来越精确和快速。自AlexNet这一里程碑式的研究成果问世以来,通过新颖的结构,包括VGG、GoogLeNet、ResNet、DenseNet、ResNeXt、SE-Net,以及自动网络架构搜索等等。
除了精度,计算复杂度也是另一个重要的考虑因素。现实世界中的任务通常是在目标平台(如硬件)和应用场景(如要求低延迟的自动驾驶)给出的有限计算预算下获得最佳精度。这就促使一系列工作朝着轻量级架构设计和更好的速度-精度权衡方向发展,其中包括Xception、MobileNet、MobileNet V2、ShuffleNet和CondenseNet等等。在这些工作中,分组卷积和深度卷积至关重要。

要衡量计算复杂度,一个广泛使用的指标是浮点运算次数FLOPs。然而,FLOPs是一个间接指标。它是速度或延迟等指标的近似值,但通常并不等同与我们真正关心的指标。这种差异已被注意到。在以前的工作中。例如,MobileNet V2比NASNET-A快得多,但它们的FLOPs却不相上下。图1进一步说明了这一现象,表明具有相似FLOPs的网络具有不同的速度。因此,将FLOPs作为计算复杂度的唯一指标是不够的,可能会导致次优设计。
间接指标(FLOPs)和直接指标(速度)之间的差异主要有两个原因。首先,FLOPs没有考虑对速度有重大影响的几个重要因素。其中一个因素是内存访问成本(MAC)。在某些操作(如分组卷积)中,这种成本占运行时间的很大一部分。在计算能力较强的设备(如GPU)上,它可能会成为瓶颈。在网络架构设计中,不应简单地忽略这一成本。另一个代价是并行程度。在FLOP相同的情况下,并行程度高的模型可能比并行程度低的模型快得多。
其次,根据平台的不同,具有相同FLOPs的操作可能会有不同的运行时间。例如,张量分解在早期的工作中被广泛用于加速矩阵乘法。然而,最近的工作发现,中的分解虽然减少了75%的FLOPs,但在GPU上却更慢。我们对这一问题进行了研究,发现这是因为最新的CUDNN库专门针对 3 × 3 3 \times 3 3×3卷积进行了优化。我们不能想当然的认为 3 × 3 3 \times 3 3×3比 1 × 1 1 \times 1 1×1慢9倍。

有鉴于此,我们建议在进行有效的网络架构设计时应考虑两个原则。首先,应使用直接指标(如速度)而不是间接指标(如FLOPs)。其次,应在目标平台上对这些指标进行评估。
在这项工作中,我们遵循这两个原则,提出了一种更有效的网络结构。在第2节中,我们首先分析了两个具有代表性的最先进网络的运行性能。然后,我们推导出四条高效网络设计准则,这些准则不仅仅考虑FLOPs。虽然这些准则与平台无关,但我们在两个不同的平台(GPU和ARM)上进行了一系列消融实验,通过专门的代码优化验证了这些准则,从而确保我们的结论是最先进的。在第3节中,我们根据指南设计了一种新的网络结构。由于受到ShuffleNet的启发,它被称为ShuffleNet V2。通过第4节中的综合验证实验,它在两个平台上都比之前的网络更快、更准确。在计算复杂度预算为 4 × 1 0 7 4 \times 10^{7} 4×107FLOPs的情况下,ShuffleNet V2比ShuffleNet V1和MobileNet V2的精确度分别高出3.5%和3.7%。
高效网络设计实用指南
我们的研究是在两个广泛采用的硬件上进行的,并对CNN库进行了行业级优化。我们注意到,我们的CNN库比大多数开源库更高效。因此,我们确保我们的观察和结论是可靠的,对行业实践具有重要意义。
GPU使用NVIDIA GeForce GTX 1080Ti。卷积算子为CUDNN 7.0。我们还激活了CUDNN的基准测试功能,分别为不同的卷积选择最快的算法。ARM使用高通骁龙810。我们使用高度优化的基于Neon的实现。使用单线程进行评估。

其他设置包括:开启全部优化选项(例如张量融合,用于减少小运算的开销)。输入图像大小为 224 × 224 224 \times 224 224×224。每个网络随机初始化并评估100次。采用平均运行时间。
作为研究的开端,我们分析了两种最先进网络的运行性能,即ShuffleNet V1和MobileNet V2。这两个网络在ImageNet分类任务中都具有很高的效率和准确性。它们都广泛应用于手机等低端设备。虽然我们只分析了这两个网络,但我们注意到它们代表了当前的趋势。即核心为分组卷积和深度卷积,这也是其他最先进网络的关键组成部分,如ResNeXt、Xception、MobileNet和CondenseNet。
如图\ref{yxsjfj}所示,对不同操作的整体运行时间进行了分解。我们注意到FLOPs指标只考虑了卷积部分。虽然这部分消耗的时间最多,但其他操作,包括数据输入,输出、数据打乱和元素操作(AddTensor、ReLU等)也消耗了大量时间。因此FLOPs并不能准确估算实际运行时间。
基于这一观察结果,我们从几个不同方面对运行时间(或速度)进行了详细分析,并得出了高效网络架构设计的若干实用指南。
通道宽度相同,内存访问成本(MAC)最小。现代网络通常采用深度可分离卷积,其中点卷积(即 1 × 1 1 \times 1 1×1卷积)占据大部分复杂性\wxyy{b15}。我们研究的是 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 = hwc_1c_2 B=hwc1c2
为简单起见,我们假设计算设备中的高速缓存足够大,可以存储整个特征图和参数。因此,内存访问成本(MAC)或内存访问操作次数为MAC = h w ( c 1 + c 2 ) + c 1 c 2 = hw(c_1 + c_2) + c_1c_2 =hw(c

本文指出神经网络架构设计不应仅以FLOPs为指标,还应考虑速度等直接指标,并在目标平台评估。提出四条高效网络设计准则,据此设计了ShuffleNet V2架构。实验表明,该架构在速度和准确性权衡上表现出色,还可用于大模型和目标检测任务。
最低0.47元/天 解锁文章

6841

被折叠的 条评论
为什么被折叠?



