MobileNet V3

2022-07-25  本文已影响0人  Valar_Morghulis

原文:https://arxiv.org/abs/1905.02244

摘要:我们提出了基于互补搜索技术和新型架构设计的下一代MobileNet。MobileNetV3通过硬件感知的架构搜索(NAS)的组合和NetAdapt算法进行调整,以适应移动手机CPU,然后通过新的体系结构改进进行改进。本文开始探索自动搜索算法和网络设计如何协同工作,以利用互补的方法提高整体技术水平。通过这个过程,我们创建了两个新的MobileNet发布模型:MobileNetV3 Large和MobileNetV3 Small,它们针对高资源和低资源用例。然后对这些模型进行调整,并将其应用于目标检测和语义分割任务。对于语义分割(或任何密集像素预测)任务,我们提出了一种新的高效分割解码器Lite-Reduced Atrus Space Pyramid Pooling(LR-ASPP)。我们在移动分类、检测和分割方面取得了最新的成果。与MobileNetV2相比,MobileNetV3 Large在ImageNet分类上的准确度提高了3.2%,同时将延迟降低了20%。与延迟相当的MobileNetV2模型相比,MobileNetV3 Small的准确度提高了6.6%。MobileNet V3 Large检测速度快25%以上,与MobileNet V2在COCO检测上的精度大致相同。MobileNet V3 Large LRASPP比MobileNet V2 R-ASPP快34%,城市景观分割的精度相似。

1    引言

高效的神经网络在移动应用中变得无处不在,实现了全新的设备体验。它们也是个人隐私的关键促成因素,允许用户获得神经网络的好处,而无需将其数据发送到服务器进行评估。神经网络效率的进步不仅通过更高的准确性和更低的延迟改善了用户体验,而且通过降低功耗有助于延长电池寿命。

本文描述了我们开发MobileNetV3-Large/Small模型的方法,以提供下一代高精度高效神经网络模型,为设备计算机视觉供电。新网络推动了最新技术的发展,并展示了如何将自动搜索与新的架构进步相结合,以构建有效的模型。

本文的目标是开发尽可能最佳的移动计算机视觉架构,优化移动设备上的精度权衡。为了实现这一点,我们引入了(1)互补搜索技术,(2)适用于移动环境的新型高效非线性,(3)新型高效网络设计,(4)新型高效分割解码器。我们提供了全面的实验,证明了在广泛的用例和手机上评估的每种技术的有效性和价值。

本文的组织结构如下。我们从第2节的相关工作开始讨论。第3节回顾了用于移动模型的高效构建块。第4节回顾了架构搜索以及MnasNet和NetAdapt算法的互补性。第5节描述了通过联合搜索提高模型效率的新架构设计。第6节介绍了分类、检测和分割的大量实验,以证明其有效性并理解不同组成的贡献。第7节包含结论和未来工作。

2    相关工作

近年来,设计深度神经网络结构以在精度和效率之间进行最佳权衡一直是一个活跃的研究领域。新的手工结构和算法神经架构搜索在推进这一领域中发挥了重要作用。

SqueezeNet[22]广泛使用1x1卷积,挤压和扩展模块主要侧重于减少参数数量。最近的工作将重点从减少参数转移到减少操作数(MADD)和实际测量的延迟。MobileNetV1[19]采用深度可分离卷积来显著提高计算效率。MobileNetV2[39]通过引入具有反向残差和线性瓶颈的资源高效块对此进行了扩展。ShuffleNet[49]利用组卷积和通道shuffle操作来进一步减少MADD。CondenceNet[21]在训练阶段学习组卷积,以在层之间保持有用的密集连接,以便特征重用。ShiftNet[46]提出了与逐点卷积交织的移位操作,以取代昂贵的空间卷积。

为了自动化架构设计过程,首先引入强化学习(RL)来搜索具有竞争准确性的高效架构[53、54、3、27、35]。一个完全可配置的搜索空间可以以指数级的速度增长,并且难以处理。因此,早期的架构搜索工作侧重于单元级的结构搜索,相同的单元在所有层中都被重用。最近,[43]探索了块级分层搜索空间,允许在网络的不同分辨率块上具有不同的层结构。为了降低搜索的计算成本,在[28,5,45]中使用了基于梯度的优化的可微架构搜索框架。专注于使现有网络适应受约束的移动平台[48、15、12]提出了更高效的自动化网络简化算法。

量化[23、25、47、41、51、52、37]是另一项重要的补充工作,通过降低位宽的算法来提高网络效率。最后,知识蒸馏[4,17]提供了一种额外的补充方法,在大型“教师”网络的指导下生成小而准确的“学生”网络。

3    高效移动端构建块

移动模型建立在越来越高效的构件上。MobileNetV1[19]引入了深度可分离卷积,作为传统卷积层的有效替代。深度可分离卷积通过将空间滤波与特征生成机制分离,有效地分解了传统卷积。深度可分离卷积由两个独立的层定义:用于空间滤波的轻型深度卷积和用于特征生成的重型1x1点式卷积。

MobileNetV2[39]引入了线性瓶颈和反向残差结构,以利用问题的低秩性质,形成更有效的层结构。该结构如图3所示,由1x1扩展卷积、深度卷积和1x1投影层定义。当且仅当输入和输出具有相同数量的通道时,才使用残差连接。该结构在输入和输出处保持紧凑的表示,同时在内部扩展到更高维的特征空间,以增加非线性每通道变换的表达能力。

MnasNet[43]通过在瓶颈结构中引入基于挤压和激励的轻量级注意力模块,建立在MobileNetV2结构之上。注意,与[20]中提出的基于ResNet的模块相比,挤压和励磁模块集成在不同的位置。该模块被放置在扩展层的深度滤波器之后,以便将注意力应用于最大表示,如图4所示。(The module is placed after the depthwise filters in the expansion in order for attention to be applied on the largest representation as shown on Figure 4.)

对于MobileNetV3,我们使用这些层的组合作为构建块,以构建最有效的模型。层也用改进的swish非线性进行升级[36、13、16]。挤压和激励以及swish非线性都使用了sigmoid,这可能会导致计算效率低下,并且难以在定点算法中保持准确性,因此我们将其替换为hard sigmoid[2,11],如第5.2节所述。

4    网络搜索

网络搜索已被证明是发现和优化网络架构的非常强大的工具[53、43、5、48]。对于MobileNetV3,我们使用平台感知NAS通过优化每个网络块来搜索全局网络结构。然后,我们使用NetAdapt算法在每层中搜索滤波器的数量。这些技术是互补的,可以结合起来有效地找到给定硬件平台的优化模型。

4.1    用于块搜索的平台感知NAS

与[43]类似,我们采用平台感知神经架构方法来寻找全局网络结构。由于我们使用相同的基于RNN的控制器和相同的分解层次搜索空间,我们发现对于目标延迟约为80ms的大型移动模型,结果与[43]类似。因此,我们只需重复使用与初始大型移动模型相同的MnasNet-A1[43],然后在其上应用NetAdapt[48]和其他优化。

然而,我们观察到,最初的奖励设计并没有针对小型移动模型进行优化。具体来说,它使用多目标奖励ACC(m)×[LAT(m)/TAR]^w来近似帕累托最优解,方法是基于目标延迟TAR平衡每个模型m的模型精度ACC(m)和延迟LAT(m)。我们观察到,对于小模型,精度随延迟而显著变化;因此,我们需要一个较小的权重因子w=−0.15(相对于原始[43]中的w=−0.07),以补偿不同延迟的较大精度变化。通过这个新的权重因子w进行增强,我们从头开始新的架构搜索,以找到初始种子模型,然后将NetAdapt和其他优化应用于最终的MobileNetV3-Small模型。

4.2    NetAdapt用于层搜索

我们在架构搜索中使用的第二种技术是NetAdapt[48]。这种方法是对平台感知NAS的补充:它允许以顺序方式微调各个层,而不是试图推断粗糙但全局的架构。有关详细信息,请参阅原始文件。简而言之,该技术进行如下:

1    从平台感知NAS找到的种子网络架构开始。

2    对于每个步骤:

(a)    生成一组新提案(proposals)。每个提案都代表了对架构的修改,该修改使得与前一步相比架构延迟至少减少了δ

(b)    对于每个提案,使用上一步中预训练模型,填充(populate)新提的架构,适当地截断并随机初始化缺失的权重。对每个提案进行T步微调,以获得精度的粗略估计。

(c)    根据某些指标选择最佳方案。

3    重复上一步,直到达到目标延迟。

[48]中的指标是最小化精度变化。我们修改了该算法,并最小化延迟变化和准确性变化之比。也就是说,对于每个NetAdapt步骤中生成的所有提案,我们选择最大化以下指标的提案:∆\text{Acc}/{\vert ∆\text{latency} \vert },其中∆\text{latency}满足2(a)中延迟的约束。直觉是,由于我们的提案是离散的,我们更喜欢使trade-off曲线斜率最大化的提案。

重复这个过程,直到延迟达到其目标,然后我们从头开始重新训练新的架构。我们使用[48]中用于MobileNet V2的相同提案生成器。具体来说,我们允许以下两种类型的提案:

1    减小任何扩展层的维度(the size of any expansion layer);

2    减少共享相同瓶颈大小的所有块中的瓶颈,以保持残差连接(Reduce bottleneck in all blocks that share the same bottleneck size - to maintain residual connections)。

在我们的实验中,我们使用了T=10000,并发现虽然它提高了提案的初始微调的准确性,但当从头开始训练时,它不会改变最终精度。我们设置δ=0.01 | L |,其中L是种子模型的延迟。

5    网络改进

除了网络搜索之外,我们还向模型引入了几个新组件,以进一步改进最终模型。我们重新设计了在网络开始和结束处的计算昂贵的层。我们还介绍了一种新的非线性,h-swish,它是最近swish非线性的改进版本,计算速度更快,量化更友好。

5.1    重新设计计算昂贵的层

通过架构搜索找到模型后,我们观察到,最后的一些层以及早期的一些层比其他层更昂贵。我们对架构提出了一些修改,以减少这些慢层的延迟,同时保持准确性。这些修改超出了当前搜索空间的范围。

第一个修改重写了网络最后几层的交互方式,以便更有效地生成最终特征。基于MobileNetV2的反向瓶颈结构和变体的当前模型使用1x1卷积作为最后一层,以扩展到更高维的特征空间。为了具有丰富的预测特征,该层至关重要。然而,这是以额外延迟为代价的。

为了减少延迟并保留高维特性,我们将该层移到最终的平均池化层后面。最后一组特征现在以1x1空间分辨率而不是7x7空间分辨率计算。这种设计选择的结果是,在计算和延迟方面,特征的计算量几乎是没有的。

一旦降低了该特征生成层的成本,就不再需要前面的瓶颈投影层来减少计算。该观察允许我们移除先前瓶颈层中的投影层和滤波层,进一步降低计算复杂度。原始和优化的最后阶段如图5所示。高效的最后阶段将延迟减少了7毫秒,这是运行时间的11%,并将操作数减少了3000万个MAdds,几乎没有损失准确性。第6节包含详细结果。

另一个昂贵的层是初始的滤波器集。当前的移动模型倾向于使用32个滤波器,以完整(full)的3x3卷积,来构建用于边缘检测的初始滤波器组。

这些滤波器通常是彼此的镜像(mirror images)。我们尝试减少滤波器的数量,并使用不同的非线性来尝试减少冗余。我们决定对该层使用hard-swish非线性,因为它的性能超过测试的其他非线性。我们能够将滤波器的数量减少到16个,同时保持与使用ReLU或swish的32个滤波器相同的精度。这将额外节省2毫秒和1000万MAdds。

5.2    非线性

[36,13,16]中引入了一种称为swish的非线性,当用作ReLU的替代品时,它显著提高了神经网络的准确性。非线性定义为:

\text{swish}\ x= x\cdot \sigma (x)

虽然这种非线性提高了准确性,但在嵌入式环境中,由于在移动设备上计算sigmoid函数的成本要高得多,因此带来了非零成本。我们用两种方法处理这个问题。

1    我们将sigmoid函数替换为其分段线性硬模拟:\text{ReLU6}(x+3)/6,类似于[11,44]。微小的区别是我们使用ReLU6而不是自定义剪裁常量。类似地,swish的硬版本变为:

\text{h-swish}\ [x]= x\frac{\text{ReLU6}(x+3)}{6}

[2]最近也提出了类似的硬swish版本。图6显示了sigmoid和swish非线性的软硬版本的比较。我们选择常数的动机是简单,并且与原始平滑版本非常匹配。在我们的实验中,我们发现所有这些函数的硬版本在准确性上没有明显差异,但从部署角度来看有多个优势。首先,ReLU6的优化实现在几乎所有软件和硬件框架上都可用。其次,在量化模式下,它消除了由近似sigmoid的不同实现引起的潜在数值精度损失。最后,在实践中,h-swish可以作为一个分段函数来实现,以减少内存访问的数量,从而大幅降低延迟成本。

2    随着网络进入更深层,应用非线性的成本降低,因为每层激活内存通常在分辨率下降时减半。顺便说一句,我们发现swish的大部分好处都是通过在更深层次使用它们来实现的。因此,在我们的架构中,我们只在模型的后半部分使用h-swish。我们参考表1和表2了解精确布局。

即使有了这些优化,h-swish仍然会带来一些延迟成本。然而,正如我们在第6节中所展示的那样,在没有优化的情况下,对准确性和延迟的净影响是积极的,并且在使用基于分段函数的优化实现时,其影响是巨大的。

5.3    大挤压和激发

在[43]中,挤压和激发瓶颈的大小与卷积瓶颈的大小相对。相反,我们将它们全部替换为扩展层中通道数的1/4。我们发现这样做可以提高准确性,适当增加了参数数量,没有明显的延迟成本。

5.4    MobileNetV3定义

MobileNetV3被定义为两个模型:MobileNetV3-large和MobileNetV3-small。这些模型分别针对高资源和低资源用例。这些模型是通过将平台感知NAS和NetAdapt应用于网络搜索并结合本节中定义的网络改进而创建的。有关网络的完整规范,请参见表1和表2。

6    实验

我们给出了实验结果来证明新的MobileNetV3模型的有效性。我们报告了分类、检测和分割的结果。我们还报告了各种烧蚀研究,以阐明各种设计决策的影响。

6.1    分类

正如已经成为标准的那样,我们使用ImageNet[38]进行所有分类实验,并将准确性与各种资源使用度量进行比较,例如延迟和乘法加法(MAdds)。

6.1.1    训练设置

我们使用具有0.9动量的标准tensorflow RMSPropOptimizer在4x4 TPU Pod[24]上使用同步训练设置来训练我们的模型。我们使用的初始学习率为0.1,批量大小为4096(每个chip 128个图像),学习率每3个epoch衰减率为0.01。我们使用0.8的dropout和l2权重衰减1e-5,以及与 Inception[42]相同的图像预处理。最后,我们使用衰减为0.9999的指数移动平均。我们的所有卷积层都使用平均衰减为0.99的批量归一化层。

6.1.2    测量设置

为了测量延迟,我们使用标准的谷歌Pixel手机,并通过标准的TFLite基准工具运行所有网络。我们在所有测量中都使用单线程大核。我们不报告多核推理时间,因为我们发现这种设置对于移动应用程序不太实用。我们为tensorflow lite提供了一个 atomic h-swish算子,它现在是最新版本中的默认值。我们在图9中展示了优化h-swish的影响。

6.2    结果

如图1所示,我们的模型优于当前最先进的模型,如MnasNet[43]、ProxylessNas[5]和MobileNetV2[39]。我们在表3中报告了不同像素手机上的浮点性能。我们在表4中包括量化结果。

在图7中,我们显示了MobileNetV3性能权衡,作为乘数和分辨率的函数。请注意,当乘法器扩展到与性能匹配近3%,MobileNetV3 Small的性能如何优于MobileNetV3-Large。另一方面,分辨率提供了比乘数更好的权衡。然而,应该注意的是,分辨率通常由问题决定(例如,分割和检测问题通常需要更高的分辨率),因此不能始终用作可调参数。(Note how MobileNetV3-Small outperforms the MobileNetV3-Large with multiplier scaled to match the performance by nearly 3%.)

6.2.1    消融研究

非线性的影响

在表5中,我们研究了在何处插入h-swish非线性的选择,以及使用优化实现相对于原始实现的改进。可以看出,使用h-swish的优化实现可以节省6ms(超过运行时的10%)。与传统的ReLU相比,优化的h-swish只增加了1ms。

图8显示了基于非线性选择和网络宽度的有效边界。MobileNetV3在网络中间使用h-swish,并明显主导了ReLU。有趣的是,向整个网络中添加h-swish略优于扩大网络的插值边界。

其他组件的影响在图9中,我们展示了不同组件的引入如何沿着延迟/准确性曲线移动。

6.3    检测

我们使用MobileNetV3作为SSDLite[39]中主干特征提取器的替代品,并与COCO数据集[26]上的其他主干网络进行比较。

根据MobileNetV2[39],我们将第一层SSDLite连接到输出步长为16的最后一个特征提取层,并将第二层SSDLite连接到输出步长为32的最后一个特征提取层。根据检测文献,我们将这两个特征提取层分别称为C4和C5。对于MobileNetV3 Large,C4是第13个瓶颈块的扩展层。对于MobileNetV3 Small,C4是第9个瓶颈块的扩展层。对于这两个网络,C5是池化之前的层。

我们还将C4和C5之间所有特征层的通道数减少了2。这是因为MobileNetV3的最后几层被调整为输出1000个类,当传输到具有90个类的COCO时,这些类可能是冗余的。

表6给出了COCO测试集的结果。在通道减少的情况下,MobileNetV3 Large比具有几乎相同映射的MobileNetV2快27%。MobileNetV3-Small通道减少也比MobileNetV2和MnasNet高2.4和0.5 mAP,同时速度快35%。对于这两种MobileNetV3模型,通道缩减技巧有助于在没有mAP丢失的情况下减少约15%的延迟,这表明Imagenet分类和COCO对象检测可能更喜欢不同的特征提取器形状。

6.4    语义分割

在本小节中,我们使用MobileNetV2[39]和拟议的MobileNetV3作为网络主干,用于移动语义分割任务。此外,我们比较了两个分割头。第一种称为R-ASPP,在[39]中提出。R-ASPP是Atrous空间金字塔池模块[7,8,9]的简化设计,它只采用由1×1卷积和全局平均池运算组成的两个分支[29,50]。在这项工作中,我们提出了另一种轻量级分割头,称为Lite R-ASPP(或LR-ASPP),如图10所示。Lite R-ASPP是对R-ASPP的改进,以类似于挤压和激励模块[20]的方式部署全局平均池化,其中我们采用了大步距的大池核(以节省一些计算),并且在模块中只有一个1×1卷积。

我们对MobileNetV3的最后一块应用atrus卷积[18,40,33,6],以提取更密集的特征,并进一步从低级特征中添加跳过连接[30],以捕获更详细的信息。

我们使用度量mIOU[14]在城市景观数据集[10]上进行实验,并且只利用“精细”注释。我们采用与[8,39]相同的训练协议。我们的所有模型都是从头开始训练的,没有在ImageNet上进行预训练[38],并使用单尺度输入进行评估。与目标检测类似,我们观察到,我们可以将网络主干的最后一个块中的通道减少2倍,而不会显著降低性能。我们认为这是因为主干网设计用于1000类ImageNet图像分类[38],而城市景观上只有19类,这意味着主干网中存在一些通道冗余。

我们在表7中报告了我们的城市景观验证集结果。如表所示,我们观察到(1)将网络主干的最后一个块中的信道减少了2倍,显著提高了速度,同时保持了类似的性能(第1行与第2行,第5行与第6行),(2)拟议的分割头LR-ASPP比R-ASPP[39]稍快,同时性能得到改善(第2行与第3行,第6行与第7行),(3)在采用相同设置时,将分割头中的滤波器从256减少到128,以稍差的性能为代价提高了速度(第3行与第4行,第7行与第8行),(4),MobileNetV3模型变体在获得类似性能的同时略快于MobileNetV2对应物(第1行与第5行、第2行与第6行、第3行与第7行、第4行与第8行),(5)MobileNetV3 Small在速度更快的同时获得与MobileNetV2-0.5类似的性能,(6)MobileNetV3 Small在产生类似速度的同时显著优于MobileNetV2-0.35。

表8显示了我们的城市景观测试集结果。我们使用MobileNetV3作为网络主干的分割模型分别比ESPNetv2[32]、CCC2[34]和ESPNetv1[32]高出6.4%、10.6%和12.3%,同时在MADD方面更快。在MobileNetV3的最后一个块中,如果不使用atrus卷积来提取密集特征图,则性能略微下降0.6%,但速度提高到1.98B(对于半分辨率输入),分别比ESPNetv2、CCC2和ESPNetv1快1.36、1.59和2.27倍。此外,我们的以MobileNetV3 Small作为网络主干的模型仍然比所有模型都好至少2.1%。

7    结论和未来工作

在本文中,我们介绍了MobileNetV3 Large\Small模型,展示了移动分类、检测和分割的最新技术。我们已经描述了我们利用多种网络架构搜索算法以及网络设计的进步来交付下一代移动模型的努力。我们还展示了如何适应swish等非线性,并以量化友好和高效的方式应用挤压和激励,将其作为有效工具引入移动模型领域。我们还介绍了一种新形式的轻量级分段解码器,称为LR-ASPP。虽然如何最好地将自动搜索技术与人类直觉相结合仍是一个悬而未决的问题,但我们很高兴地介绍了这些初步的积极结果,并将继续改进方法,作为未来的工作。

附录:

A    不同分辨率和乘数的性能表

我们在表9中给出了包含乘法加法( multiply-adds)、精度、参数计数和延迟的详细表

上一篇下一篇

猜你喜欢

热点阅读