内容简介:Google 开发者大会 (Google Developer Days,简称 GDD) 是展示 Google 最新开发者产品和平台的全球盛会,旨在帮助你快速开发优质应用,发展和留住活跃用户群,充分利用各种工具获得更多收益。2018 Google 开发者大会于 9 月 20 日和 21 日于上海举办。点击2018 年 9 月 21 日 ,凌钰城(Google Brain 软件工程师)带来一场《TensorFlow Lite:TensorFlow在移动设备与嵌入式设备上的轻量级跨平台解决方案》的演讲,本文将对
Google 开发者大会 (Google Developer Days,简称 GDD) 是展示 Google 最新开发者产品和平台的全球盛会,旨在帮助你快速开发优质应用,发展和留住活跃用户群,充分利用各种 工具 获得更多收益。2018 Google 开发者大会于 9 月 20 日和 21 日于上海举办。点击 阅读原文 进入 Google 开发者大会 2018 掘金专题。
2018 年 9 月 21 日 ,凌钰城(Google Brain 软件工程师)带来一场《TensorFlow Lite:TensorFlow在移动设备与嵌入式设备上的轻量级跨平台解决方案》的演讲,本文将对演讲做一个回顾。
在终端 / 设备上运行机器学习日益重要
今天,机器学习的发展日新月异,机器学习不仅部署在服务器端,运行在个人电脑上,也存在于我们生活中许许多多的小设备上,比如移动设备和智能手机。智能手机上的OK Google可以通过语音设定一个闹钟,这是一个关键字检测和语音识别的机器学习综合应用。再比如Google的照片app,可以通过机器学习来制作背景虚化、人像清晰的照片,这些在移动设备、智能手机上的机器学习应用很有用、很有趣。
在移动设备上实现机器学习,可以有两种实现方法。一种是在设备上收集数据,传递给云端,服务器执行机器学习任务,最后把结果回传给设备。另一种方法是在终端设备上运行所有功能,包含机器学习模型。
在终端上运行机器学习有许多优点:
-
没有网络延迟
-
无需连接网络
-
数据留在终端
-
无需花费带宽去上传数据
-
某些情况下比较省电
-
可直接存取终端上的传感器
但是,在终端上运行应用也相当困难,主要存在以下几点限制:
-
移动终端上有更小的内存
-
对省电有要求
-
更弱的计算能力
对机器学习来说更是困难,我们为服务器开发的机器学习模型通常比较大,需要较大的内存,模型复杂,需要更多的耗电量和计算能力。
什么是TensorFlow Lite
TensorFlow Lite是TensorFlow在移动设备上运行机器学习的跨平台解决方案,具有低延迟、运行时库 (runtime library) 极小等特性,此外还有一系列的工具去转换、调试和优化模型。
采用TensorFlow Lite开发的应用优点之一是反应速度非常快,比如开发照片处理app,不需要将照片传输到云端,可以直接在终端上处理。优点之二是可以离线使用,这在网络条件比较差的地区尤为重要。
Tensorflow Lite具有高度可移植性,已经在如下平台成功移植:
-
Android、iOS
-
Raspberry PI、及其它Linux SoCs
-
微处理器(包括没有操作系统,没有POSIX环境的系统)
-
也能在PC、Mac运行,调试方便
使用TensorFlow Lite的流程
TensorFlow Lite的优化
相较于TensorFlow,TensorFlow Lite进行了如下优化:
-
压缩模型:缩小模型体积
-
量化 (Quantization):TensorFlow模型中包含大量的矩阵,矩阵数值通常采用32bit的float数据类型,量化就是将这些32bit的浮点数采用8bit的byte表示。
-
CPU ops融合:比如特别为ARM Neon指令集优化
-
优化的SIMD运算核心
此外TensorFlow Lite还紧密整合硬件加速器,支持如下几类硬件加速器:
-
GPUs
-
Edge-TPUs
-
NNAPI支持的硬件加速器
对GPUs的支持状况:
-
Android上:基于OpenGL的GPU加速
-
预定2018年第四季度发布binary
-
可加速MobileNet以及其它图像模型
关于Google打造的Edge TPUs:
TensorFlow Lite可以通过参数决定runtime library大小。基本的interpreter 80K,所有内建Ops kernel 750KB,相当小。考虑到不同模型可能用到不同的ops,还可以继续优化,比如可以只注册你需要的Ops,这样其余的Ops就不会编译到runtime library中,体积还可以进一步缩减。
开发者的反馈
TensorFlow Lite得到了众多开发者的使用,得到了很多正面的反馈:
-
跨平台部署
-
更快的推断 (inference) 速度
-
更小的runtime library
-
硬件加速
也收集到了一些改进意见:
-
TensorFlow Lite更易于使用
-
增加支持的Ops数量
-
增强模型优化工具
-
更多的文档、范例源码…
后面会进一步说明TensorFlow Lite团队对这些问题的改进。
谁使用了TensorFlow Lite
以及…
如何使用TensorFlow Lite
TensorFlow Lite非常易于上手,建议采用如下步骤:
使用Demo App
-
下载:从https://www.tensorflow.org/mobile/tflite下载一个demo app(iOS/Android)
-
编译:在您的机器上简单的编译demo apps
-
运行:运行demo app,并试着修改看看
预训练 (Pretrained) & 再训练 (Retrained) 模型
预训练模型:Tensorflow网站上提供了各种不同预训练的机器学习模型,比如图像分类、物体检测、图像分割、文字预测、等等。
再训练模型:请尝试迁移学习Colab教程 - Tensorflow for Poets。顾名思义,这个教程设计初衷是尽量简单,让没有技术背景的人也能运行。所谓迁移学习,是重新训练已经存在模型的一小部分,应用到一个新的问题上。
开发自己的模型
-
构建 & 训练模型
使用TensorFlow(Estimator或Keras),构建模型,训练,取得Saved Model。
-
转换格式
使用TensorFlow Lite转换器转换为TensorFlow Lite可用的模型,模型转换代码如下:
import tensorflow.contrib.lite as lite graph_def_file = "/path/to/Downloads/mobilenet_v1_1.0_224/frozen_graph.pb" input_arrays = ["input"] output_arrays = ["MobilenetV1/Predictions/Softmax"] converter = lite.TocoConverter.from_frozen_graph( graph_def_file, input_arrays, output_arrays) tflite_model = converter.convert() open("converted_model.tflite", "wb").write(tflite_model)
验证
借助模型可视化工具:
由于TensorFlow Lite支持的Ops有限,可能存在模型转换后,某些Ops不支持,针对这一问题,TensorFlow Lite团队计划支持更多的Ops
-
目前已经有75个内建Ops
-
Coming soon: Tensorflow Lite Compat模式
-
计划第四季度发布
-
增加数百个支持的Ops
验证模型、分析性能:
-
转换后的模型是否正确
-
模型的推断速度多快
-
Runtime library多大
更多详细资料,请参考:https://www.tensorflow.org/mobile/tflite/performance/
部署
python API示例:
interpreter = tf.contrib.lite.Interpreter( "/tmp/awesome_model.tflite") input = interpreter.get_input_details()[0]["index"] interpreter.set_tensor(input, np.array([1, 2, 3])) interpreter.invoke() prediction = interpreter.get_tensor(output)
Java API示例:
import org.tensorflow.lite.Interpreter; try { Interpreter tflite = new Interpreter( "/tmp/awesome_model.tflite"); // Fill the inputs and output buffers // ... // Invoke the interpreter tflite.run(inputs, outputs); }
补充:模型优化
在实际项目中,通常还会进行模型优化,这样在前面的流程中加入模型优化,演变为如下流程:
TensorFlow Lite提供一系列的工具帮助开发者优化模型:
-
训练后Quantization
这是最新发布的模型优化工具,其优点是使用简单,只需在前面的converter代码加入一行:
converter.post_training_quantization = True
量化会造成模型精确度的损失,但据观察,对图像、音频模型预测精确度影响很小。经过量化,CNN模型可增加10~50%的性能提升,RNN可以增加到3倍性能提升。
-
训练时Quantization
一年前发布的工具,理论上可以比训练后Quantization更好的精确度,但使用上比较复杂,只在CNN模型中比较有效果,对于RNN模型,效果有限。
团队同时在研究两者,希望两者都有所提升。
Demo
一个Raspberry PI实现的物件检测模型,可以进行目标检测,转动摄影机始终跟随目标
一个采用Google Edge TPU的系统,展现TensorFlow Lite的实时处理能力
采用ARM微处理的装置,展现TensorFlow Lite在极低硬件配置上的表现
展现TensorFlow Lite的实时视频处理能力
展望未来
Compat是Compatibility (兼容) 的简写,所谓兼容模式,就是TensorFlow Lite在遇到不支持的Ops时,会提示是否启用Compat模式,这样支持的Ops (600+) 更多,但也意味着runtime library会增加,开发者需要在功能和体积之间做权衡。
另外,TensorFlow Lite搬家了,从原来的tensorflow/contrib/lite/…提升到tensorflow/lite/…,这意味着TensorFlow Lite开始作为一个正式的project,得到官方支持。
以上就是本次演讲的全部内容,希望对大家有所帮助。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Python | 获取iOS设备信息的轻量级框架
- EasyFlash 4.0 正式版发布,轻量级物联网设备信息存储方案
- sqlserver还原数据库的时候出现提示无法打开备份设备的解决方法(设备出现错误或设备脱)
- Php 单一设备设置(一个账号只能一个设备登录)【原创】
- 设备固件提取小结
- rem适配移动设备
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Cypherpunks
Julian Assange、Jacob Appelbaum、Andy Müller-Maguhn、Jérémie Zimmermann / OR Books / 2012-11 / GBP 8.99
Cypherpunks are activists who advocate the widespread use of strong cryptography (writing in code) as a route to progressive change. Julian Assange, the editor-in-chief of and visionary behind WikiLea......一起来看看 《Cypherpunks》 这本书的介绍吧!