点击我爱计算机视觉标星,更快获取CVML新技术


本文转载自机器之心。

选自Google AI Blog

作者:Andrew Howard

机器之心编译

参与:王子嘉、Geek AI

说到今年最热门的智能手机,一定绕不开谷歌重磅推出的 Pixel 4。而 Pixel 4 的强大性能表现在很大程度上还要归功于其背后用到的黑科技——基于终端设备的机器学习。前段时间,谷歌发布了 MobileNetV3 和 MobileNetEdgeTPU 的源代码,让我们一探究竟吧!

基于终端设备的机器学习(On-device machine learning)是实现具有隐私保护功能、能够时刻运转、快速响应的智能的重要组成部分。这就要求我们将基于终端的机器学习部署在算力有限的设备上,从而推动了从算法意义上来说高效的神经网络模型的研究,以及每秒可执行数十亿次数学运算却只需要消耗几毫瓦电力的硬件的发展。最近发布的「Google Pixel 4」就是这一发展趋势的代表。

「Google Pixel 4」搭载了 Pixel 神经核心,它包含了 Edge TPU 架构的实例和 Google 用于边缘计算设备的机器学习加速器,这增强了 Pixel 4 的用户体验,比如更好的面部解锁功能,更快的 Google 助手以及独特的相机功能。同时,MobileNet 之类的算法为移动视觉应用程序提供了紧凑而高效的神经网络模型,是基于终端的机器学习成功的重要因素。

去年 11 月,谷歌发布了 MobileNetV3 和进行了 Pixel 4 Edge TPU 优化后的 MobileNetEdgeTPU 模型的源代码及检查点(checkpoint)。这些模型是最新的可感知硬件(hardware-aware)的自动机器学习(AutoML)技术与一些新型架构设计的结晶。

在移动版 CPU 上,MobileNetV3 的速度是 MobileNetV2 的两倍(准确率相同的情况下),它也刷新了移动计算机视觉网络目前最佳的性能。在 Pixel 4 Edge TPU 硬件加速器上,MobileNetEdgeTPU 模型在提高模型准确性的同时减少了运行时间和功耗,这个进展进一步突破了这一领域的极限。

构建 MobileNetV3

与之前手动设计的 MobileNet 相比,MobileNetV3 的搜索空间是适用于移动计算机视觉任务的,它在搜索空间中通过 AutoML 技术找到可能的最佳架构。为了最有效地利用搜索空间,谷歌依次部署了两种技术:MnasNet 和 NetAdapt。首先,MnasNet 使用强化学习从一组离散的选项中选择出最优配置,从而找到一个粗糙的架构。然后,谷歌使用 NetAdapt 对体系结构进行微调,NetAdapt 是一种补充性技术,可以对未充分利用的激活通道进行微调。为了得到在不同条件下的最佳性能,谷歌分别生成了大型模型和小型模型。

使用 Google Pixel 4 CPU 在 ImageNet 分类任务上对于移动模型的准确性和延迟的比较。

MobileNetV3 的搜索空间

谷歌在适应移动环境的架构设计上取得了多项进展,MobileNetV3 的搜索空间就建立在这些进展的基础之上。首先,谷歌引入了一种基于 Swish 非线性函数的、被称为 hard-swish(h-swish)的新激活函数。Swish 函数的主要缺点是其在移动硬件上的计算效率很低。因此,谷歌使用了一种可以由两个分段线性函数的乘积表示的近似方案。

接下来将介绍适用于移动设备的挤压激励块(squeeze-and-excitation),该块利用分段线性近似代替了传统的 sigmoid 函数。

在 h-swish 的基础上加上适用于移动设备的挤压激励块,并与改进后的 MobileNetV2 中的倒瓶颈结构相结合,就形成了 MobileNetV3 的一个新的构建块。

MobileNetV3 通过添加 h-swish 和适用于移动设备的挤压激励块扩展了 MobileNetV2 的倒瓶颈结构,并以此作为可搜索的选项。

以下参数定义了构造 MobileNetV3 时使用的搜索空间:

  • 扩展层大小

  • 挤压激励块压缩度

  • 激活函数的选择:h-swish 或 ReLU

  • 每个分辨率块的层数

谷歌还在网络末端引入了一个新的高效的最后阶段,可将延迟进一步降低 15%。

MobileNetV3 的目标检测和语义分割

除了分类模型之外,谷歌还引入了 MobileNetV3 目标检测模型,该模型在 COCO 数据集上比 MobileNetV2 减少了 25% 的检测延迟(准确率相同的情况下)。

为了优化 MobileNetV3 以进行有效的语义分割,谷歌引入了一个低延迟分割解码器,将其称之为「Lite reduce Atrous Spatial Pyramid Pooling」(LR-SPP)。这个新的解码器包含三个分支,一个分支用于低分辨率语义特征,一个用于高分辨率细节,一个用于轻量级注意力机制。LR-SPP 和 MobileNetV3 的组合在高分辨率的 Cityscapes 数据集上减少了超过 35% 的延迟。

用于 Edge TPUs 的 MobileNet

Pixel 4 中的 Edge TPU 在结构上与 Coral 产品线中的 Edge TPU 相似,但经过定制后,可以满足 Pixel 4 中相机的关键功能的要求。可感知加速器的 AutoML 方法大大减少了为硬件加速器设计和优化神经网络的手工过程。构建神经架构搜索空间是这种方法的重要一环,它以已知可以提高硬件利用率的神经网络操作为中心。尽管诸如「挤压-激励块」和「swish 非线性」等操作已被证明是构建紧凑而快速的 CPU 模型的关键,但这些操作在 Edge TPU 上的执行效果往往欠佳,因此被排除在搜索空间之外。为了能够更容易地移植到其它各种硬件加速器上(如 DSP 和 GPU),简化版的 MobileNetV3 变种也放弃了对这些操作的使用(例如,挤压-激励、swish、以及 5x5 卷积)。

谷歌鼓励神经网络架构搜索算法同时优化模型的准确率和 EdgeTPU 延迟,从而生成了 MobileNetEdgeTPU 模型,该模型与现有的移动版模型(如 MobileNetV2 和简化版的 MobileNetV3)相比,可以在准确率相当的情况下具有更低的延迟(或在同等延迟的基础上达到更高的准确率)。与 EfficientNet-EdgeTPU 模型(针对 Coral 中的 Edge TPU 进行了优化)相比,这些模型在 Pixel 4 上的运行延迟要低得多(尽管会损失一部分准确率)。

虽然降低模型的功耗不是搜索目标的一部分,但 MobileNetEdgeTPU 模型的低延迟也有助于降低 Edge TPU 的平均功耗。在准确率相当的情况下,MobileNetEdgeTPU 模型消耗的能量不到简化版的 MobileNetV3 模型的 50%。

左图:在 Pixel4 EdgeTPU 上运行时,MobileNetEdgeTPU 与其它为移动设备设计的图像分类网络在 ImageNet 分类任务上的准确率比较。与其它模型相比,MobileNetEdgeTPU 具有更高的准确率和更低的延迟。右图:每秒运行 30 帧(fps)的不同分类模型的在 Edge TPU 上的平均功率(瓦特)。

使用 MobileNetEdgeTPU 进行目标检测

在目标检测任务中,MobileNetEdgeTPU 分类模型也可以看作一个有效的特征提取器。与基于 MobileNetV2 的检测模型相比,在 Edge TPU 上可比较的运行时上,MobileNetEdgeTPU 模型大大提高了在「COCO14 minival」数据集上的模型质量(通过平均精度均值(mean average precision,mAP)衡量)。MobileNetEdgeTPU 检测模型的延迟为 6.6ms, mAP 评分为 24.3,而基于 mobilenetv2 的检测模型 mAP 为 22,每次推理需要 6.8ms。

对于可感知硬件的模型的需求

虽然上面提到的结果突出了 MobileNetEdgeTPU 模型在功率、性能和质量方面的优势,但是需要注意的是,之所以有这些进步,是由于这些模型专门为 EdgeTPU 加速器定制。

在移动版 CPU 上运行时,MobileNetEdgeTPU 的性能要低于专门针对移动版 CPU 进行调优的模型(MobileNetV3)。MobileNetEdgeTPU 模型执行的操作要多得多,因此,它们在移动版 CPU 上运行得更慢也就不足为奇了,移动版 CPU 在模型的计算需求和运行时之间有更线性的关系。

当部署目标是移动版 CPU 时,MobileNetV3 依旧是最好的模型。

致研究员与开发者

MobileNetV3 和 MobileNetEdgeTPU 的代码,以及用于 ImageNet 分类的浮点和量化的检查点,都可以在 MobileNet 的 github 主页上找到:https://github.com/tensorflow/models/tree/master/research/slim/nets/mobilenet。

在 Tensorflow 目标检测 API 中提供了 MobileNetV3 和 MobileNetEdgeTPU 目标检测的开源实现:https://github.com/tensorflow/models/tree/master/research/object_detection。

MobileNetV3 语义分割的 TensorFlow 版开源实现可以在 DeepLab 中找到:https://github.com/tensorflow/models/tree/master/research/object_detection。

原文链接:

http://ai.googleblog.com/2019/11/introducing-next-generation-on-device.html


模型压缩与应用部署学习群

学习交流模型压缩、知识蒸馏、推理加速、应用部署技术,扫码添加CV君拉你入群,如已为CV君其他账号好友请直接私信,

(请务必注明:部署):

喜欢在QQ交流的童鞋可以加52CV官方QQ群:805388940。

(不会时时在线,如果没能及时通过还请见谅)


长按关注我爱计算机视觉

数十亿次数学运算只消耗几毫瓦电力,谷歌开源Pixel 4背后的视觉模型相关推荐

  1. java 十亿数据去重_如何在有限的内存限制下实现数十亿级手机号码去重

    版权申明 原创文章:本博所有原创文章,欢迎转载,转载请注明出处,并联系本人取得授权. 版权邮箱地址:banquan@mrdwy.com 问题难点 文本和数据的去重是经常要用到的重要操作,普通数量的文本 ...

  2. Facebook开源图嵌入“神器”:无需GPU,高效处理数十亿级实体图形 | 极客头条...

    点击上方↑↑↑蓝字关注我们~ 「2019 Python开发者日」全日程揭晓,请扫码咨询 ↑↑↑ 编译 | Major.一一 出品 | AI科技大本营(ID: rgznai100) 有效处理大规模图对于 ...

  3. ElasticSearch 在数十亿级别数据下,如何提高查询效率?

    来源:https://zhuanlan.zhihu.com/p/60458049 面试题 es 在数据量很大的情况下(数十亿级别)如何提高查询效率啊? 面试官心理分析 这个问题是肯定要问的,说白了,就 ...

  4. 《预训练周刊》第25期:HyperCLOVA:数十亿级韩语生成式预训练变换器、GPT-3在生物医学领域不是好的小样本学习器...

    No.25 智源社区 预训练组 预 训 练 研究 观点 资源 活动 关于周刊 超大规模预训练模型是当前人工智能领域研究的热点,为了帮助研究与工程人员了解这一领域的进展和资讯,智源社区整理了第25期&l ...

  5. 腾讯数十亿广告的基础是精准实时推荐

     专访腾讯数据平台部总经理蒋杰:腾讯数十亿广告的基础是精准实时推荐 虎嗅注:本文是福布斯中文网"数据大玩家"专栏中的一篇文章.接受提问的蒋杰先生,是腾讯数据平台部总经理,在加入 ...

  6. currenttimemillis 毫秒还是秒_Elasticsearch如何做到数十亿数据查询毫秒级响应?

    如果面试的时候碰到这样一个面试题:ES 在数据量很大的情况下(数十亿级别)如何提高查询效率? 这个问题说白了,就是看你有没有实际用过 ES,因为啥?其实 ES 性能并没有你想象中那么好的. 很多时候数 ...

  7. Elasticsearch如何做到数十亿数据查询毫秒级响应?

    如果面试的时候碰到这样一个面试题:ES 在数据量很大的情况下(数十亿级别)如何提高查询效率? 这个问题说白了,就是看你有没有实际用过 ES,因为啥?其实 ES 性能并没有你想象中那么好的. 很多时候数 ...

  8. 【ElasticSearch】ElasticSearch在数十亿级别数据下,如何提高查询效率? 性能优化

    1.概述 转载:https://zhuanlan.zhihu.com/p/60458049 这里面主要有个filesystem cache 服务这个想法很好. 面试题 es 在数据量很大的情况下(数十 ...

  9. Facebook 实时聊天架构日均处理数十亿条消息!

    摘要:Facebook 的实时聊天架构每日可处理数十亿条消息. 作者 | shivang 译者 | 弯月,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以下为译文: 在这篇文章中,我将 ...

最新文章

  1. mysql 无限长度,如何将varchar设置为无限长度?
  2. java 比较对象内容是否相同的_Java 比较对象中的内容是否一致
  3. CCNA实验解析——VLAN间的路由的配置
  4. MySQL字段类型与Java数据类型的对应关系
  5. Java基础之代码执行顺序深入解析
  6. d3.js 共享交换平台demo
  7. 东北大学c语言真题及答案,东北大学C语言总测试题(含答案).pdf
  8. 深入分析linux内核及其应用(更新完毕)
  9. 如何控制if跳出_Wasm介绍之5:控制指令 | 火星技术帖
  10. 企业微信API群机器人配置
  11. 虚函数表和虚函数表指针的汇编分析
  12. mui用ajax上拉加载更多,mui 中的一个上拉加载及下拉刷新的方法 ,但是我使用ajax拿不到url中的数据,是为什么?...
  13. 亚马逊Alexa技能的创建流程
  14. 新接口——“淘特”关键词搜索的API接口
  15. 【报告分享】健身内容创作者发展研究报告-Keep×新榜(附下载)
  16. “华为杯”第一届中国研究生网络安全创新大赛
  17. Scratch-简易时钟制作
  18. 三种邮件服务器Exchange Server,Imail和WebEasyMail的比较
  19. API-百度翻译-js使用
  20. 如何将本地图片变为网络图片

热门文章

  1. 最佳的MongoDB客户端管理工具
  2. RocketMQ源码学习
  3. 12563 - Jin Ge Jin Qu hao
  4. Linux学习笔记7
  5. b站2020用户画像_B站2020年度动画大选来袭!论引战,还是要看B站
  6. runtime批处理mysql导出_【原】使用批处理BAT文件处理Mysql数据库 | 学步园
  7. wsl用户帐户没有必要的权限_Windows的Linux子系统(WSL)即将带来图形化应用
  8. linux 快速切换ip,linux-如何快速替换IP
  9. 海神祭司被机器人拉出来_全联盟最不怕机器人钩子的四个英雄,最后一个巴不得被钩中...
  10. android studio sugar,Android | Sugar 的介绍和简单使用