端智能技术演进与实践 | 青训营笔记

576 阅读4分钟

这是我参与「第四届青训营 」笔记创作活动的第4天

一、本堂课重点内容:

  • 了解什么是端智能技术
  • 学习用端智能技术案例

二、详细知识点介绍:

2.1 何为端智能技术

  • 端智能(On-Device Machine Learning)是指把机器/深度学习算法模型应用和部署到端设备上,这里“端设备”是相对于云服务而言的,可以是手机,也可以是物联网IoT设备。
  • 其主要应用于如下几个方面:音频分类、图像分类、物体检测、文本分类、视觉产品搜索等

2.2 端智能技术优点

  • 低延迟、实时性高(Low Latency):特征收集、模型推理、业务逻辑均在端侧完成,无需网络交互,端侧也更能够实时感应用户状态。
  • 保护隐私(Privacy):数据只在端侧使用,无需上传云端,可更好地保护用户隐私数据。
  • 算力(Power):移动端设备越来越强大,算力越来越高。
  • 可离线(Offline):可以离线使用。
  • 低成本(Low Cost):在端侧计算,利用端侧算力和存储空间,可节省大量的云端计算和存储资源。
  • 端云协同:: 端智能并不是云智能的替代,是云端机器学习的延伸,是要结合云和端各自的优势,在云端之间合理分配任务以获取问题最优解。
    如现在工业互联网中已经大量使用了端云协同这一方法,从而使用端智能。iSESOL网 基于数据驱动的工业互联网平台

2.3 端智能的发展历程

2006年,深度学习被提出,又得益于大数据的发展和硬件算力提升,深度学习算法和框架也不断演进,人工智能领域迎来了一次大发展。
与此同时,端侧设备在算力、算法和框架上同样有突飞猛进的发展,各类端侧框架和案例层出不穷。

  • 2015年Tensorflow 推出Mobile版SDK,随后2017年开源,随后各大互联网公司相继推出自己的移动端机器学习框架,许多采用了开源的形式,移动端端智能技术框架层出不穷。 image.png 图片来源于字节青训营相关资料

2.4 端智能技术实现案例

这里以手写数字识别案例为代表,案例代码见ahcyd008/DigitalRecognition(github.com)

问题提出

某app需要做一个手写数字输入识别器,从而识别0-9十种数字。

问题分析

问题分析如下图所示

image.png

所涉及到的问题主要有:
  • 解决方案:

    • 训练一个可以识别手写数字的机器学习模型。
    • 将此模型部署应用到App中,实现手写输入到识别的过程,并将识别结果供给用户选择输入。
  • 机器学习部分:

    • 输入:手写输入数字(图片)
    • 输出:其可能代表的数字数值,多种可能时给出各自置信度(0.0~1.0)。

数据收集与处理

手写数据识别,首先我们可以采用经典数据集MNIST。除此之外我们也可以采用app自行收集的方法。采用手写识别的方法,将数据进行增广并上传至云端。

image.png

模型训练我们使用一个全连接神经网络,然后将得到的模型转为Tensorflow Lite这种移动端可以运行的模型。Tensorflow已经为我们提供了这种转换方法 TensorFlow Lite 转换器 (google.cn)

import tensorflow as tf

# Convert the model
converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir) # path to the SavedModel directory
tflite_model = converter.convert()

# Save the model.
with open('model.tflite', 'wb') as f:
  f.write(tflite_model)

移动端模型部署

将移动端部署有两种方法

  • 简单的方法为将模型放在App包体内assets目录下。
  • 更好的方法为,通过url动态下载,支持动态更新,同时减少包体积。

移动端推理预测

推理预测是指设备上执行TensorFlow Lite模型。并将模型的加载和执行封装在Interpreter类中,具体分为以下四部分

  • 加载模型
  • 构造模型输入
  • 执行推理预测
  • 获取推理运行结果

部署结果

通过运行,我们可以得到一个预测准确性较高的预测结果。

image.png

三、实践练习例子:

学习TensorFlow Lite和Google上的相关案例,熟练掌握端智能相关知识。

四、课后个人总结:

本节课学习了端智能的相关技术,以数字识别案例为入门,带我们了解了如何在Android端部署相关机器学习案例,理解怎么做端智能,可以协作完成端智能技术解决实际业务问题的需求落地。

五、引用参考:

部分图片与知识点来源于:

  1. 【Android 客户端专场 学习资料二】第四届字节跳动青训营 - 掘金 (juejin.cn)
  2. On-Device Machine Learning  |  Google Developers
  3. TensorFlow Lite for Android