Searching for MobileNetV3

原文链接:https://arxiv.org/pdf/1905.02244.pdf

 

摘要:

本文展示了基于互补搜索技术(complementary search)与先进网络结构设计的新一代mobilenet。MobileNetV3通过结合硬件感知网络架构搜索(NAS)和NetAdapt算法,对移动端的cpu进行调优,然后通过新的架构改进对其进行改进。本文一开始探索了如何才能使自动搜索算法与网络设计一起利用互补,提升整体的SOTA。这个过程中提出了两种新的MobileNet模型:MobileNetV3-Large与MobileNetV3-Small,分别对应高低资源使用情况。这些模型之后适配与应用在目标检测与实例分割上。对于实例分割任务来说(或者任何其他稠密像素级预测),我们提出了一种称为Lite Reduced Atrous Spatial Pyramid Pooling(LR-ASSPP)新的高效分割解码器。我们在mobile分类、检测、分割上取得了新的SOTA的结果。MobileNetV3-Large比MobileNetV2准确率高3.2%,延时减少15%。MobileNnetV2-Small比MobileNetV2准确率搞了4.6%,速度快了5%。MobileNetV3-Large检测比MobileNetV2在COCO数据集上快了25%。MobleNetV3-Large LR-ASPP比MobileNetV2 R-ASPP在Cityscapes segmentation数据集上达到了类似准确率,速度快了30%。

1、介绍

高效的神经网络在移动应用中无处不在,提供了一种全新的设备体验。他们也为个人隐私提供了保护使得用户在从神经网络受益的同时不用将数据发送到服务器上进行计算。神经网络效率的提高不通过更高的精度与更低的延迟改善了用户体验,还可以通过降低功耗保护电池寿命。

本文描述了我们用来开发出MobileNetV3大小模型的方法,以提供新一代高精度高效的神经网络模型,来驱动移动端CV发展。新网络推动了SOTA的发展,展示了如何将自动搜索及时雨与先进网络结构结合,构建有效模型。

本文的目的是研发最高效的CV结构来优化移动端准确率与延时的trade-off。为了达到这个目的我们介绍了:(1)交互搜索技术(2)移动端新的高效非线性设计(3)新的高效的网络设计(4)新的高效分割解码器。我们通过深入实验验证每项技术适用于广泛的用例与移动设备。

本文组织如下。我们在第二节中讨论了相关工作。第三节中回顾了移动端模型中高效模块。第四节回顾了结构搜索与MnasNet与NetAdapt算法的互补性。第五节描述了通过联合搜索提高模型效率的新型网络架构设计。第六节介绍了分类、检测、分割的扩展实验,证明方法的有效性与不同方法的贡献。第七节中包括了总结与后续的工作。

2、相关工作

设计深度网络结构实现精度与效率的最优平衡是近些年活跃的研究领域之一。无论是新颖的手工设计网络还是算法自动搜索网络结构都在这一领域发挥了重要作用。

SqueezeNet【20】在squeeze与expand模块中广泛使用1×1卷积,主要关注减少参数的数量。最近的工作将研究重点从减少参数量转移到减少操作数量(MAdds)与实际延时中。MobileNetV1【17】使用通道可分离卷积来实质改进计算效率。MobileNetV2【37】在此基础上进行扩展,引入具有反向残差模块与线性瓶颈的高效资源模块。ShuffleNet【47】利用group卷积与通道shuffle操作来进一步减少MAdds。CondenseNet【19】在训练阶段使用group卷积来保证层间的有效dense连接以便特征复用。ShiftNet【44】提出了point-wise卷积交错shift操作来替代时耗高的空间卷积。

为了使得结构设计自动化,增强学习(RL)被引入用来搜索高精度的网络结构【51,52,3,25,33】。完全可配置的搜索空间会以指数级数增长且难以处理。所以早期的结构搜索主要关注单元级的结构搜索,在所有层中复用相同单元。最近文献【41】中探索了模块及分层搜索空间,允许网络的不同分辨率使用不同的网络结构。为了减少搜索的时耗,文献【26,5,43】中使用了可微搜索框架,进行基于梯度的优化。针对现有网络应用受限于移动平台的问题,文献【46,14,12】提出了更高效的自动网络简化算法。

量化是另外一种补充优化【21,23,45,39,49,50,35】,以通过降低精度提升网络效率。最后,知识蒸馏【4,15】提供一种附加的补充方法,通过大型teacher网络来监督精确的小型student网络。

Searching for MobileNetV3_第1张图片

3、Efficient Mobile Building Blocks

Mobile模型是建立在越来越高效的模块基础上的。MobileNetV1【17】使用高效的深度可分离卷积来替代传统卷积。深度可分离卷积通过将空间滤波与特征生成机制分离,有效的分解了传统卷积。深度可分离卷积由两个独立层定义:用于空间滤波的轻量级深度卷积与用于特征生成的pointwise1×1卷积。

MobileNetV2引入线性bottleneck与反向ResNet结构来利用问题的低秩性使得层结构更加高效。结构如图3所示,由1×1扩展卷积,depthwise卷积与1×1投影层组成。输入与输出只有在他们通道数相同的时候才能使用residual连接。这种结构在输入与输出时保持了紧凑的表示,同事在内部扩展到高维特征空间,增加了非线性通道间转化的表达能力。

MnaNnet【41】建立在MobileNetV2结构基础上,通过在bottleNeck结构中引入基于squeeze与excitation的轻量级注意力模块。注意squeeze与excitaion模块与文献【18】相比集成在基于ResNet模块的不同位置。如图4所示,模块位于展开后的depthwise滤波器后使得注意力机制在最大表示时应用。

对于MobileNetV3,我们使用这些曾的组合来构建更加高效的模块。层也升级成了流行的非线性型【34】。Squeeze、excitaion以及非线性都使用了sigmoid,他的计算效率很低,很难在顶点运算中保持精度,因此我们将其替换为hard sigmoid【2,11】,如5.2节讨论的。

Searching for MobileNetV3_第2张图片

4、Network Search

网络搜索展现出了再发现与优化网络结构中强大的能力。对于MobileNetV3,我们使用平台感知的NAS通过优化每个网络模块来搜索全局网络结构。之后我们使用NetAdapt算法搜索每个层滤波器的数量。这些技术是互补的,可以结合起来为给定的硬件平台高效的找到最优模型。

4.1 Platform-Aware NAS for Block-wise Search

    与文献【41】相似,我们采用平台感知神经网络结构的方法来寻找全局网络结构。由于我们使用相同的基于RNN的controller与相同分解的搜索空间,我们给Large-MobileNet找到与文献【41】类似的结果,延迟约80ms。因此我们简单的复用了MnasNet-A1【41】作为初始化的Large-MobileNet模型,并且应用NetAdapt【46】及其他方法在其基础上进行优化。

然而我们发现原始的反馈设计并不能优化small mobile模型。具体来说,它使用了一个多目标反馈来估计Pareto-optimal解决方案,通过给每个基于目标时延TAR        的模型m来平衡模型准确率与时延。我们观察到,随着小模型延时的增加,准确率变化会更加显著;因此,我们需要一个更小的权重系数w=-0.15(文献【41】中w=-0.07)来补偿不同延时带来的进度变化。在新权重因子w的增强下,我们从头开始搜索一个新的结构,来寻找初始化seed模型,然后应用NetAdapt与其它优化方法来获得最终的MobileNetV3-Small模型。

4.2 NetAdapt for Layer-wise Search

我们在搜索架构中使用的第二种技术是NetAdapt【46】。这种方法是对platform-aware NAS的补充:它允许按顺序对每个层的结构进行微调,而不是试图直接预测粗粒度的全局结构。我们详细参考了原文的细节。简而言之,技术流程如下:

  1. 第一步通过plateform-aware NAS找到seed网络结构。
  2. 对于每一步

     (a)生成一系列新的proposal。每个proposal表示对一个结构进行修改,产生与前一步相比至少的时延。

     (b)对于每一个proposal,我们使用前一步预训练模型,并填充新提出了proposal结构,适当对缺失的权重进行适当的截断与随机初始化。对T步的每个proposal进行微调,获得精度的大体估计。

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

    3.重复前面的步骤,知道达到目标时延。

    在文献【46】中,度量标准是最小精度变化。我们改进了这个算法,使得时延变化与精度变比例最小化。也就是说对于每个NetAdapt步骤中生成的proposal,我们选择一个最大化的:,△latency满足2(a)中的约束。直觉告诉我们,由于proposal是离散的,所以我们更希望最大化proposals的trade-off曲线的斜率。

这个过程重复进行,知道时延达到目标,然后从头开始训练新的网络结构。我们使用文献【46】中mobileNetV2使用的proposal生成器。具体来说,我们使用以下两种proposal:

  1. 减少任何expansion层的尺寸。
  2. 为了保持residual连接,减少所有模块中共享相同bottleneck大小的bottleneck层。

在实验中我们使用T=10000,这样增加了初始微调proposal的准确率。但是当从头开始训练时,它通常不会改变最终的进度。我们设置δ=0.01|L|,这里L是指seed模型的时延。

5、Network Improvements

除了network search外,我们还引入了一些新的成分来进一步改进最终的模型。在网络开始与结束的位置,我们重新设计了原本计算代价高昂的层。我们还引入了一种新型非线性,h-swish,一种当前非线性swish的改进,计算速度更快,并且便于量化。

5.1 Redesigning Expensive

一旦通过结构搜索找到了模型的结构,我们会发现在起始与结束阶段的一些层比其它层更耗时。我们建议对结构进行一些修改,较少这些慢层的时延,同时保持准确性。这些改进超出了当前搜索空间的范围。

第一个修改是修改了最后几层的交互方式,这样使得更高效的产生最终的特征。当前的模型结余MobileNetV2的翻转bottleneck结构与变体,使用1×1的卷积最为最后一层,从而使得它可以扩展到高维特征空间。这一层对于获得用于预测的丰富特征相当重要。然而,这是以额外的时延为代价的。

为了减少时延并保留高位特性,我们将改成移到最终的平均池化之后。最后一组特征现在计算的空间分辨率是1×1的卷积,而不是7×7的卷积。这种设计选择的结构式,在计算和延迟方面,特征的计算几乎是不耗时间的。

一旦特征生成层的耗时降低了,就不需要之前的bottleneck投影层来减少计算量了。这使得我们可以删除之前bottleneck层projection与filter层从而进一步降低计算复杂度。原始与优化后的最够一步可见图5对比。高效的last stage将时延降低了15%的运行时间,也就是10毫秒,将计算量减少了了3000万MAdds操作且基本没有精度损失。第六节中有详细的细节数据。

另外一个耗时严重的层是滤波器的初始化设置。当前的mobile模型倾向使用32个3×3的滤波器来建立表圈检测的初始化滤波块。通常这些滤波器是彼此的镜像。我们尝试减少滤波器的数量,尝试使用不同的非线性单元并且降低冗余。我们在这个层决定使用hard swish nonlinearity,因为在测试过程与其它分线性层差不多。我们可以在将滤波器数量减少到16个的同时,保持与使用ReLU或者swish32个滤波器相似的精度。这节省了额外的3ms与1000万次MAdds。

Searching for MobileNetV3_第3张图片

5.2 Nonlinearities

文献【34】中引入了一种称为swish的非线性单元,当作为ReLU的替代时,它可以显著的提升神经网络的精度。非线性结构定义如下:

虽然这种非线性提高了精度,但是在嵌入式环境中,他的成本是非零的,因为在移动设备上计算sigmoid函数代价要大得多。我们用两种方式处理这个问题:

1、使用picece wise linear hard对simoid函数进行模拟:,类似于【11,42】。小区别是我们使用ReLU6而不是定制的裁剪常量。类似的,hard swish表示为:

类似版本的hard-swish在文献【2】中提了出来。Soft与hard版本的simoid与swish非线性结构对比详细见表6。我们对常量选择的考量主要是简单与与原始平滑版本的匹配程度。在我们的实验中,我们发现所有这些函数与hard-version相比精度没有明显差异,但从部署的角度来看,他们具有多重优势。首先,几乎所有软件与硬件框架都可以使用ReLU6的优化实现。其次,在量化模式下,它消除了由不同近似sigmoid不同实现导致的潜在的精度损失。最后,即使是优化了的量化simoid实现速度也比响应的ReLU慢的多。在我们的实验中,用量化模式下的swish替换h-swish增加了15%的推进时延。

Searching for MobileNetV3_第4张图片

2、随着网络层数的加深,应用非线性结构的成本会降低,因为每层激活内存会在分辨率下降时减半。顺便提一句,我们发现swish只有在更深的网络层中使用才能体现出优势。因此在我们的架构中只有在模型的后半部分才使用h-swish。我们参照表1与表2进行精确设计。

即使应用了这些优化,h-swish任然会引入一些时延成本。然而正如我们在第六节中所示的那样,对精度与时延的作用是积极的,它为进一步的软件优化提供了条件:一旦smooth sigmoid被分段线性函数代替,大部分开销都是内存访问开销,这些开销可以通过融合之前层的非线性结构来消除。

5.2.1 Large squeeze-and-excite

文献【41】中squeeze-and-excite瓶颈尺寸与卷积bottleneck相对大小有关。我们将他们全部替换为固定为expansion层通道数的四分之一。我们发现这样做可以在适当增加参数数量的情况下提升精度,并且没有明显的时间消耗。

Searching for MobileNetV3_第5张图片

Searching for MobileNetV3_第6张图片

5.3 MobileNetV3 Definitions

MobileNetV3定义为两个模型:MobileNetV3-Large与MobileNet-small。这两个模型分别对应高低资源的情况。模型通过应用platform-aware NAS与NetAdapt进行网络搜索,并结合本节应用的改进完成设计。网络结构的完整说明见表1与表2。

6、Experiments

我们提供实验结果来证明MobileNetV3的有效性。我们分别介绍了分类、检测、分割上的结果。我们也通过消融实验介绍各种设计对结果的影响。

6.1 Classification

正如标准测试一样我们在所有分类实验中都是用ImageNet【36】,将我们各种例如时延与MAdds资源使用度量方式下的分类准确率进行对比。

6.1.1 Training setup

我们在4×4TPU Pod【22】上使用标准的参数为0.9的tensorflow RMSPropOptimizer,采用同步训练设置来训练模型。初始学习设置为0.1,batch大小为4096(每个芯片128张样本),每3个epoch学习率有0.01的衰减。Dropout设置为0.8,L2权重衰减1e-5。数据预处理方式如Inception【40】中一致。最后,指数变化的平均衰减为0.9999。所有卷积层都使用平均衰减为0.99的BN层。

6.1.2 Measurement setup

为了度量时延,我们使用标准的GooglePixel手机,通过标准TFLite基准运行所有网络。我们在所有测试中使用单线程大内核。我们并没有展示多核推理时间,因为我们发现这种设置对移动端程序不太实用。

6.2 Results

图1可见我们模型的表现优于当前例如MnasNet【41】、ProxylessNas【5】与MobileNetV2【37】的SOTA的表现。我们在表3中报告了不同像素手机上的浮点性能。我们在表4中介绍了量化的结果。

Searching for MobileNetV3_第7张图片

Searching for MobileNetV3_第8张图片

在图7中,我们展示MobileNetV3作为multiplier与分辨率权衡函数的性能trade-off。注意MobileNetV3-Small如果将multiplier缩放到与MobileNet-Large相似的情况表现要好将近3%。另一方面,分辨率提供了一个比multiplier更好的trade-off。但是需要指出的是,解决问题的办法往往是由问题决定的(例如分割与检测问题往往需要更高的分辨率),因此不能总是作为可调整的参数。

Searching for MobileNetV3_第9张图片

6.2.1 Ablation study

Impact of non-linearities 表5与图8中展示了如何决定在哪里插入h-swish来影响延时。我们注意到特别重要的是,整个网络上使用h-swish会导致精度略微提升(0.2),同事增加了将近20%的时延,并再次回到有效性问题上来。

另一方面,使用h-swish与ReLU相比改进了效率问题,但任然时效性降低了12%。最后,我们注意到当h-swish融合到卷积操作之后得到了优化,我们预计h-swish与ReLU之间的时延差距及时没有消失,也会显著减少。然而这样的改进不可能出现在h-swish与swish上,因为计算sigmoid的代价本来就比较大。

Impact of other components 图9中我们展示了不同组件的引入是如何影响时延/准确率曲线变化的。

Searching for MobileNetV3_第10张图片

Searching for MobileNetV3_第11张图片

Searching for MobileNetV3_第12张图片

6.3 Detection

我们在SSDLite【37】中使用MobileNetV3作为骨干特征提取网络,与其它骨干网络在COCO数据集【24】上进行对比。

与MobileNetV2【37】一致,我们将特征提取网络最后一个输出stride为16的特征提取层作为SSDLite第一层,将输出为stride为32的最后一个特征层作为SSDLite的第二层。依据检测文献,我们将这两个特征提取层分布称为C4与C5。对于MobileNetV3-Large来说,C4是第13个bottleneck的expansion层。对于MobileNetV3-Small来说,C4是第9个bottleneck模块的expansion层。C5是两个网络池化之前的层。

我们还将C4与C5之间所有特征层的通道数减少了2倍。这是因为MobileNetV3的输入调整成1000类,但迁移到COCO的90类是可能存在冗余。

COCO测试集的结果如表6所示。在通道减少的情况下,MobileNetV3-Large比MobileNetV2在达到几乎相同mAP的情况下快了近25%。通道减少的MobileNetV3-Small在类似时延的情况下mAP比MobileNetV2与MnasNet分别高了2.4与0.5。对于MobileNetV3两个模型来说,通道减少trick在没有mAP损失的情况下降低了约15%的时延,展示出Imagenet分类与COCO目标检测需要的特征提取尺寸不同。

Searching for MobileNetV3_第13张图片

Searching for MobileNetV3_第14张图片

6.4 Segmantic Segmentation

本节中我们使用MobileNetV2【37】与提出的MobileNetV3作为网络结构用于mobile语义分割任务。此外我们对比了两个segmentation heads。第一个参考文献【37】提出的R-ASPP。R-ASPP是Atrous Spatial Pyramid Pooling module【7,8,9】的缩写,两个分支由一个1×1卷积及一个global-average Pooling组成【27,48】。本文提出了一种轻量级的segmentation head,如图10所示,参考了Lite R-ASPP或者LR-ASPP。Lite R-ASPP是对R-ASPP的改进,使用类似Squeeze-and-Excitation模块【18】类似的全局池化的方式,在模块中我们使用了大的pooling kernel与大stride(为了节省算力)与一个1×1卷积。我们为了提取更稠密的特征在MobileNetV3的最后一个模块中应用了atrous convolution【16,38,31,6】,并且进一步增加了一个low-level特征的skip连接【28】来获得更多细节信息。

我们在Cityscapes数据集【10】上使用mIOU【13】度量方式进行试验,只使用fine作为标注。我们使用【8,37】类似的训练方式。我们所有的模型都是从ImageNet从头训练,而不进行预训练,使用单尺度输入进行评估。与检测相似,我们观察到可以在不显著降低性能的情况下将主干网络的最后一个模块中的通道数减少2倍。我们任我这是因为主干网络是为了1000类图像分类设计的,而Cityscapes只有19类,这意味着主干网中存在一定的通道冗余。

我们在表7中报告了Cityscapes验证结果。如表所示,我们观察到(1)将主干网络的最后一个块中的通道减少2倍可以显著提升速度,同时保持相似的性能(row1 vs. row2 与 row5 vs. row6)(2)本文提出的segmentation head LR-ASPP比R-ASPP【37】略微快一些,并且性能有提升(row2 vs. row3 与 row6 vs. row7)(3)将segmentation head中滤波器的数量从256减少到128以略微降低性能的代价提升了速度(row3 vs. row4 与 row7 vs. row8)(4)当使用相同设置时,MobileNetV3的改进在取得与MobileNetV2类似的表现情况下速度更快(row1 vs. row5,row2 vs. row6,row3 vs. row7,row4 vs. row8)(5)MobileV3-Small与MobileNetV2-0.5性能相似却更快(6)MobileNetV3-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作为backbone模型比其它模型表现好至少6.2%。我们最快版本的模型比ESPNetv2-small性能好13.6%,且速度略快。

Searching for MobileNetV3_第15张图片

Searching for MobileNetV3_第16张图片

7 Conclusions and future work

本文介绍了MobileNetV3 Large与small模型,展示了再分类、检测与分割领域新的SOTA的模型。介绍了我们的工作,利用多种类型的网络结构搜索与先进的网络设计方式设计了可以用于下一代移动端的先进网络结构。我们还展示了如何使用例如swish这样的非线性结构,如何将squeeze-and-excite作为有效工具应用到量化友好且高效的mobile模型领域。我们还介绍了一种新的轻量级segmentation解码器,称为LR-ASPP。尽管如何将自动搜索技术与人类直觉完美结合任然是一个待解决的问题,但是我们很高兴的展示了这些初步而积极的结果,并且在未来的工作中继续改进这些方法。

你可能感兴趣的:(机器学习,深度学习读书笔记)