我们展示了基于互补搜索技术和新颖架构设计组合的下一代 MobileNet。 MobileNetV3 通过硬件感知网络架构搜索 (NAS) 与 NetAdapt 算法相结合的方式针对手机 CPU 进行调整,然后通过新颖的架构改进进行改进。本文开始探索自动搜索算法和网络设计如何协同工作以利用互补方法改进整体技术水平。通过这个过程,我们创建了两个新的 MobileNet 模型以供发布:MobileNetV3-Large 和 MobileNetV3-Small,它们分别针对高资源和低资源用例。然后对这些模型进行调整并将其应用于对象检测和语义分割的任务。对于语义分割(或任何密集像素预测)的任务,我们提出了一种新的高效分割解码器 Lite Reduced Atrous Spatial Pyramid Pooling (LR-ASPP)。我们在移动分类、检测和分割方面取得了最先进的成果。与 MobileNetV2 相比,MobileNetV3-Large 在 ImageNet 分类上的准确率提高了 3.2%,同时延迟降低了 20%。与延迟相当的 MobileNetV2 模型相比,MobileNetV3-Small 的准确度提高了 6.6%。 MobileNetV3-Large 检测速度快 25% 以上,准确率与 MobileNetV2 在 COCO 检测上大致相同。 MobileNetV3-Large LRASPP 比 MobileNetV2 R-ASPP 快 34%,Cityscapes 分割的准确度相似。
高效的神经网络在移动应用程序中变得无处不在,从而实现全新的设备体验。它们也是个人隐私的关键推动者,允许用户获得神经网络的好处,而无需将他们的数据发送到服务器进行评估。神经网络效率的提高不仅可以通过更高的准确性和更低的延迟来改善用户体验,还可以通过降低功耗来帮助延长电池寿命。
本文介绍了我们为开发 MobileNetV3 大型和小型模型而采用的方法,以提供下一代高精度、高效的神经网络模型,为设备上的计算机视觉提供动力。新网络推动了最先进的技术发展,并展示了如何将自动搜索与新颖的架构进步相结合以构建有效的模型。
本文的目标是开发最佳的移动计算机视觉架构,优化移动设备上的准确性延迟权衡。为实现这一目标,我们引入了 (1) 互补搜索技术,(2) 适用于移动设置的新型高效非线性版本,(3) 新型高效网络设计,(4) 新型高效分段解码器。我们提供了全面的实验,证明了在广泛的用例和手机上评估的每种技术的功效和价值。
本文的结构如下。我们从第 2 节中相关工作的讨论开始。第 3 节回顾了用于移动模型的有效构建块。第 4 节回顾了架构搜索以及 MnasNet 和 NetAdapt 算法的互补性。第 5 节描述了改进通过联合搜索找到的模型效率的新颖架构设计。第 6 节介绍了用于分类、检测和分割的广泛实验,以证明功效并了解不同元素的贡献。第 7 节包含结论和未来的工作。
近年来,设计深度神经网络架构以实现准确性和效率之间的最佳权衡一直是一个活跃的研究领域。新颖的手工结构和算法神经结构搜索都在推动这一领域发挥了重要作用。
SqueezeNet [22] 广泛使用 1x1 卷积和挤压和扩展模块,主要侧重于减少参数数量。最近的工作将重点从减少参数转移到减少操作数 (MAdds) 和实际测量的延迟。 MobileNetV1[19] 采用深度可分离卷积来大幅提高计算效率。 MobileNetV2[39] 通过引入具有反向残差和线性瓶颈的资源高效块对此进行了扩展。 ShuffleNet[49] 利用组卷积和通道洗牌操作进一步减少 MAdds。CondenseNet[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] 提供了一种额外的补充方法,可以在大型“教师”网络的指导下生成小型准确的“学生”网络。
Mobile模型建立在越来越高效的构建块之上。 MobileNetV1 [19] 引入了深度可分离卷积作为传统卷积层的有效替代。深度可分离卷积通过将空间过滤与特征生成机制分离,有效地分解了传统卷积。深度可分离卷积由两个单独的层定义:用于空间过滤的轻量级深度卷积和用于特征生成的较重的 1x1 逐点卷积。
MobileNetV2 [39] 引入了线性瓶颈和倒置残差结构,以便利用问题的低秩性质来制作更高效的层结构。这种结构如图 3 所示,由 1x1 扩展卷积、深度卷积和 1x1 投影层定义。当且仅当它们具有相同数量的通道时,输入和输出才与剩余连接相连。该结构在输入和输出处保持紧凑表示,同时在内部扩展到更高维的特征空间以增加非线性每通道变换的表现力。
MnasNet [43] 通过在瓶颈结构中引入基于挤压和激励的轻量级注意力模块,建立在 MobileNetV2 结构之上。请注意,挤压和激励模块集成在与 [20] 中提出的基于 ResNet 的模块不同的位置。该模块放置在扩展中的深度过滤器之后,以便将注意力应用于最大的表示,如图 4 所示。
对于 MobileNetV3,我们使用这些层的组合作为构建块,以构建最有效的模型。层也通过改进的 swish 非线性进行升级 [36、13、16]。 squeeze 和 excitation 以及 swish 非线性都使用 sigmoid,这种方法计算效率低下,并且难以保持定点算法的准确性,因此我们将其替换为硬 sigmoid [2, 11],如第 5.2 节所述。
网络搜索已证明自己是发现和优化网络架构的非常强大的工具 [53、43、5、48]。对于 MobileNetV3,我们使用平台感知 NAS 通过优化每个网络块来搜索全局网络结构。然后我们使用 NetAdapt 算法在每层中搜索过滤器的数量。这些技术是互补的,可以结合起来有效地为给定的硬件平台找到优化的模型。
与 [43] 类似,我们采用平台感知神经架构方法来查找全局网络结构。由于我们使用相同的基于 RNN 的控制器和相同的分解分层搜索空间,我们发现与 [43] 类似的大型移动设备结果目标延迟约为 80 毫秒的模型。因此,我们简单地重复使用相同的 MnasNet-A1 [43] 作为我们的初始大型移动模型,然后在其之上应用 NetAdapt [48] 和其他优化。
然而,我们观察到原始奖励设计并未针对小型移动模型进行优化。具体来说,它使用多目标奖励 ACC(m) × [LAT (m)/T AR]w 来近似帕累托最优解,通过平衡每个模型 m 的模型精度 ACC(m) 和延迟 LAT (m)在目标延迟 T AR 上。我们观察到,对于小型模型,准确度随延迟的变化更为显着;因此,我们需要一个较小的权重因子 w = −0.15(与 [43] 中的原始 w = −0.07 相比)来补偿不同延迟的较大准确度变化。通过这个新的权重因子 w 增强,我们开始新的架构搜索从头开始找到初始种子模型,然后应用 NetAdapt 和其他优化获得最终的 MobileNetV3-Small 模型。
我们在架构搜索中采用的第二种技术是 NetAdapt [48]。这种方法是对平台感知 NAS 的补充:它允许以顺序方式微调各个层,而不是试图推断粗糙但全局的架构。我们参考原始论文以获取完整详细信息。简而言之,该技术进行如下:
1.从平台感知 NAS 发现的种子网络架构开始。
2.对于每一步:
(a)生成一组新提案。每个提议都代表对架构的修改,与上一步相比,该架构至少减少了 δ 个延迟
(b)对于每个提议,我们使用上一步中的预训练模型并填充新提议的架构,适当地截断和随机初始化缺失的权重。微调 T 步骤的每个建议以获得准确度的粗略估计。
©根据一些指标选择最佳提案。
3.重复上一步,直到达到目标延迟。
在 [48] 中,度量是最小化精度变化。我们修改了这个算法并最小化了延迟变化和精度变化之间的比率。也就是说,对于在每个 NetAdapt 步骤中生成的所有提案,我们选择一个最大化的提案: △ A c c ∣ △ l a t e n c y ∣ \frac{\vartriangle Acc}{\vert \vartriangle latency\vert} ∣△latency∣△Acc ,其中 Δlatency 满足 2(a) 中的约束。直觉是因为我们的提议是离散的,所以我们更喜欢最大化权衡曲线斜率的提议。
重复此过程,直到延迟达到其目标,然后我们从头开始重新训练新架构。我们使用与 [48] 中用于 MobilenetV2 相同的提案生成器。具体来说,我们允许以下两种类型的提案:
1.减少任何扩展层的大小;
2.减少共享相同瓶颈大小的所有块中的瓶颈 - 以保持剩余连接。
在我们的实验中,我们使用 T = 10000 并发现虽然它提高了提案初始微调的准确性,但它并没有改变从头开始训练时的最终准确性。我们设置 δ = 0.01|L|,其中 L 是种子模型的延迟。
除了网络搜索,我们还在模型中引入了几个新组件,以进一步改进最终模型。我们重新设计了网络开头和结尾的计算量大的层。我们还引入了一种新的非线性,h-swish,它是最近 swish 非线性的修改版本,它计算速度更快,量化更友好。
通过架构搜索找到模型后,我们观察到一些最后的层以及一些较早的层比其他层更昂贵。我们建议对架构进行一些修改,以减少这些慢速层的延迟,同时保持准确性。这些修改超出了当前搜索空间的范围。
第一个修改重新设计了网络的最后几层如何交互,以便更有效地生成最终功能。当前基于 MobileNetV2 的倒置瓶颈结构和变体的模型使用 1x1 卷积作为最后一层,以便扩展到更高维的特征空间。为了具有丰富的预测特征,该层非常重要。然而,这是以额外的延迟为代价的。
为了减少延迟并保留高维特征,我们将该层移动到最终的平均池化之后。这最后一组特征现在以 1x1 空间分辨率而不是 7x7 空间分辨率计算。这种设计选择的结果是,在计算和延迟方面,特征的计算变得几乎免费。
一旦降低了这个特征生成层的成本,就不再需要以前的瓶颈投影层来减少计算量。这一观察使我们能够删除先前瓶颈层中的投影和过滤层,进一步降低计算复杂度。原始和优化的最后阶段如图 5 所示。高效的最后阶段将延迟减少了 7 毫秒,即运行时间的 11%,并将操作次数减少了 3000 万次 MAdds,几乎没有损失精度。第 6 节包含详细的结果。
另一个昂贵的层是初始过滤器集。当前的移动模型倾向于在完整的 3x3 卷积中使用 32 个滤波器来构建用于边缘检测的初始滤波器组。通常这些过滤器是彼此的镜像。我们尝试减少滤波器的数量并使用不同的非线性来尝试减少冗余。我们决定对该层使用 hard swish 非线性,因为它的性能以及测试的其他非线性。我们能够将过滤器的数量减少到 16 个,同时使用 ReLU 或 swish 保持与 32 个过滤器相同的精度。这又节省了 2 毫秒和 1000 万个 MAdd。
在 [36, 13, 16] 中引入了一种称为 swish 的非线性,当用作 ReLU 的直接替代品时,它显着提高了神经网络的准确性。非线性定义为
s w i s h x = x ⋅ σ ( x ) swish x=x\cdot \sigma(x) swishx=x⋅σ(x)
虽然这种非线性提高了准确性,但它在嵌入式环境中带来了非零成本,因为 sigmoid 函数在移动设备上的计算成本要高得多。我们以两种方式处理这个问题。
h − s w i s h [ x ] = x R e L U 6 ( x + 3 ) 6 h-swish[x]=x\frac{ReLU6(x+3)}{6} h−swish[x]=x6ReLU6(x+3)
最近在 [2] 中也提出了类似版本的 hard-swish。图 6 显示了 sigmoid 和 swish 非线性的软硬版本的比较。我们选择常数的动机是简单并且与原始平滑版本非常匹配。在我们的实验中,我们发现所有这些函数的硬版本在准确性上没有明显差异,但从部署角度来看具有多重优势。首先,ReLU6 的优化实现几乎适用于所有软件和硬件框架。其次,在量化模式下,它消除了由近似 sigmoid 的不同实现引起的潜在数值精度损失。最后,在实践中,h**-swish 可以作为分段函数来实现,以减少内存访问次数,从而大大降低延迟成本**。
2.随着我们深入网络,应用非线性的成本会降低,因为每次分辨率下降时,每层激活记忆通常都会减半。顺便说一句,我们发现 swish 的大部分好处是通过仅在更深层使用它们来实现的。因此,在我们的架构中,我们仅在模型的后半部分使用 h-swish。我们参考表 1 和表 2 的精确布局。
即使进行了这些优化,h-swish 仍然会引入一些延迟成本。然而,正如我们在第 6 节中展示的那样,在没有优化的情况下,在使用基于分段函数的优化实现时,对准确性和延迟的净影响是积极的.
在 [43] 中,挤压和激发瓶颈的大小是相对于卷积瓶颈的大小。相反,我们将它们全部替换为固定为扩展层通道数的 1/4。我们发现这样做可以提高准确性,适度增加参数数量,并且没有明显的延迟成本。
MobileNetV3 被定义为两个模型:MobileNetV3Large 和 MobileNetV3-Small。这些模型分别针对高资源和低资源用例。这些模型是通过应用平台感知 NAS 和 NetAdapt 进行网络搜索并结合本节中定义的网络改进而创建的。有关我们网络的完整规格,请参见表 1 和表 2。
我们提供实验结果来证明新的 MobileNetV3 模型的有效性。我们报告分类、检测和分割的结果。我们还报告了各种消融研究,以阐明各种设计决策的影响。
作为标准,我们使用 ImageNet [38] 进行所有分类实验,并将准确性与各种资源使用量度(例如延迟和乘法加法(MAdds))进行比较。
我们使用具有 0.9 动量的标准张量流 RMSPropOptimizer 在 4x4 TPU Pod [24] 上使用同步训练设置来训练我们的模型。我们使用 0.1 的初始学习率,批量大小为 4096(每个芯片 128 张图像),每 3 个时期学习率衰减率为 0.01。我们使用 0.8 的 dropout 和 l2 权重衰减 1e-5 以及与 Inception [42] 相同的图像预处理。最后,我们使用衰减为 0.9999 的指数移动平均线。我们所有的卷积层都使用平均衰减为 0.99 的批量归一化层。
为了测量延迟,我们使用标准的 Google Pixel 手机并通过标准的 TFLite 基准工具运行所有网络。我们在所有测量中都使用单线程大内核。我们没有报告多核推理时间,因为我们发现这种设置对于移动应用程序不太实用。我们为 tensorflow lite 贡献了一个原子 h-swish 运算符,现在它在最新版本中是默认的。我们在图 9 中展示了优化后的 h-swish 的影响。
如图 1 所示,我们的模型优于当前最先进的技术,例如 MnasNet [43]、ProxylessNas [5] 和 MobileNetV2 [39]。我们在表 3 中报告了不同 Pixel 手机上的浮点性能。我们在表 4 中包含了量化结果。
在图 7 中,我们将 MobileNetV3 性能权衡显示为乘数和分辨率的函数。请注意 MobileNetV3-Small 如何优于 MobileNetV3Large,乘数缩放以匹配性能近 3%。另一方面,分辨率提供了比乘数更好的权衡。然而,需要注意的是,分辨率往往是由问题决定的(例如分割和检测问题通常需要更高的分辨率),因此不能总是作为可调参数使用。
Impact of non-linearities(非线性的影响) 在表 5 中,我们研究了插入 h-swish 非线性的位置的选择,以及使用优化实现相对于原始实现的改进。可以看出,使用 h-swish 的优化实现节省了 6ms(超过 10% 的运行时间)。与传统的 ReLU 相比,优化的 h-swish 仅增加了 1ms。
图 8 显示了基于非线性选择和网络宽度的有效边界。 MobileNetV3 在网络中间使用了 h-swish,明显优于 ReLU。有趣的是,在整个网络中加入 h-swish 比加宽网络的插值前沿略好。
Impact of other components(其他组件的影响) 在图 9 中,我们展示了不同组件的引入如何沿着延迟/准确度曲线移动。
我们使用 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 时这可能是多余的。
COCO 测试集的结果在表 6 中给出。随着通道的减少,MobileNetV3-Large 比 MobileNetV2 快 27%,且 mAP 几乎相同。减少通道的 MobileNetV3Small 也比 MobileNetV2 和 MnasNet 高 2.4 和 0.5 mAP,同时速度提高了 35%。对于这两个 MobileNetV3 模型,通道减少技巧有助于减少大约 15% 的延迟,并且没有 mAP 损失,这表明 Imagenet 分类和 COCO 对象检测可能更喜欢不同的特征提取器形状。
在本小节中,我们使用 MobileNetV2 [39] 和建议的 MobileNetV3 作为移动语义分割任务的网络主干。此外,我们比较了两个分割头。第一个,称为 R-ASPP,在 [39] 中提出。 R-ASPP 是 Atrous Spatial Pyramid Pooling 模块 [7, 8, 9] 的缩减设计,它仅采用由 1 × 1 卷积和全局平均池化操作组成的两个分支 [29, 50]。在这项工作中,我们提出了另一种轻量级分割头,称为 Lite R-ASPP(或 LR-ASPP),如图 10 所示。Lite R-ASPP 改进了 R-ASPP,将全局平均池化部署在类似于 Squeeze-and-Excitation 模块 [20] 的方式,其中我们使用一个大步幅的大池核(以节省一些计算)并且在模块中只有一个 1×1 卷积。我们应用 atrous convolution [18, 40, 33, 6] 到 MobileNetV3 的最后一个块以提取更密集的特征,并进一步从低级特征添加跳跃连接 [30] 以捕获更详细的信息。
我们使用度量 mIOU [14] 在 Cityscapes 数据集 [10] 上进行实验,并且仅利用“精细”注释。我们采用与 [8, 39] 相同的训练协议。我们所有的模型都是从头开始训练的,没有在 ImageNet [38] 上进行预训练,并使用单尺度输入进行评估。与对象检测类似,我们观察到我们可以在不显着降低性能的情况下将网络主干的最后一个块中的通道减少 2 倍。我们认为这是因为主干是为 1000 个类别的 ImageNet 图像分类 [38] 而设计的,而 Cityscapes 上只有 19 个类别,这意味着主干中存在一些通道冗余。
我们在 Tab7 中报告了我们的 Cityscapes 验证集结果。如表中所示,我们观察到 (1) 将网络主干的最后一个块中的通道减少 2 倍显着提高了速度,同时保持相似的性能(第 1 行与第 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,同时 yielding 相似的速度。
Tab8 显示了我们的 Cityscapes 测试集结果。我们以 MobileNetV3 作为网络主干的分割模型分别优于 ESPNetv2 [32]、CCC2 [34] 和 ESPNetv1 [32] 6.4%、10.6%、12.3%,同时在 MAdds 方面更快。在MobileNetV3的最后一个block中不使用atrous convolution提取dense feature maps时性能略有下降0.6%,但是速度提升到1.98B(对于半分辨率输入),分别是1.36、1.59和2.27倍分别比 ESPNetv2、CCC2 和 ESPNetv1 快。此外,我们使用 MobileNetV3-Small 作为网络主干的模型仍然优于所有模型,至少高出 2.1%。
在本文中,我们介绍了 MobileNetV3 Large 和 Small 模型,展示了移动分类、检测和分割方面的最新技术水平。我们已经描述了我们利用多种网络架构搜索算法以及网络设计进步来交付下一代移动模型的努力。我们还展示了如何以量化友好和高效的方式适应 swish 等非线性并应用挤压和激发,将它们作为有效工具引入移动模型领域。我们还介绍了一种称为 LR-ASPP 的新型轻量级分段解码器。虽然如何最好地将自动搜索技术与人类直觉相结合仍然是一个悬而未决的问题,但我们很高兴展示这些初步的积极结果,并将在未来的工作中继续改进方法。
致谢: 我们要感谢 Andrey Zhmoginov、Dmitry Kalenichenko、Menglong Zhu、Jon Shlens、Xiao Zhang、Benoit Jacob、Alex Stark、Achille Brighton 和 Sergey Ioffe 提供的有益反馈和讨论。