文 / Andrew Howard 和 Suyog Gupta,Google Research
要想实现隐私安全、高可用以及智能响应,设备端机器学习 (on-device ML) 必定是重要的组成部分。然而将高能耗的设备端机器学习引入功率有限的计算设备,这就需开发出算法效率更高的神经网络模型,以及设计出在消耗几毫瓦功率的同时执行每秒数十亿次数学运算的硬件。
最近发布的 Google Pixel 4 就验证了这一趋势。这台设备搭载了 Pixel Neural Core,不仅采用了 Edge TPU 硬件架构、适用于边缘计算设备的 Google 机器学习加速器,还包含能提升 Pixel 4 用户体验的诸多功能(如人脸解锁、响应更快的 Google 助理和强大的摄像功能)。在成功实现设备端机器学习的过程中,MobileNets 等算法同样至关重要,因为它能为移动视觉应用提供精简而高效的神经网络模型。
今天,我们很高兴发布 MobileNetV3 模型和为 Pixel 4 Edge TPU 优化的 MobileNetEdgeTPU 模型的源代码和 checkpoints。这些模型采用最新的硬件感知 AutoML 技术与最前沿的架构设计,是目前的巅峰之作。在移动 CPU 上,MobileNetV3 的运算速度是 MobileNetV2 的两倍,且精度相当,同时这也推动了移动计算机视觉网络的最优结果 (state-of-the-art)。借助 Pixel 4 Edge TPU 硬件加速器,MobileNetEdgeTPU 模型实现了进一步突破,在提高模型的精度的同时减少运行时间和功耗。
构建 MobileNetV3
与上一个手动设计的 MobileNet 模型版本相比,MobileNetV3依靠AutoML在对移动设备上的计算机视觉任务友好的搜索空间中寻找最佳架构。为了最高效地利用这个搜索空间,我们先后引进了两项技术:MnasNet 和 NetAdapt。
首先,我们使用 MnasNet 搜索粗粒度架构,该技术利用强化学习从一组离散选项集中选择最优配置。然后,我们使用 NetAdapt 对该架构进行调优,NetAdapt 是一种补充技术,可以较小幅度减少未充分利用的激活通道。为了在不同条件下均能提供最佳性能,我们制作了一大一小两种模型(参见下图):
使用 Google Pixel 4 CPU 处理 ImageNet 分类任务时的精度和延迟对比。左图:小模型的 Top 1 精度与 CPU 耗时,右图:大模型的 Top 1 精度与 CPU 耗时
MobileNetV3 搜索空间
MobileNetV3 搜索空间基于适应移动环境的新型架构设计。首先,我们引入一个基于 Swish 非线性函数的新激活函数,称为 Hard-Swish (H-Swish)。Swish 函数的主要缺点是在移动硬件上的计算效率非常低。所以,我们转而使用一个近似函数,它是两个分段线性函数的乘积,从而提高效率。
下一步,我们引入对移动环境友好的 Squeeze-and-Excitation 模块,它可以将传统的 Sigmoid 函数替换为近似的分段线性函数。
通过将 H-Swish 和对移动环境友好的 Squeeze-and-Excitation 与 MobileNetV2 中使用的 Inverted Bottleneck 结构的修改版本相结合,我们生成了适用于 MobileNetV3 的新构建块。
MobileNetV3 通过添加 h-swish 和对移动环境友好的 squeeze-and-excitation 作为可搜索选项,扩展了 MobileNetV2 的 Inverted Bottleneck 结构
每个分辨率模块的层数
此外,我们还在网络的最后部分引入了一种新的高效处理架构,将延迟时间进一步缩短 15%。
MobileNetV3 物体检测和语义分割
除了分类模型,我们还引入了 MobileNetV3 物体检测模型。在相同精度的情况下,MobileNetV3 相较于 MobileNetV2 在 COCO 数据集上的检测延迟时间缩短了 25%。
为了优化 MobileNetV3 以实现高效的语义分割,我们引入了低延迟分割解码器,即 “Lite Reduced Atrous Spatial Pyramid Pooling”(LR-SPP)。这种新解码器包含三个分支,一个用于低精度语义特征,一个用于高精度细节特征,最后一个用于轻量级注意力机制。结合 LR-SPP 和 MobileNetV3 后,我们在高精度 Cityscapes 数据集的处理延迟时间缩短了 35% 以上。
MobileNet for Edge TPU
Pixel 4 的 Edge TPU 在架构上与 Coral 产品线的 Edge TPU 类似,但前者需进行定制,以便满足 Pixel 4 相机的关键功能。加速器感知的 AutoML 方法可大大减少在为硬件加速器设计和优化神经网络时所需的手动操作。构建神经架构搜索空间是该方法的重要环节,其重点在于添加可提高硬件利用率的神经网络操作。实践证明,尽管 Squeeze-and-Excite 和非线性 Swish 这样的操作在构建精简且快速的 CPU 模型中发挥重要作用,但它们在 Edge TPU 上的性能并非最优,因此被排除在搜索空间之外。迷你版的 MobileNetV3 也放弃使用这些操作(如 Squeeze-and-Excite、Swish 和 5x5 卷积),以便能更轻松地移植到其他各类硬件加速器(如 DSP 和 GPU)。
通过激励神经网络架构搜索同时优化模型精度和 Edge TPU 延迟,我们得到了 MobileNetEdgeTPU 模型,这种模型与现有的移动模型(如 MobileNetV2 和迷你版 MobileNetV3)相比可实现固定精度与较低延迟(或固定延迟与较高精度)。相较于 EfficientNet-EdgeTPU 模型(针对 Coral 中的 Edge TPU 进行了优化),这些模型虽然会损失一些精度,但在 Pixel 4 上运行时的延迟却低得多。
虽然减少模型的功耗并非搜索目标的一部分,但降低 MobileNetEdgeTPU 模型的延迟也有助于减少 Edge TPU 的平均功耗。在精度相当的情况下,MobileNetEdgeTPU 模型的功耗比简约型 MobileNetV3 模型要低 50%。
左图:不同模型在 Pixel4 Edge TPU 上执行 ImageNet 分类任务的延迟与精度。结果表明,与其他模型相比,MobileNetEdgeTPU 实现了更高的精度和更低的延迟;右图:不同模型在 Pixel4 Edge TPU 上以 30 帧 (FPS) 执行 ImageNet 分类任务的平均功率与精度
使用 MobileNetEdgeTPU 进行物体检测
MobileNetEdgeTPU 分类模型还可充当物体检测任务的高效特征提取器。与基于 MobileNetV2 的检测模型相比,在 Edge TPU 运行时间相当的情况下,MobileNetEdgeTPU 模型在处理 COCO14 minival 数据集时可显著提高模型质量(按平均精度均值 [mAP] 评估)。MobileNetEdgeTPU 检测模型的延迟为 6.6 毫秒,mAP 评分为 24.3;而基于 MobileNetV2 的检测模型的延迟为 6.8 毫秒, mAP 评分为 22。
对硬件感知模型的需求
虽然前文展示了 MobileNetEdgeTPU 模型的功率、性能和质量优势,但需要注意的是,这些改进是通过定制模型并且在 Edge TPU 加速器上运行所实现的。
然而在移动 CPU 上运行时,MobileNetEdgeTPU 模型的性能要低于那些专门针对移动 CPU (MobileNetV3) 进行调优的模型。MobileNetEdgeTPU 模型会执行更多操作,这样自然会减慢在移动 CPU 上的运行速度,此时模型的计算需求和运行时间之间呈现出线性增加的关系。
当模型部署在移动 CPU 而非 TPU 时,MobileNetV3 仍然是性能最好的网络
研究员和开发者须知
如需获取 MobileNetV3 和 MobileNetEdgeTPU 代码,以及 ImageNet 分类的浮点和量化 checkpoints,请访问 MobileNet GitHub 页面:
https://github.com/tensorflow/models/tree/master/research/slim/nets/mobilenet
如需获取 MobileNetV3 和 MobileNetEdgeTPU 物体检测的开源实现,请访问 Tensorflow Object Detection API:
https://github.com/tensorflow/models/tree/master/research/object_detection
如需获取 MobileNetV3 语义分割的开源实现,请访问 TensorFlow 的 DeepLab:
https://github.com/tensorflow/models/tree/master/research/deeplab
致谢
这项工作由 Google 的多个团队协作完成。我们要感谢以下人员做出的贡献:Berkin Akin、Okan Arikan、Gabriel Bender、Bo Chen、Liang-Chieh Chen、Grace Chu、Eddy Hsu、John Joseph、Pieter-jan Kindermans、Quoc Le、Owen Lin、Hanxiao Liu、Yun Long、Ravi Narayanaswami、Ruoming Pang、Mark Sandler、Mingxing Tan、Vijay Vasudevan、Weijun Wang、Dong Hyuk Woo、Dmitry Kalenichenko、Yunyang Xiong、Yukun Zhu。同时,感谢 Hartwig Adam、Blaise Agüera y Arcas、Chidu Krishnan 和 Steve Molloy 提供的支持。
如果您想详细了解 本文提及 的相关内容,请参阅以下文档。这些文档深入探讨了这篇文章中提及的许多主题:
Pixel Neural Core
https://blog.google/products/pixel/pixel-4/
Edge TPU
https://cloud.google.com/edge-tpu/
MobileNets
https://ai.googleblog.com/2017/06/mobilenets-open-source-models-for.html
MobileNetV3
https://arxiv.org/abs/1905.02244
MobileNetEdgeTPU
https://github.com/tensorflow/models/tree/master/research/slim/nets/mobilenet
AutoML
https://ai.googleblog.com/2017/05/using-machine-learning-to-explore.html
MobileNetV2/上一个手工设计的 MobileNet 版本
https://ai.googleblog.com/2018/04/mobilenetv2-next-generation-of-on.html
MnasNet
https://ai.google/research/pubs/pub47217/
NetAdapt
https://arxiv.org/pdf/1804.03230
ImageNet
http://www.image-net.org/
Swish
https://arxiv.org/pdf/1710.05941
Squeeze-and-Excitation
https://arxiv.org/abs/1709.01507
Inverted Bottleneck 结构
https://arxiv.org/abs/1801.04381
COCO 数据集
http://cocodataset.org/#detection-eval
Cityscapes 数据集
https://www.cityscapes-dataset.com/
Coral
https://coral.withgoogle.com/products/
COCO14 minival 数据集
http://cocodataset.org/#detection-eval