没有合适的资源?快使用搜索试试~ 我知道了~
ShuffleNet V2:高效CNN架构设计的实用指南马宁宁1、2[0000−0003−4628−8831]、张翔宇1[0000−0003−2138−4608]、郑海涛2[0000−0001−5128−5649]、孙建1[0000−0002−6178−4166]1Megvii Inc(Face++){马宁宁,张翔宇,孙健}@ megvii.com2清华大学zheng. sz.tsinghua.edu.cn抽象。目前,神经网络架构设计大多由计算复杂度的间接度量来指导,即,失败。然而,直接度量,例如,速度也取决于其他因素,例如存储器访问成本和平台特性。因此,这项工作建议评估目标平台上的直接度量,而不仅仅考虑FLOP。基于一系列的控制实验,这项工作得出了一些实用的指导方针,有效的网络设计。因此,提出了一种新的架构,称为ShuffleNet V2。全面的烧蚀实验验证了我们的模型是最先进的速度和精度的权衡。关键词:CNN架构设计,效率,实用1介绍深度卷积神经网络(CNN)的架构已经发展了多年,变得更加准确和快速。自从AlexNet [15]的里程碑式工作以来,ImageNet的分类准确性已经通过新的结构得到了显着提高,包括VGG [25],GoogLeNet [28],ResNet [5,6],DenseNet[11],ResNeXt [33],SE-Net [9]和自动中立架构搜索[39,18,21],仅举几例。除了准确性,计算复杂性是另一个重要的考虑因素。现实世界任务通常旨在在由目标平台(例如,硬件)和应用场景(例如,自动驾驶需要低等待时间)。这激发了一系列针对轻量级架构设计和更好的速度-准确性权衡的工作,包括Xception [2],MobileNet [8],MobileNetV2 [24],ShuffleNet [35]和CondenseNet [10],仅举几例。组卷积和深度卷积在这些工作中至关重要。为了测量计算复杂度,广泛使用的度量是浮点运算的数量,或FLOP1。然而,FLOPs是一种间接度量。它⋆同等贡献。1在本文中,FLOP的定义遵循[35],即乘加的次数。2Ningning Ma et al.(a) GPU(b)ARM(c)GPU(d)ARM图1.一、在两个硬件平台上测量四种网络架构的准确度(验证集上的ImageNet分类),速度和FLOP,具有四种不同的计算复杂度(详见文本)。(a,c)GPU结果,批大小= 8。(b,d)ARM结果,批量= 1。性能最好的算法,我们提出的ShuffleNet v2,在所有情况下都在右上角区域。是我们真正关心的直接指标的近似值,但通常不等同于我们真正关心的直接指标,例如速度或延迟。这种差异已被注意到在以前的作品[19,30,24,7]。例如,MobileNetv2[24]比NASNET-A[39]快得多,但它们的FLOP相当。这种现象在图1(c)(d)中进一步说明,图1(c)(d)示出了具有相似FLOP的网络具有不同的速度。因此,使用FLOP作为计算复杂度的唯一度量是不够的,并且可能导致次优设计。间接(FLOP)和直接(速度)度量之间的差异可以归因于两个主要原因。首先,FLOP没有考虑对速度有相当大影响的几个重要因素。一个这样的因素是存储器访问成本(MAC)。这样的成本在某些操作(如群卷积)中构成运行时间的大部分它可能是具有强大计算能力的设备上的瓶颈,GPU。 在网络架构设计期间,不应简单地忽略此成本。 另一个是并行度。在相同的FLOP下,具有高并行度的模型可以比具有低并行度的模型快得多其次,具有相同FLOP的操作可能具有不同的运行时间,这取决于平台。例如,张量分解在早期的作品[14,37,36]中被广泛用于加速矩阵乘法。然而,最近的工作[7]发现[36]中的分解在GPU上甚至更慢,尽管它减少了75%的FLOP。我们研究了这个问题,发现这是因为最新的CUDNN [1]库专门针对3×3卷积进行了优化我们不能肯定地认为3× 3 conv比1× 1 conv慢 9ShuffleNet V2:高效CNN架构设计的实用指南3图二.在两个代表性的最先进的网络架构ShuffeNet v1[35](1×,g= 3)和MobileNet v2 [24](1×)上进行运行时分解。有了这些观察,我们提出了两个原则,应考虑有效的网络架构设计 。 首 先 , 直 接 度 量 ( 例 如 , 速 度 ) 而 不 是 间 接 的 ( 例 如 ,FLOPs)。其次,应该在目标平台上评估这种度量。在这项工作中,我们遵循这两个原则,并提出了一个更有效的网络架构。在第2节中,我们首先分析了两个代表性的最先进网络的运行时性能[35,24]。然后,我们得出四个指导方针,有效的网络设计,这是超越只考虑FLOPs。虽然这些准则是平台独立的,但我们执行了一系列受控实验,以在两个不同的平台(GPU和ARM)上进行验证,并进行了专门的代码优化,确保我们的结论是最先进的。在第三节中,根据指导原则,我们设计了一个新的网络结构。由于受到ShuffleNet [35]的启发,它被称为ShuffleNet V2。在这两个平台上,它通过第4节中的综合验证实验。图1(a)(b)给出了比较的概述。例如,给定40M FLOP的计算复杂度预算,ShuffleNet v2分别比ShuffleNet v1和MobileNet v2准确3.5%和3.7%。2高效网络设计我们的研究是在两个广泛采用的硬件上进行的,对CNN库进行了行业级优化。我们注意到我们的CNN库比大多数开源库更高效。因此,我们确保我们的观察结果和结论是坚实的,并对行业实践具有重要意义。– GPU。使用单个NVIDIA GeForce GTX 1080Ti。卷积库为CUDN7.0[1]。我们还激活CUDNN的基准测试功能,以分别为不同的卷积选择最快的算法。– ARM.A高通骁龙810.我们使用高度优化的基于Neon的实现。单个线程用于评估。4Ningning Ma et al.×GPU (批次/秒)ARM(图像/秒)C1:C2(c1,c2)对于×1×1×2×4(c1,c2)对于×1×1×2×41:1的比例(128 128)1480 723232(32、32)76.2 21.75.31:2的比例(90 180)1296 586206(22 44)72.9 20.55.11:6的比例(52、312)876 489189(13、78)69.1 17.94.6一分十二秒(36,432)748 392163(9,108) 57.6 15.14.4表1.指导原则1的验证实验。四种不同比例的测试输入/输出通道(c1和c2),同时通过改变通道的数量来固定输入图像大小为56× 56。其他设置包括:完全优化选项(例如张量融合,其用于减少小操作的开销)被打开。输入图像大小为224 224。每个网络被随机初始化和评估100次。使用平均运行时间为了开始我们的研究,我们分析了两个最先进的网络ShuffleNetv1[35]和MobileNet v2[24]的运行时性能。它们在ImageNet分类任务上都是它们都广泛用于低端设备,如手机。虽然我们只分析了这两个网络,但我们注意到它们代表了当前的趋势。在它们的核心是组卷积和深度卷积,这也是其他最先进网络的关键组成部分,如ResNeXt [33],Xception [2],MobileNet [8]和CondenseNet [10]。整个运行时被分解为不同的操作,如图2所示我们注意到FLOPs度量仅考虑卷积部分。虽然这部分消耗了大部分时间,但其他操作,包括数据I/O、数据混洗和元素操作(AddTensor、ReLU等)也占用了大量时间。因此,FLOP不是实际运行时间的足够准确的估计。基于这一观察,我们从几个不同的方面进行了详细的分析,运行时间(或速度),并获得了一些实用的指导方针,高效的网络架构设计。G1)相等的通道宽度使存储器访问成本(MAC)最小化。现代网络通常采用依赖可分离卷积[2,8,35,24],其中逐点卷积(即,1× 1卷积)占大多数的复杂性[35]。我们研究了1× 1卷积的核形状。形状由两个参数指定:输入通道数C1和输出通道数C2。设h和w是特征图的空间大小,1× 1卷积是B=hwc1c2。为了简单起见,我们假设计算设备中的高速缓存足够大因此,存储 器 访 问 成 本 ( MAC ) 或 存 储 器 访 问 操 作 的 数 量 为 MAC =hw(c1+c2)+c1c2。注意,这两个项分别对应于输入/输出特征图和内核权重的存储器访问。根据平均值不等式,我们有ShuffleNet V2:高效CNN架构设计的实用指南5≥××G1248表2.指导原则2的验证实验。测试组号g的四个值,而通过改变总信道号c来固定在四个值下的总FLOP。输入图像大小为56 ×56。MAC2√hwB+ B。(一)HW因此,MAC具有由FLOP给出的下限。当输入和输出通道数相等时,它达到下界结论是理论性的。实际上,许多设备上的缓存不够大。此外,现代计算库通常采用复杂的阻塞策略来充分利用缓存机制[3]。因此,实际MAC可能偏离理论MAC。为了验证上述结论,进行如下实验。通过堆叠10个来构建基准网络重复构建块每个块包含两个卷积层。第一个包含c1个输入通道和c2个输出通道,第二个包含其他通道。表1报告的运行速度,通过改变比率c1:c2,而固定总FLOPs很明显,当c1:c2接近1:1,MAC变得更小,网络评估速度更快。G2)过度的组卷积增加MAC。群卷积是现代网络架构的核心[33,35,12,34,31,26]。它通过将所有通道之间的密集卷积变为稀疏(仅在通道组内)来一方面,它允许在给定固定FLOP的情况下使用更多的信道,并且增加网络容量(因此更好的准确性)。然而,另一方面,信道数量的增加导致更多的MAC。形式上,遵循G1和Eq.1,1× 1群卷积的MAC和FLOP之间的关系为c1 c2MAC=hw(c+c)+12克Bg B=hwc1++,1项硬件(二)其中g是组的数目,B=hwc1c2/g是FLOP。很容易看出,给定固定的输入形状c1hw和计算成本B,MAC随着g的增长而增加。为了研究实际应用中的影响,通过堆叠10个逐点群卷积层来构建基准网络。表2报告了在固定总FLOP时使用不同组号的运行速度很明显,使用GPU (批次/秒)CPU(图像/秒)c代表×1 ×1×2×4c代表×1 ×1×2×41282451 12894376440.0 10.22.31801725 8733419035.0 9.52.22561026 64433812832.9 8.72.1360634 44523018027.8 7.51.8C6Ningning Ma et al.GPU(批/秒)CPU (图像/秒)c=128 c=256 c=512 c=64 c=128 c=2561-片段2446127443440.210.12.32-片段序列179090933638.610.12.24-片段序列75274534938.410.12.32-片段-平行153780332033.49.12.24-片段-平行69157229235.08.42.1表3.指导原则3的验证实验。c表示通道对于1-片段。调整其他片段结构中的通道号,使FLOP与1-片段相同。输入图像大小为56 ×56。GPU (批次/秒) CPU(图像/秒)ReLU短程c=32 c=64 c=128c=32 c=64 c=128是的是的2427 2066 143656.7 16.95.0是的没有2647 2256 173561.9 18.85.2没有是的2672 2121 145857.3 18.25.1没有没有2842 2376 178266.3 20.25.4表4.指导原则4的验证实验ReLU和快捷方式操作特别是从“bottleneck”单元[5]中删除。 c是单元中的字符串的数目。该单元重复堆叠10次以基准速度。大组数显著降低运行速度。例如,在GPU上使用8组比使用1组(标准密集卷积)慢两倍以上,在ARM上慢30%。这主要是由于MAC的增加。我们注意到,我们的实现已经过特别优化,比一组一组地计算卷积要快得多。因此,我们建议应根据目标平台和任务仔细选择组号。 使用大的组数是不明智的,因为这可能会使用更多的通道,因为精度增加的好处很容易被快速增加的计算成本所抵消。G3)网络碎片降低了并行度。在GoogLeNet系列[27,29,28,13]和自动生成的架构[39,21,18]中,“多个IP”结构被广泛地应用于网络或数据块中。在几个大型项目之前,使用了大量小型项目(称为“框架项目”)例如,在NASNET-A[39]中,分段运算符的数量(即一个构建块中单个卷积或池化操作的数量相比之下,在像ResNet [5]这样的常规结构中,这个数字是2或3。虽然这种碎片化结构已被证明有利于准确性,但它可能会降低效率,因为它对于具有强大并行计算能力的设备(如GPU)是不友好的它还引入了额外的开销,如内核启动和同步。为了量化网络碎片化如何影响效率,我们评估了一系列具有不同碎片化程度的网络块具体地,每个构建块由1到4个1× 1卷积组成,这些卷积被布置成ShuffleNet V2:高效CNN架构设计的实用指南7BN ReLUConcatConcat3x3平均池(步幅= 2)××××添加Concat频道合并UUU LuBN ReLU BN ReLUBNBNReLU(a)(b)(c)(d)图3.第三章。ShuffleNet v1的构建块[35]和这项工作。(a)基本ShuffleNet单元;(b)用于空间下采样的ShuffleNet单元(2×);(c)我们的基本单位;(d)空间下采样的单位(2×)。DWConv:深度卷积。GConv:组卷积。顺序地或并行地。块结构在附录中示出。每个块重复堆叠10次。表3中的结果表明,碎片化显著降低了GPU上的速度,例如:4-片段结构比1-片段慢3。在ARM上,速度降低相对较小。G4)元素操作不可忽略。 如图2所示,在像[35,24]这样的轻量级模型中,元素操作占用了相当多的时间,特别是在GPU上。在这里,逐元素运算符包括ReLU、AddTensor、AddBias等。 他们有小的浮点数,但相对较重的MAC。特别地,我们还考虑深度卷积[2,8,24,35]作为逐元素运算符,因为它也具有高MAC/FLOPs比。为便于验证,我们使用“底部检查”单元在ResNet [5]中使用ReLU和快捷连接)。ReLU和快捷方式操作将分别删除不同变体的运行时间报告于表4中我们观察到在移除ReLU和快捷方式之后,GPU和ARM上都获得了大约20%的加速结论和讨论基于上述指导方针和经验研究,我们得出结论,高效的网络架构应该1)使用这些理想的属性取决于平台特性(如内存操作和代码优化),这些特性超出了理论FLOP。在实际的网络设计中应考虑到它们。轻量级神经网络架构[35,8,24,39,21,18,2]的最新进展主要基于FLOP的度量,并且不考虑上述这些属性。例如,ShuffleNetv1[35]严重依赖于组卷积(针对G2)和瓶颈状构建块(针对G1)。MobileNetChannelShuffleChannelShuffle1x1 GConvBNReLChannelShuffle3x3 DWConvBN1x1 GConv1x1 GConvBN ReLChannelShuffle3x3 DWConv(跨距= 2)BN1x1 GConv1x1转换BNReL3x3 DWConvBN1x1转换1x1转换BNRe3x3 DWConv(stride =2)BN1x1转换3x3 DWConv(跨距= 2)BN1x1转换8Ningning Ma et al.′′层输出大小 KSize 步幅 重复输出通道0.5×1×1.5倍2×图像224×2243333Conv1MaxPool112×11256×563×33×322124242424Stage228×2828×28211348116176244阶段314×1414×14211796232352488第四阶段7×77×72113192464704976Conv57×71×1111024 1024 1024 2048GlobalPool1×17×7FC1000 1000 1000 1000FLOPs41M 146M 299M 591M重量数量1.4M 2.3M 3.5M 7.4M表5. ShuffleNet v2的整体架构,针对四种不同的复杂程度。v2[24]使用违反G1的反向瓶颈结构。它在您的地图上使用深度加权编码和ReLU。 这是在第四届世界杯上。自动生成的结构[39,21,18]是高度碎片化的,并且违反了G3。3ShuffleNet V2:高效架构ShuffleNet v1的评论[35]。ShuffleNet是一种最先进的网络架构。它被广泛应用于手机等低端设备它激发了我们的工作。因此,本文首先对其进行了回顾和分析。根 据 [35] , 轻 量 级 网 络 的 主 要 挑 战 是 , 在 给 定 的 计 算 bud- get(FLOPs)下,只有有限数量的特征通道是可负担 为了在不显著增加FLOP的情况下增加通道的数量,在[35]中采用了两种技术:逐点群卷积和逐点类卷积。“信道交换”操作是使得能够在不同组的信道之间进行信息通信并提高准确性的必要条件。在图3(a)(b)中示出了构建块。如第2节所讨论的,逐点群卷积和瓶颈结构都增加了MAC(G1和G2)。这个成本是不可忽略的,特别是对于轻型型号。此外,使用太多组违反了G3。shor t cut c on nect ion中的元素级“Ad d”操作也是可实现的(G4)。因此,为了获得高的模型容量和效率,关键问题是如何保持大量的等宽通道,而不需要密集卷积和非密集卷积。也没有太多的团体。通道分割和ShuffleNet V2为了达到上述目的,我们引入了一个简单的操作符,称为通道分割。如图3(c)所示。在每个单元的开头,c个特征通道的输入被分为两个分支,分别为c−c和c个通道。在G3之后,一个分支保持为ShuffleNet V2:高效CNN架构设计的实用指南9××13579112 4 6 81012目标层(一)10.90.80.70.60.50.40.30.20.1013579112 4 6 81012目标层(b)第(1)款10.90.80.70.60.50.40.30.20.10见图4。DenseNet[11]和ShuffleNet V2的特征重用模式的图示。(a)(由[11]提供)模型中卷积层的平均绝对滤波器权重。像素(s,l)的颜色对连接层s到l的权重的平均11范数进行编码。(b)pixel(s,l)的颜色表示ShuffleNet v2中直接连接块s和块l的通道数。所有像素值均归一化为[0, 1]。身份另一个分支由具有相同输入和输出通道的三个卷积组成,以满足G1。与[35]不同,两个11卷积不再是分组的这部分是为了遵循G2,部分是因为拆分操作已经产生了两个组。在卷积之后,两个分支被连接。因此,CHAN_N_L的数目保持为S_e(G_1)。然后,使用如[ 35]中所述的“chan ne l s huffle”操作来实现两个分支之间的在这之后,这个单位就产生了。ShuffleNet v1 [35]中的“Ad d”操作不再存在。像ReLU和深度卷积这样的元素操作只存在于一个分支中。此外,三个连续元素-逐元素操作,“C on c at”、“C h an n e l S h uffle”和“C h an n e l S p l i t”被合并成单个逐元素操作。根据G4,这些变化是有益的。对于空间下采样,该单元被稍微修改并在图3(d)中示出。通道拆分操作符将被删除。因此,输出通道的数量加倍。建议的构建块(c)(d)以及由此产生的网络被称为ShuffleNetV2。基于上述分析,我们得出结论,这种架构设计是高效的,因为它遵循所有的指导方针。构建块被反复堆叠以构建整个网络。对于简单的,我们设c′=c/2。上述网络结构与Shuf-fleNetv1 [35]相似,并在表5中进行了总结。只有一个区别:就在全局平均池化之前添加附加的11卷积层,以混合特征,这在ShuffleNetv1中是不存在的。与[35]类似,每个块中的通道数量被缩放以生成不同复杂度的网络,标记为0.5×,1×等。分类层源层源层10Ningning Ma et al.−ShuffleNet v2不仅高效,而且准确。主要有两个原因。首先,每个构建块中的高效率使得能够使用更多的特征信道和更大的网络容量。例如,在一个块中,每个块中的所有块(其中c′=c/2)直接穿过该块并加入下一个块。这可以被视为一种特征重用,与DenseNet [11]和CondenseNet [10]的精神类似。在DenseNet[11]中,为了分析特征重用模式,绘制了层之间权重的l1范数,如图4(a)所示。很明显,相邻层之间的连接比其他层更强。这意 味 着 所 有 层 之 间 的 密 集 连 接 可 能 会 引 入 冗 余 。 最 近 的CondenseNet[10]也支持这一观点。在图2中,这就像是操作由第i个和(i + j)个字节组成的“直接连接”字符串的集合,其中rc′)/c. 换句话说,特征重用的量随着两个块之间的距离呈指数衰减。在距离较远的块之间,特征重用变得弱得多。图4(b)针对r = 0绘制了与(a)中类似的可视化。5.注意,(b)中的模式与(a)中的模式类似。因此,ShuffleNet V2的结构通过设计实现了这种类型的特征重用模式。它与DenseNet [11]中的高精度特征重用具有相似的优势,但如前所述,它更有效。这在实验中得到验证,表8。4实验我们的消融实验在ImageNet 2012分类数据集上进行[4,23]。按照惯例[35,8,24],所有网络都具有四个级别的计算复杂度,即,约40、140、300和500+ MFLOP。这种复杂性对于移动场景是典型的。其他的超参数和pro-tools与ShuffleNet v1完全相同[35]。我们比较以下网络架构[2,24,11,35]:– ShuffleNet v1[35].在[35]中,比较了一系列组数g。建议g= 3在精度和速度之间具有更好的折衷。这也符合我们的观察。在本工作中,我们主要使用g= 3。– MobileNet v2[24].它比MobileNet v1更好[8]。为了全面比较,我们在原始论文[24]和我们的reimplement-mention中报告了准确性,因为[24]中的一些结果不可用。– Xception[2]. 原始的Xception模型[2]非常大(FLOPs> 2G),超出了我们的比较范围。最近的工作[16]提出了一种改进的轻量级Xception结构,该结构在准确性和效率之间表现出更好的权衡。所以,我们与这个变体进行比较。– DenseNet[11].原始工作[11]仅报告了大型模型(FLOPs> 2G)的结果。为了直接比较,我们按照表5中的架构设置重新实现它,其中阶段2-4中的构建块由DenseNet块组成。我们调整通道的数量,以满足不同的目标复杂度。ShuffleNet V2:高效CNN架构设计的实用指南11×表8总结了所有结果。我们从不同的方面分析这些结果。精度与失败。 很明显,提出的ShuffleNet v2模型比所有其他网络的性能都要高出一大截2,特别是在较小的计算预算下。此外,我们注意到MobileNet v2在40 MFLOPs级别上的表现很差,图像大小为224 224这可能是由于频道太少造成的相比之下,我们的模型不受这个缺点,因为我们的高效设计允许使用更多的通道。此外,虽然我们的模型和DenseNet [11]都重用了功能,但我们的模型要高效得多,如第2节所述。3.第三章。表 8 还 将 我 们 的 模 型 与 其 他 最 先 进 的 网 络 进 行 了 比 较 , 包 括CondenseNet[10],IGCV2[31]和IGCV3[26]。我们的模型在各种复杂程度上表现得更好推理速度与浮点数/精度。对于具有良好准确性的四种架构,ShuffleNet v2,MobileNet v2, ShuffleNet v1和Xception,我 们比较了 它们的实际 速度与FLOPs,如图1(c)(d)所示。不同分辨率的更多结果见附录表1。ShuffleNet v2显然比其他三个网络更快,特别是在GPU上。例如,在 500MFLOPs 下 , ShuffleNet v2 比 MobileNet v2 快 58% 在 ARM 上 ,ShuffleNet v1,Xception和ShuffleNet v2的速度相当;然而,MobileNet v2要慢得多,特别是在较小的FLOP上。我们认为这是因为MobileNet v2具有更高的MAC(参见第二节中的G1和G4)。2),这在移动设备上意义重大。与MobileNet v1[8],IGCV2[31]和IGCV3[26]相比,我们有两个观察结果。首先,虽然MobileNet v1的准确性没有那么好,但它在GPU上的速度比所有同行都快,包括ShuffleNet v2。我们认为这是因为它的结构满足大多数建议的指导方针(例如,对于G3,MobileNet v1的片段甚至比ShuffleNet v2更少)。第二,IGCV2和IGCV3是慢的。这是由于使用了太多的卷积组([31,26]中的4或8)。这两个观察结果都符合我们提出的指导方针。最近,自动模型搜索[39,18,21,32,22,38]已成为CNN架构设计的一个表8的底部评估了一些自动生成的模型。我们发现它们的速度相对 较慢。我们 认为这主要 是由于使用 了太多的片 段(参见G3)。尽管如此,这一研究方向仍是有前途的.例如,如果将模型搜索算法与我们提出的指南相结合,并且在目标平台上评估直接度量(速度),则可以获得更好的模型最后,图1(a)(b)总结了准确度与速度,直接度量。我们得出结论,ShuffeNet v2在GPU和ARM上都是最好的。2 如 [24] 所 述 , MobileNet v2 的 500+ MFLOP 与 ShuffleNet v2 的 准 确 率 相 当(25.3% vs. 25.1% top-1误差);然而,我们重新实施的 版本没有那么好(26.7%的误差,见表8)。12Ningning Ma et al.≥≥×≥≥×与其他方法兼容。ShuffeNet v2可以与其他技术相结合,以进一步提高性能。当配备挤压和激励(SE)模块[9]时,ShuffleNet v2的分类精度提高了0.5%,但速度会有一定的损失。方框结构如附录图2(b)所示。结果示于表8(底部部分)中。推广到大型模型。 虽然我们的主要消融是针对轻量场景进行的,但ShuffleNet v2可用于大型模型(例如FLOPs 2G)。表6比较了50层ShuffleNet v2(详见附录)与ShuffleNet v1 [35]和ResNet-50[5]的对应部分ShuffleNet v2仍然以2.3GFLOPs的速度超过ShuffleNet v1,并以40%的速度超过ResNet-50失败。对于非常深的ShuffleNet v2(例如,超过100层),为了使训练更快地收敛,我们通过添加残差路径稍微修改了基本的ShuffleNet v2单元表6显示了配备SE[9]组件的164层ShuffleNet v2模型(详见附录)。它比以前的最先进的模型[9]具有更少的FLOP,获得了更高的精度。为了评估泛化能力,我们还测试了COCO对象检测[17]任务。我们使用最先进的轻量级检测器-只有主干网络被替换为我们的。模型在ImageNet上进行预训练,然后在检测任务上进行微调。对于训练,我们使用COCO中的train+valset,除了minivalset中的5000张图像,并使用minivalset进行测试。准确度度量是COCO标准mmAP,即在从0.5到0.95的盒IoU阈值将ShuffleNet v2与其他三个轻量级模型进行比较:Xception [2,16],ShuffleNet v1 [35]和MobileNet v2 [24]在四个复杂度级别上。表7中的结果显示ShuffleNet v2性能最好。将检测结果(表7)与分类结果(表8)进行比较,有趣的是,在分类时,准确度等级是ShuffleNetv2MobileNetv2> ShuffeNetv1> Xception,而在检测时,等级变成ShuffleNetv2> Xception ShuffleNetv1MobileNetv2。这表明Xception在检测任务上表现良好。这可能是由于Xception构建块的接收域比其他对应物更大(7vs. 3)。受此启发,我们还通过在每个构建块中的第一个逐点卷积之前引入额外的3该变体被表示为ShuffleNetv2*。仅需几个额外的FLOP,它就进一步提高了精度。我们还对GPU上的运行时间进行了基准测试。为了公平比较,将批处理大小设置为4,以确保充分利用GPU。由于数据复制(分辨率高达8001200)和其他特定检测操作(如PSRoI Pooling[16])的开销,不同模型之间的速度差距小于分类。尽管如此,ShuffleNet v2仍然优于其他人,例如。比ShuffleNet v1快40%,比MobileNet v2快16%。ShuffleNet V2:高效CNN架构设计的实用指南13模型FLOPsTop-1错误(%)ShuffleNet v2-50(我们的)2.3G22.8ShuffleNet v1-50 [35](我们的实施)2.3G25.2ResNet-50 [5]3.8G24.0SE-ShuffleNet v2-164(我们的,带残差)12.7G18.56SENet [9]20.7G18.68表6.大型模型的结果。详情见正文此外,变体ShuffleNet v2* 具有最佳准确性,并且仍然比其他方法更快。这就引出了一个实际问题:如何增加感受野的大小?这对于高分辨率图像中的对象检测至关重要[20]。我们将在未来研究这个问题。模型毫米AP(%)GPU速度(图像/秒)FLOPs40M 140M 300M 500M 40M 140M 300M 500MXception21.9 29.031.332.917813110183ShuffleNet v120.9 27.029.932.9152857660MobileNet v220.7 24.430.030.61461119472ShuffleNet v2(我们的)22.5 29.031.833.3 188 14610987ShuffleNet v2*(我们的)23.7 29.6 32.2 34.2 18313810583表7.COCO对象检测性能输入图像大小为800× 1200。FLOPs行列出了224× 224输入大小时的复杂度级别。对于GPU速度评估,批次大小为4。我们不测试ARM,因为[16]中所需的PSRoI Pooling操作目前在ARM上不可用。5结论我们建议网络架构设计应该考虑直接的度量,如速度,而不是间接的度量,如FLOPs。我们提出了实用的指导方针和一个新的架构,ShuffleNet V2。综合实验验证了新模型的有效性我们希望这项工作可以启发未来的网络架构设计,是平台感知和更实用的工作。致谢感谢Yichen Wei对论文写作的帮助。本研究得到了国家自然科学基金(批准号:61773229)。14Ningning Ma et al.模型复杂度排名前一的GPU速度ARM速度(MFLOPs)错误。(%)(批次/秒)(图像/秒)ShuffleNet v2 0.5×(我们的)4139.741757.00.25移动网络v1 [8]4149.450236.4*0.4[24]第24话:我的朋友4343.433333.20.15[24]第24话:我的朋友3955.135133.6ShuffleNet v1 0.5×(g=3)[35]3843.234756.8DenseNet 0.5× [11](我们的实施)4258.636639.7Xception 0.5× [2](我们的实施)4044.938452.9IGCV2-0.25 [31]4645.118331.5ShuffleNet v2 1×(我们的)14630.634124.40.5移动网络v1 [8]14936.338216.5**0.75[24]第24话:我的朋友14532.123515.90.6[24]第24话:我的朋友14133.324914.9ShuffleNet v1 1×(g=3)[35]14032.621321.8DenseNet 1× [11](我们的实施)14245.227915.8Xception 1× [2](我们的实施)14534.127819.5IGCV2-0.5 [31]15634.513215.5IGCV3-D(0.7)[26]21031.514311.7ShuffleNet v2 1.5×(我们的)29927.425511.80.75移动网络v1 [8]32531.631410.61.0[24]第二十四话30028.01808.91.0[24]第24话:我的朋友30128.31808.9ShuffleNet v1 1.5×(g=3)[35]29228.516410.3DenseNet 1.5× [11](我们的实施)29539.92749.7CondenseNet(G=C=8)[10]27429.0--Xception 1.5× [2](我们的实施)30529.421910.5IGCV3-D [26]31827.81026.3ShuffleNet v2 2×(我们的)59125.12176.71.0移动网络v1 [8]56929.42476.51.4[24]第二十四话58525.31375.41.4[24]第24话:我的朋友58726.71375.4ShuffleNet v1 2×(g=3)[35]52426.31336.4DenseNet 2× [11](我们的实施)51934.61976.1CondenseNet(G=C=4)[10]52926.2--Xception 2× [2](我们的实施)52527.61746.7IGCV2-1.0 [31]56429.3814.9IGCV3-D(1.4)[26]61025.5824.5ShuffleNet v2 2x(我们的,带有SE[9])59724.61615.6NASNet-A [39](4@1056,我们的实施)56426.01304.6PNASNet-5 [18](我们的实施)58825.81154.1表8.在两个平台和四个计算复杂度水平上,比较几种网络架构的分类错误(验证集,单中心作物)和速度。结果按复杂性级别分组,以便更好地进行比较。GPU的批量大小为8,ARM为1。图像大小为224 × 224,[*] 160 × 160和[**] 192 × 192除外。我们不提供CondenseNets的速度测量[10]由于目前缺乏有效的实施。ShuffleNet V2:高效CNN架构设计的实用指南15引用1. Chetlur,S.,伍利角Vandermersch,P. Cohen,J.,Tran,J.卡坦扎罗B、Shelhamer,E.:cudnn:高效的深度学习原语。arXiv预印本arXiv:1410.0759(2014)2. Chollet,F.:Xception:使用深度可分离卷积的深度学习。02 The Dog(2016)3. Das,D.,Avancha,S.,Mudigere,D.,Vaidynathan,K.,Sridharan,S.,卡拉姆卡D、考尔湾Dubey,P.:使用同步随机梯度下降的分布式深度学习。arXiv预印本arXiv:1602.06709(2016)4. D
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 探索数据转换实验平台在设备装置中的应用
- 使用git-log-to-tikz.py将Git日志转换为TIKZ图形
- 小栗子源码2.9.3版本发布
- 使用Tinder-Hack-Client实现Tinder API交互
- Android Studio新模板:个性化Material Design导航抽屉
- React API分页模块:数据获取与页面管理
- C语言实现顺序表的动态分配方法
- 光催化分解水产氢固溶体催化剂制备技术揭秘
- VS2013环境下tinyxml库的32位与64位编译指南
- 网易云歌词情感分析系统实现与架构
- React应用展示GitHub用户详细信息及项目分析
- LayUI2.1.6帮助文档API功能详解
- 全栈开发实现的chatgpt应用可打包小程序/H5/App
- C++实现顺序表的动态内存分配技术
- Java制作水果格斗游戏:策略与随机性的结合
- 基于若依框架的后台管理系统开发实例解析
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功