我们展示了基于互补搜索技术和新颖架构设计相结合的下一代MobileNets。MobileNetV3通过结合硬件感知网络架构搜索(NAS)和NetAdapt算法对移动电话cpu进行调优,然后通过新的架构改进对其进行改进。本文开始探索自动化搜索算法和网络设计如何协同工作,利用互补的方法来提高整体水平。通过这个过程,我们创建了两个新的发布的MobileNet模型:MobileNetV3-Large和MobileNetV3-Small,它们针对高资源和低资源用例。然后将这些模型应用于目标检测和语义分割。针对语义分割(或任何密集像素预测)任务,我们提出了一种新的高效分割解码器Lite reduce Atrous Spatial Pyramid Pooling (LR-ASPP)。我们实现了移动分类、检测和分割的最新技术成果。与MobileNetV2相比,MobileNetV3-Large在ImageNet分类上的准确率提高了3.2%,同时延迟降低了15%。与MobileNetV2相比,MobileNetV2- small的准确率高4.6%,同时延迟降低了5%。MobileNetV3-Large检测速度比MobileNetV2快25%,在COCO检测上的精度大致相同。MobileNetV3-Large LR-ASPP的速度比MobileNetV2 R-ASPP快30%,在城市景观分割的精度类似。
高效的神经网络在移动应用程序中变得无处不在,从而实现全新的设备上体验。它们也是个人隐私的关键推动者,允许用户获得神经网络的好处,而不需要将数据发送到服务器进行评估。神经网络效率的提高不仅通过更高的精度和更低的延迟来改善用户体验,还通过降低功耗来帮助保持电池寿命。
本文描述了我们开发MobileNetV3大型和小型模型的方法,以提供下一代高精度高效的神经网络模型来驱动设备上的计算机视觉。新的网络推动了最新技术的发展,并展示了如何将自动化搜索与新的体系结构进步结合起来,以构建有效的模型。
本文的目标是开发最佳的移动计算机视觉架构,以优化移动设备上的精确延迟交换。为了实现这一点,我们引入了(1)互补搜索技术,(2)适用于移动设备的非线性的新高效版本,(3)新的高效网络设计,(4)一个新的高效分割解码器。我们提供了深入的实验,以证明每种技术在广泛的用例和移动电话上评估的有效性和价值。
论文组织如下。我们从第2节中有关工作的讨论开始。第3节回顾了用于移动模型的高效构建块。第4节回顾了体系结构搜索以及MnasNet和NetAdapt算法的互补性。第5节描述了通过联合搜索提高模型效率的新型架构设计。第6节介绍了大量的分类、检测和分割实验,以证明有效性和理解不同元素的贡献。第7节载有结论和今后的工作。
设计深度神经网络结构来实现精度和效率之间的最优平衡是近年来一个活跃的研究领域。无论是新颖的手工结构还是算法神经结构搜索,都在这一领域发挥了重要作用。
SqueezeNet[20]广泛使用1x1卷积与挤压和扩展模块,主要集中于减少参数的数量。最近的工作将关注点从减少参数转移到减少操作的数量(MAdds)和实际测量的延迟。MobileNetV1[17]采用深度可分离卷积,大大提高了计算效率。MobileNetV2[37]在此基础上进行了扩展,引入了一个具有反向残差和线性瓶颈的资源高效块。ShuffleNet[47]利用组卷积和信道洗牌操作进一步减少MAdds。冷凝集[19]在训练阶段学习组卷积,以保持层与层之间有用的紧密连接,以便功能重用。ShiftNet[44]提出了与点向卷积交织的移位操作,以取代昂贵的空间卷积。
为了使体系结构设计过程自动化,首先引入了增强学习(RL)来搜索具有竞争力的精度的高效体系结构[51,52,3,25,33]。一个完全可配置的搜索空间可能会以指数级增长且难以处理。因此,早期的架构搜索工作主要关注单元级结构搜索,并且在所有层中重用相同的单元。最近,[41]探索了一个块级分层搜索空间,允许在网络的不同分辨率块上使用不同的层结构。为了降低搜索的计算成本,在[26,5,43]中使用了可微架构搜索框架,并进行了基于梯度的优化。针对现有网络适应受限移动平台的问题,[46,14,12]提出了更高效的自动化网络简化算法。
量化[21,23,45,39,49,50,35]是另一个重要的补充努力,以提高网络效率通过降低精度的算法。最后,知识蒸馏[4,15]提供了一种附加的补充方法,在大型“教师”网络的指导下生成精确的小型“学生”网络。
移动模式已经建立在越来越高效的基础之上。MobileNetV1[17]引入深度可分离卷积作为传统卷积层的有效替代。深度可分卷积通过将空间滤波与特征生成机制分离,有效地分解了传统卷积。深度可分卷积由两个独立的层定义:用于空间滤波的轻量级深度卷积和用于特征生成的较重的1x1点卷积。
MobileNetV2[37]引入了线性瓶颈和反转残余结构,以便利用问题的低秩性质使层结构更加有效。这个结构如图3所示,由1x1展开卷积、深度卷积和1x1投影层定义。当且仅当输入和输出具有相同数量的通道时,才用剩余连接连接它们。这种结构在输入和输出处保持了紧凑的表示,同时在内部扩展到高维特征空间,以增加非线性每个通道转换的表达能力。
MnasNet[41]建立在MobileNetV2结构上,通过在瓶颈结构中引入基于挤压和激励的轻量级注意模块。注意,与[18]中提出的基于ResNet的模块相比,挤压和激励模块集成在不同的位置。模块位于展开中的深度过滤器之后,以便注意应用于最大的表示,如图4所示。
对于MobileNetV3,我们使用这些层的组合作为构建块,以便构建最有效的模型。层也升级与修改的swish非线性[34]。挤压和激励以及swish非线性都使用了sigmoid,它的计算效率很低,而且很难在定点算法中保持精度,因此我们将其替换为硬sigmoid[2,11],如5.2节所讨论的。
网络搜索已被证明是发现和优化网络架构的一个非常强大的工具[51,41,5,46]。对于MobileNetV3,我们使用平台感知的NAS通过优化每个网络块来搜索全局网络结构。然后,我们使用NetAdapt算法搜索每个层的过滤器数量。这些技术是互补的,可以结合起来为给定的硬件平台有效地找到优化模型。
与[41]类似,我们采用平台感知神经结构方法来寻找全局网络结构。由于我们使用相同的基于Rnn-based的控制器和相同的分解层次搜索空间,所以对于目标延迟在80ms左右的大型移动模型,我们发现了与[41]类似的结果。因此,我们只需重用与初始大型移动模型相同的MnasNet-A1[41],然后在其上应用NetAdapt[46]和其他优化。
然而,我们发现最初的奖励设计并没有针对小型手机模型进行优化。具体来说,它使用一个多目标奖励 C C ( m ) × [ L A T ( m ) / T A R ] w CC(m)\times [LAT(m)/TAR]^w CC(m)×[LAT(m)/TAR]w来近似pareto最优解,根据目标延迟TAR为每个模型m平衡模型精度ACC(m)和延迟LAT(m)。我们观察到精度变化更显著延迟小模型;因此,我们需要一个较小的重量系数w =-0.15 (vs原始w=-0.07[41])来弥补大精度变化不同的延迟。在新的权重因子w的增强下,我们从头开始一个新的架构搜索,以找到初始的seed模型,然后应用NetAdapt和其他优化来获得最终的MobilenetV3-Small模型。
我们在架构搜索中使用的第二种技术是NetAdapt[46]。这种方法是对平台感知NAS的补充:它允许以顺序的方式对单个层进行微调,而不是试图推断出粗糙但全局的体系结构。详情请参阅原文。简而言之,这项技术的进展如下:
在[46]中,度量是为了最小化精度的变化。我们修改了这个算法,使延迟变化和精度变化的比例最小化。也就是说,对于每个NetAdapt步骤中生成的所有建议,我们选择一个最大化的建议: Δ A C C ∣ Δ l a t e n c y ∣ \frac{\Delta ACC}{\mid \Delta latency \mid} ∣Δlatency∣ΔACC;延迟满足2(a)中的约束。直觉告诉我们,由于我们的建议是离散的,所以我们更喜欢最大化权衡曲线斜率的建议。
这个过程重复进行,直到延迟达到目标,然后从头开始重新培训新的体系结构。我们使用与在[46]中为MobilenetV2使用相同的提案生成器。具体来说,我们允许以下两种提议:
在我们的实验中,我们使用T = 10000,并发现虽然它增加了建议的初始微调的准确性。然而,当从零开始训练时,它通常不会改变最终的精度。设 δ = 0.01 ∣ L ∣ \delta= 0.01\mid L \mid δ=0.01∣L∣,其中L为种子模型的延迟。
除了网络搜索,我们还为模型引入了一些新的组件,以进一步改进最终模型。在网络的开始和结束阶段,我们重新设计了计算昂贵的层。我们还引入了一种新的非线性,h-swish,它是最近的swish非线性的改进版本,计算速度更快,更易于量化。
一旦通过架构搜索找到模型,我们就会发现,一些最后的层以及一些较早的层比其他层更昂贵。我们建议对体系结构进行一些修改,以减少这些慢层的延迟,同时保持准确性。这些修改超出了当前搜索空间的范围。
第一个修改将重新处理网络的最后几层是如何交互的,以便生成最终层功能更有效率。目前的模型基于MobileNetV2的倒瓶颈结构和变体,使用1x1卷积作为最后一层,以扩展到高维特征空间。这一层非常重要,因为它具有丰富的预测功能。然而,这是以额外的延迟为代价的。
为了减少延迟并保留高维特性,我们将该层移到最终的平均池之后。最后一组特征现在计算为1x1空间分辨率,而不是7x7空间分辨率。这种设计选择的结果是,在计算和延迟方面,特性的计算变得几乎是免费的。
一旦降低了该特性生成层的成本,就不再需要以前的瓶颈投影层来减少计算量。该观察允许我们删除前一个瓶颈层中的投影和过滤层,从而进一步降低计算复杂度。原始阶段和优化后的阶段如图5所示。有效的最后一个阶段将延迟减少了10毫秒,即15%的运行时间,并将操作数量减少了3000万个madd,几乎没有损失精度。第6节包含了详细的结果。
另一个昂贵的层是初始过滤器集。目前的移动模型倾向于在一个完整的3x3卷积中使用32个滤波器来构建初始滤波器库进行边缘检测。通常这些过滤器是彼此的镜像。我们尝试减少滤波器的数量,并使用不同的非线性来尝试减少冗余。我们决定对这一层使用硬swish非线性,因为它的表现和其他非线性测试。我们能够将过滤器的数量减少到16个,同时保持与使用ReLU或swish的32个过滤器相同的精度。这节省了额外的3毫秒和1000万 MAdds。
在[34]中引入了一种称为swish的非线性,当作为ReLU的替代时,它可以显著提高神经网络的精度。非线性定义为
虽然这种非线性提高了精度,但在嵌入式环境中,它的成本是非零的,因为在移动设备上计算sigmoid函数要昂贵得多。我们用两种方法处理这个问题。
1. 我们将sigmoid函数替换为它的分段线性硬模拟: R e L U 6 ( x + 3 ) 6 \frac{ReLU6(x+3)}{6} 6ReLU6(x+3)类似于[11,42]。小的区别是,我们使用的是ReLU6,而不是定制的裁剪常量。类似地,swish的硬版本也变成了
最近在[2]中也提出了类似的hard-swish版本。图6显示了sigmoid和swish非线性的软、硬版本的比较。我们选择常量的动机是简单,并且与原始的平滑版本很好地匹配。在我们的实验中,我们发现所有这些函数的硬版本在精度上没有明显的差异,但是从部署的角度来看,它们具有多种优势。首先,几乎所有的软件和硬件框架上都可以使用ReLU6的优化实现。其次,在量子化模式下,它消除了由于近似sigmoid的不同实现而带来的潜在的数值精度损失。最后,即使优化了量化的sigmoid实现,其速度也比相应的ReLU慢得多。在我们的实验中,用量化模式下的swish替换h-swish使推理延迟增加了15%。
2. 随着我们深入网络,应用非线性的成本会降低,因为每层激活内存通常在分辨率下降时减半。顺便说一句,我们发现swish的大多数好处都是通过只在更深的层中使用它们实现的。因此,在我们的架构中,我们只在模型的后半部分使用h-swish。我们参照表1和表2来获得精确的布局
即使有了这些优化,h-swish仍然会引入一些延迟成本。然而正如我们在第六节证明准确性和延迟的净效应是正的,软件,它提供了一个场所进一步优化:一旦被分段线性函数光滑乙状结肠,大部分开销内存访问,可以消除融合前一层的非线性。
在[41]中,压缩-激发瓶颈的大小与卷积瓶颈的大小有关。取而代之的是,我们将它们全部替换为固定为膨胀层通道数的1/4。我们发现这样做可以在适当增加参数数量的情况下提高精度,并且没有明显的延迟成本。
MobileNetV3被定义为两个模型:MobileNetV3—大的和MobileNetV3—小的。这些模型分别针对高资源用例和低资源用例。通过应用平台感知的NAS和NetAdapt进行网络搜索,并结合本节定义的网络改进,可以创建模型。我们的网络的完整规范见表1和表2。
我们提供了实验结果来证明新的MobileNetV3模型的有效性。我们报告分类、检测和分割的结果。我们也报告各种消融研究,以阐明各种设计决策的影响。
由于已经成为标准,我们在所有分类实验中都使用ImageNet[36],并将准确度与各种资源使用度量(如延迟和乘法加法(MAdds))进行比较。
我们在4x4 TPU Pod[22]上使用0.9动量的标准tensorflow RMSPropOptimizer进行同步训练。我们使用初始学习率为0.1,批次大小为4096(每个芯片128张图像),学习率衰减率为0.01每3个周期。我们使用dropout of 0.8, l2的权重衰减为1e-5。用于与Inception[40]相同的图像预处理。最后,我们使用衰减为0.9999的指数移动平均。我们所有的卷积层都使用批处理归一化层,平均衰减为0.99。
为了测量延迟,我们使用标准的谷歌像素手机,并通过标准的TFLite基准测试工具运行所有网络。我们在所有测量中都使用单线程大内核。我们没有报告多核推理时间,因为我们发现这种设置对移动应用程序不太实用。
如图1所示,我们的模型优于目前的技术状态,如MnasNet[41]、ProxylessNas[5]和MobileNetV2[37]。我们在表3中报告了不同像素手机上的浮点性能。我们在表4中包括量化结果。
在图7中,我们展示了MobileNetV3性能权衡作为乘数和分辨率的函数。请注意,MobileNetV3-Small的性能比MobileNetV3-Large的性能好得多,其乘法器缩放到与性能匹配的倍数接近3%。另一方面,决议提供了比乘数更好的权衡。但是,需要注意的是,分辨率通常是由问题决定的(例如分割和检测问题通常需要更高的分辨率),因此不能总是用作可调参数。
Impact of non-linearities 在表5和图8中,我们展示了在何处插入h-swish的决定如何影响延迟。特别重要的是,我们注意到,在整个网络上使用h-swish会导致精度略有提高(0.2),同时增加了近20%的延迟,并再次回到有效边界。
另一方面,与ReLU相比,使用h-swish提高了效率边界,尽管仍然比ReLU贵12%左右。最后,我们注意到,当h-swish通过融合到卷积运算符中得到优化时,我们预计h-swish和ReLU之间的延迟差距即使没有消失,也会显著减小。然而,h-swish和swish之间不可能有这样的改进,因为计算sigmoid本来就比较昂贵。
Impact of other components 在图9中,我们展示了不同组件的引入是如何沿着延迟/准确度曲线移动的。
在SSDLite[37]中,我们使用MobileNetV3作为骨干特征提取器的替代,并与COCO dataset[24]上的其他骨干网络进行了比较。
在MobileNetV2[37]之后,我们将第一层SSDLite附加到输出步长为16的最后一个特征提取器层,并将第二层SSDLite附加到输出步长为32的最后一个特征提取器层。根据检测文献,我们将这两个特征提取层分别称为C4和C5。对于MobileNetV3-Large, C4是第13个瓶颈块的膨胀层。对于MobileNetV3-Small, C4是第9个瓶颈块的膨胀层。对于这两个网络,C5都是池之前的一层。
我们还将C4和C5之间的所有特征层的信道数减少了2。这是因为MobileNetV3的最后几层被调优为输出1000个类,当将90个类转移到COCO时,这可能是多余的。
COCO测试集的结果如表6所示。在信道缩减的情况下,MobileNetV3-Large比具有几乎相同映射的MobileNetV2快25%。在相同的延迟下,MobileNetV2和MnasNet比MobileNetV2和MnasNet高2.4和0.5。对于这两种MobileNetV3模型,通道减少技巧在没有地图丢失的情况下可以减少大约15%的延迟,这表明Imagenet分类和COCO对象检测可能更喜欢不同的特征提取器形状。
在本小节中,我们使用MobileNetV2[37]和提出的MobileNetV3作为移动语义分割的网络骨架。此外,我们比较了两个分割头。第一个是在[37]中提出的R-ASPP。R-ASPP是一种无源空间金字塔池化模块的简化设计[7,8,9],它只采用由11个卷积和一个全局平均池化操作组成的两个分支[27,48]。在本文中,我们提出了另一种轻量级分割头,称为Lite R-ASPP(或LR-ASPP),如图10所示。Lite R-ASPP是对R-ASPP的改进,它部署全局平均池的方式类似于挤压-激励模块[18],其中我们使用了一个大的池内核,具有较大的步长(以节省一些计算),并且模块中只有一个11个卷积。我们对MobileNetV3的最后一个块应用atrous convolution[16,38,31, 6]来提取更密集的特性,并进一步从底层特性添加一个跳过连接[28]来捕获更详细的信息。
我们使用度量mIOU[13]对Cityscapes数据集[10]进行了实验,只使用了“fine”注释。我们采用与[8,37]相同的培训方案。我们所有的模型都是从零开始训练,没有在ImageNet[36]上进行预训练,并使用单尺度输入进行评估。与目标检测类似,我们发现我们可以在不显著降低性能的情况下,将网络主干最后一块的信道减少2倍。我们认为这是因为主干网设计了1000类ImageNet图像分类[36],而Cityscapes只有19类,这意味着主干网中存在一定的信道冗余。
我们在表7中报告Cityscapes验证集的结果。如表所示,我们观察到(1)减少网络骨干的渠道在最后一块2倍显著提高速度的同时保持类似的表演(第一行和第二行和行5与行6),(2)提出分割头LR-ASPP略高于R-ASPP[37]虽然性能改善(第二行和第三行,行6 vs行7),(3)减少分割的过滤器头从256年到128年提高了速度稍差的成本性能(第3行与行4,行7与行8),(4)当使用相同的设置,MobileNetV3模型变体实现类似的性能时略高于MobileNetV2同行(第1行和5行,第二行与行6,第3行与行7日和行4与行8),(5)MobileNetV3-Small达到类似性能MobileNetV2 - 0.5时更快,(6) mobilenetv2 - small明显优于MobileNetV2-0.35,且速度相近。
表8显示了我们的Cityscapes测试集结果。我们的以MobileNetV3为网络主干的细分模型,其性能分别比ESPNetv2[30]、CCC2[32]和ESPNetv1[30]好10.5%、10.6%、12.3%,但在Madds方面速度更快。在MobileNetV3的最后一个块中,当不使用atrous卷积提取密集特征图时,性能略有下降0.6%,但速度提高到1.98B(对于半分辨率输入),分别比ESPNetv2、CCC2和ESPNetv1快1.7倍、1.59倍和2.24倍。此外,我们的模型与MobileNetV3-Small作为网络骨干仍然优于所有他们至少一个健康的利润率6.2%。我们最快的模型版本比ESPNetv2-small好13.6%,推理速度稍微快一些。
在本文中,我们介绍了MobileNetV3大大小小的模型,展示了在移动分类、检测和分割方面的最新技术。我们描述了我们的努力,利用多种类型的网络架构搜索以及先进的网络设计,以交付下一代移动模型。我们还展示了如何适应非线性,如swish和应用压缩和激励的量化友好和有效的方式,将它们作为有效的工具引入移动模型领域。我们还介绍了一种新的轻量级分割解码器,称为LR-ASPP。尽管如何将自动搜索技术与人类直觉最好地结合起来仍然是一个悬而未决的问题,但我们很高兴地展示了这些初步的积极结果,并将在未来的工作中继续改进这些方法。