读论文:Searching for MobileNetV3

Abstract

基于互补搜索技术和新颖的架构设计的组合展示了下一代 MobileNets。MobileNetV3 通过硬件感知网络架构搜索 (NAS) 与 NetAdapt 算法相结合调整为手机 CPU,然后通过新颖的架构进步进行改进。本文开始探索自动搜索算法和网络设计如何协同工作以利用改进最新技术的互补方法。通过这个过程,创建了两个新的 MobileNet 模型来发布:MobileNetV3-Large 和 MobileNetV3-Small,它们针对高资源和低资源用例。然后调整这些模型并将其应用于目标检测和语义分割的任务。对于语义分割任务(或任何密集像素预测),我们提出了一种新的高效分割解码器 Lite Reduced Atrous Spatial Pyramid Pooling (LR-ASPP)。

1. Introduction

本文的目的是开发最佳可能的移动计算机视觉架构,优化移动设备上的准确性延迟权衡。为此,我们引入了 (1) 互补搜索技术,(2) 移动设置实用的新有效非线性版本,(3) 新的高效网络设计,(4) 一种新的高效分割解码器。我们提出了充分的实验,展示了在广泛的用例和手机上评估的每种技术的有效性和价值。

2. Related Work

这一块没什么说的了

3. Efficient Mobile Building Blocks

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

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

MnasNet 通过引入基于挤压和激发的轻量级注意力模块来构建在 MobileNetV2 结构上。挤压激励模块与(Squeeze-and-Excitation Networks}中提出的基于 ResNet 的模块集成在不同的位置。该模块放置在扩展中的深度过滤器之后,以便注意力应用于最大表示,如下图所示。

对于 MobileNetV3,我们使用这些层的组合作为构建块来构建最有效的模型。层也通过修改后的 swish 非线性进行升级。挤压和激发以及摆动非线性都使用 sigmoid,这对于在固定点算术中保持准确性可能效率低下,因此我们将其替换为hard sigmoidHardSigmoid\left ( x \right ) = max\left ( 0,min\left ( 1,0.2x + 0.5 \right ) \right )

4. Network Search

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

4.1. Platform-Aware NAS for Block-wise Search

采用平台感知神经架构方法来找到全局网络结构。由于我们使用相同的基于 RNN 的控制器和相同的分解分层搜索空间,我们发现对于目标延迟约为 80 毫秒的大型移动模型,我们简单地重用与我们最初的大型移动模型相同的 MnasNet-A1,然后在其之上应用 NetAdapt和其他优化。

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

4.2. NetAdapt for Layer-wise Search

在架构搜索中使用的第二种技术是 NetAdapt 。这种方法与平台感知 NAS 互补:它允许以顺序方式微调各个层,而不是试图推断粗略但全局的架构。我们参考原始论文了解完整的细节。简而言之,该技术如下:1. 从平台感知 NAS 找到的种子网络架构开始。2. 对于每个步骤:(a) 生成一组新建议。每个提议代表一个架构的修改,与上一步相比,该架构生成至少 \delta的延迟减少。(b) 对于每个提议,我们使用来自上一步的预训练模型并填充新的提议架构,截断和随机初始化缺失的权重作为适当的。微调 T 步的每个提议以获得准确性的粗略估计。(c) 根据一些指标选择最佳提案。3.迭代上一步,直到达到目标延迟。

度量是最小化精度变化。我们修改该算法并最小化延迟变化和准确性变化之间的比率。也就是说,对于每个 NetAdapt 步骤期间生成的所有提议,我们选择一个最大化:\frac{\Delta Acc}{\Delta Iatency} 满足 2(a) 中的约束。由于我们的提议是离散的,我们更喜欢最大化权衡曲线斜率的建议。

重复此过程,直到延迟到达目标,然后我们从头开始重新训练新架构。我们使用与 MobilenetV2 的相同提议生成器。具体来说,我们允许以下两种类型的提议:

1. 减少任何扩展层的大小; 2. 减少共享相同瓶颈大小的所有块中的瓶颈 - 以保持残差连接。

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

5. Network Improvements

除了网络搜索之外,我们还在模型中引入了几个新组件,以进一步提高最终模型。我们在网络的开头和结尾重新设计了计算成本高的层。我们还引入了一种新的非线性 h-swish,这是最近 swish 非线性的修改版本,它更快计算和更友好的量化。

5.1. Redesigning Expensive Layers

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

第一个修改重新讨论了网络的最后几层如何相互作用,以便更有效地产生最终特征。当前基于 MobileNetV2 的倒置瓶颈结构和变体的模型使用 1x1 卷积作为最后一层,以扩展到高维特征空间。该层对于具有丰富的预测特征至关重要。但是,这会增加额外延迟。

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

一旦减轻了此功能生成层的成本,就不再需要之前的瓶颈投影层来减少计算。这一观察结果使我们能够去除前一个瓶颈层的投影和过滤层,进一步降低计算复杂度。原始阶段和优化的最后阶段可以在下图中看到。有效的最后一个阶段将延迟减少了 7 毫秒,减少了运行时间的 11%,并将操作的数量减少了 3000 万个 MAdd,几乎没有精度损失。

当前的移动模型倾向于在完整的 3x3 卷积中使用 32 个过滤器来构建用于边缘检测的初始滤波器组。通常这些过滤器是彼此的镜像。我们尝试减少过滤器的数量和使用不同的非线性来尝试和减少冗余。我们决定对这一层使用hard swish 非线性,因为它执行以及测试的其他非线性。我们能够将过滤器的数量减少到 16,同时使用 ReLU 或 swish 保持与 32 个过滤器相同的准确度。这节省了额外的 2 毫秒和 1000 万个 MAdd。

5.2. Nonlinearities

引入了称为 swish 的非线性,当用作 ReLU 的丢弃替换时,这显着提高了神经网络的准确性。非线性定义为swish x=x\cdot \sigma (x)。虽然这种非线性提高了准确性,但它在嵌入式环境中具有高成本的,因为 sigmoid 函数在移动设备上计算成本要高得多。我们以两种方式处理这个问题。

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

 hard-swish。sigmoid和swish非线性的软版本和硬版本的比较如下图所示。我们选择常数的动机为了简单性,并与原始平滑版本很好地匹配。在我们的实验中,我们发现所有这些函数的硬版本在准确性上没有明显差异,但从部署的角度来看有多个优势。首先,ReLU6 的优化实现几乎可以在所有软件和硬件框架上找到。其次,在量化模式下,它消除了由近似 sigmoid 的不同实现引起的潜在数值精度损失。最后,在实践中,h-swish 可以实现为一个分段函数,以减少大量驱动延迟成本的内存访问次数。(Swish函数在计算时需要两次激活操作:一次是sigmoid函数,另一次是将sigmoid的输出乘以输入值。这在某些情况下可能会导致计算延迟,尤其是在需要实时处理或资源受限的环境中。使用H-Swish可以减少内存访问次数,因为它避免了对sigmoid函数的计算,而sigmoid函数通常需要多次迭代来逼近其非线性特性。H-Swish通过使用ReLU6函数,将sigmoid的非线性特性近似为一个分段线性函数,这样就可以减少计算步骤,从而降低驱动延迟成本。)

2. 当我们深入网络时,应用非线性的成本会降低,因为每个层激活内存通常会在每次分辨率下降时减半。顺便说一句,我们发现大多数好处 swish 都是通过仅在更深的层中使用它们来实现的。因此,在我们的架构中,我们只在模型的后半部分使用 h-swish。我们参考表 1 和表 2 进行精确布局。即使使用这些优化,h-swish 仍然引入了一些延迟成本。然而,正如我们在第 6 节中所展示的,当使用基于分段函数的优化实现时,对准确性和延迟的净影响为正,没有优化,并且是显着的。

5.3. Large squeeze-and-excite

挤压激发瓶颈的大小是卷积瓶颈的大小。相反,我们将它们全部替换为扩展层中通道数的 1/4。我们发现这样做可以提高准确性,但代价是参数数量适度增加,并且没有明显的延迟成本。

5.4. MobileNetV3 Definitions

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

表 1. MobileNetV3-Large 的规范。SE 表示该块中是否有 Squeeze-And-Excite。NL 表示使用的非线性类型。这里,HS 表示 h-swish,RE 表示 ReLU。NBN 表示没有批量归一化。s 表示步幅。

Table 2. MobileNetV3-Small.

6. Experiments

6.1. Classification

作为标准,我们对所有分类实验使用 ImageNet并比较准确率。

6.1.1 Training setup

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

6.1.2 Measurement setup

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

6.2. Results

在下图中,我们展示了 MobileNetV3 性能权衡作为乘数和分辨率的函数。请注意,MobileNetV3-Small 如何优于 MobileNetV3-Large,乘数缩放以匹配性能近 3%。另一方面,分辨率提供了比乘数更好的权衡。然而,应该注意的是,分辨率通常由问题确定(例如分割和检测问题通常需要更高的分辨率),因此并不总是用作可调参数。MobileNetV3作为不同乘数和分辨率的函数的性能。在我们的实验中,我们使用了乘数 0.35、0.5、0.75、1.0 和 1.25,固定分辨率为 224,分辨率为 96、128、160、192、224 和 256,固定深度乘数为 1.0。

6.2.1 Ablation study

非线性的影响在表 5 中,我们研究了在哪里插入 h-swish 非线性以及在朴素实现上使用优化实现的改进的选择。可以看出,使用 h-swish 的优化实现可以节省 6ms(超过10%的运行时间)。与传统的 ReLU 相比,优化的 h-swish 只增加了额外的 1 毫秒。

下图显示了基于非线性选择和网络宽度的有效边界。MobileNetV3 在网络中间使用 h-swish,并清楚地支配 ReLU。在整个网络中添加 h-swish 略好于扩大网络的插值边界。

其他组件的影响:6.3. Detection

我们使用MobileNetV3作为SSDLite(SSDLite是一种轻量级的目标检测模型,专为移动和资源受限的环境设计。它基于SSD(Single Shot MultiBox Detector)模型,并对SSD的预测层进行了修改,将所有标准卷积替换为深度可分离卷积,从而显著降低了参数量和计算成本,提高了计算效率 )中骨干特征提取器的drop-in替换,并在COCO数据集上与其他骨干网进行比较。

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

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

COCO 测试集的结果如表 1 所示。6. 通过通道缩减,MobileNetV3-Large 比具有相同 mAP 的 MobileNetV2 快 27%。通道缩减的MobileNetV3-Small也是2.4和0.5 mAP,高于MobileNetV2和MnasNet,同时速度快35%。对于这两种MobileNetV3模型,信道缩减技巧在没有mAP损失的情况下贡献了大约15%的延迟减少,这表明Imagenet分类和COCO对象检测可能更喜欢不同的特征提取器形状。

6.4. Semantic Segmentation

在本小节中,我们使用MobileNetV2和提出的MobileNetV3作为移动语义分割任务的网络骨干。此外,我们比较了两个分割头。第一个,称为 R-ASPP,R-ASPP 是 Atrous 空间金字塔池模块 的简化设计,该模块仅采用由 1×1 卷积和全局平均池化操作组成的两个分支 。在这项工作中,我们提出了另一个轻量级的分割头,称为Lite R-ASPP(或LR-ASPP),如下图所示。Lite R-ASPP比R-ASPP有所改进,以类似于Squeeze-and-Excitation模块的方式部署全局平均池化,其中我们使用了一个大步幅(以节省一些计算)的大池内核,在模块中只有一个1 × 1卷积。我们将Atrous Convolution(空洞卷积(Atrous Convolution),也被称作扩张卷积(Dilated Convolution),是一种在卷积神经网络(CNN)中使用的卷积变体,它通过在卷积核的元素之间引入间隔来增大卷积核的感受野,而不增加卷积核的参数数量或计算复杂度。这种卷积方式特别适用于需要更大感受野但又希望保持较高分辨率特征图的场景,)应用于MobileNetV3的最后一个块以提取更密集的特征,并进一步从低层特征中添加跳过连接以捕获更详细的信息。

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

我们在表中报告了我们的 Cityscapes 验证集结果。如表所示,我们观察到(1)将网络主干最后一个块中的通道减少 2 倍显着提高了速度,同时保持相似的性能(第 1 行与第 2 行和第 5 行与第 6 行),(2)所提出的分割头 LR-ASPP 略快于 R-ASPP ,而性能有所提高(第 2 行与第 3 行和第 6 行与第 7 行),(3)将分割头中的过滤器从 256 减少到 128 可以提高速度,但代价是性能稍差(第 3 行与第 4 行和第 7 行与第 8 行),(4)使用相同的设置时,MobileNetV3 模型变体获得了相似的性能,同时略快于 MobileNetV2 对应物(第 1 行与第 5 行,第 2 行与第 6 行与第 7 行和第 4 行与第 8 行),(5) MobileNetV3-Small 的性能与 MobileNetV2-0.5 相似,而 (6) MobileNetV3-Small 明显优于 MobileNetV2-0.35,同时产生相似的速度。

城市景观测试集上的语义分割结果。OS:输出步幅,输入图像空间分辨率与主干输出分辨率的比率。当 OS = 16 时,在主干的最后一个块中应用了空洞卷积。当 OS = 32 时,不使用空洞卷积。MAdds (f):以全分辨率输入(即 1024 × 2048)测量的乘法加法。MAdds (h):乘法加法测量的 w.r.t 半分辨率输入(即 512 × 1024)。CPU (f):在像素 3(浮点)w.r.t 的单个大核心上测量的 CPU 时间。全分辨率输入(即 1024 × 2048)。CPU (h):CPU 时间测量 w.r.t。半分辨率输入(即 512 × 1024)。ESPNet[31,32]和CCC2[34]采用半分辨率输入,而我们的模型直接采用全分辨率输入。

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

Conclusions and future work

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

  • 12
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值