Android基础第六天 | 青训营笔记

317 阅读6分钟

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

端智能技术演进与实践

课程回顾

Android客户端开发的基础知识、UI编程、数据库和网络通信以及客户端上的直播技术。

01 什么是端智能技术

1.1 端智能是什么?

端智能(O-D ML)是指把机器学习/深度学习算法模型应用和部署到端设备上,这里“端设备”是相对于云服务而言的,可以是手机,也可以是物联网IoT设备。

  • 抖音换装特效

  • 离线文字识别

  • 肢体检测

  • 手势识别

1.2 为什么要做端智能?

Low Latency:低延迟、实时性高

Privacy:保护隐私

Power:端设备算力越来越强大

Offline:可离线

Low Cost:低成本

  • 端云协同:端智能不是云智能的替代,是云端机器学习的延伸,是要结合云和端各自的优势,在云端之间合理分配任务以获取问题最优解。

1.3 端智能技术的发展历程

2006年,深度学习被提出,得益于大数据的发展和硬件算力的提升,深度学习的算法和框架不断演进,人工智能领域迎来了一次大发展。

与此同时,端侧设备在算力、算法和框架上同样有突飞猛进的发展,各类端侧机器学习框架和应用案例层出不穷。

image.png

1.4 端侧机器学习框架

  • Google: Tensorflow Lite、ML Kit

  • Meta: PyTorch Mobile、PyTorch Live

  • Apple: CoreMlL

  • 腾讯:NCNN、TNN

  • 阿里:MNN

  • 百度:Paddlle-Lite

  • 华为:HiAl、MIL Kit

  • 小米:Mace

  • 其他:字节((ByteNN、Pitaya),快手(KwaiNN、Ykit) ...

02 端智能技术实践案例

2.1 手写数字识别

项目地址:github.com/ahcyd008/Di…

需求背景:App要做一个手写输入法模块,支持输入数字0-9,

端智能案例落地的套路:

  • 问题和方案:问题描述和定义 → 设置机器学习解决方案

  • 训练AI模型:数据收集 → 模型设计、模型训练 → 模型压缩、模型转换

  • AI模型在移动端部署应用:模型部署到移动端 → 收集输入推理预测 → 拿到结果执行业务策略

2.1.1 问题和方案

问题:App要做一个手写输入法模块,支持输入数字0~9。

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

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

image.png

2.1.2 数据收集

数据来源方式:

  • 开源数据(MNIST)

  • 合成数据

  • 人工收集和标注的数据:设计和实际需求贴合的一个数据采集程序;兼顾不同年龄段、性别、左手/右手等。

image.png

数据增广

  • 旋转、平移、缩放变换
2.1.3 模型设计

一个在线模拟演示神经网络模型设计的网站:

playground.tensorflow.org

→ 10分类模型,全连接神经网络。

参考Tensorflow官方样例www.tensorflow.org/tutorials/q…

2.1.4 模型训练
  1. 搭建环境

  2. 训练样本处理

  3. 模型构建

  4. 模型训练

  5. 验证模型准确率

image.png

2.1.5 模型压缩和转换

为什么要做模型压缩和转换?

→ 移动端使用的是被优化的推理引擎,可以在不同CPU和GPU架构下更高效的执行模型推理计算。

使用Tensorflow Lite作为移动端上推理引擎。

Tensorflow模型在被TensorFlow Lite使用前,必须转换成Tensorflow Lite支持的格式。

Tensorflow Lite提供转换器TFLite Convert。

image.png

2.1.6 模型部署到移动端

核心:让移动端可以加载到前面转换出的模型

  • 简单做法:放在App包体内的assets目录下

image.png

  • 进阶做法:通过url动态下载,支持动态更新,同时减少包体积。

image.png

2.1.7 移动端推理预测

推理预测是指设备上执行TensorFlow Lite模型

Tensorflow Lite将模型的加载和执行封装在Interpreter类中。

image.png

2.1.8 拿到结果,执行业务策略
2.1.9 手写数字识别案例回顾

一个端智能案例的落地套路完整流程:

image.png

2.2 左右手智能识别与应用(抖音案例)

需求背景:很多App会以右手习惯来设计交互,并以此去引导用户点击它们期望的选项。

存在问题:用户左手使用手机时,引导效果会变差,有没有更智能更个性化的交互体验方式?

2.2.1 问题和方案

问题:设计一种方法检测用户是左手在操作手机、还是右手在操作手机,然后依据检测结果动态调 整交互,提升用户体验。

调研:手指在屏幕滑动轨迹识别左右手www.ncbi.nlm.nih.cov/pmc/article…

image.png

机器学习方案:训练一个二分类的CNN神经网络模型来识别用户是左手or右手操作。

  • 输入:用户在屏幕上的滑动轨迹
  • 输出:左手or右手
2.2.2 数据收集

数据格式:

X样本:[p0, p1, p2, p3,p4,... ],p= (x, y, w, h, density, dtime) . Y样本:left / right

收集方式:(特殊客户端、内测用户收集)

滑动轨迹:拦截Activity的dispatchTouchEvent事件,缓存手指滑动产生的MotionEvent序列。

左右手标签:

左手样本收集时,只用左手持机操作。

右手样本收集时,只用右手持机操作。

2.2.3 模型设计

二分类模型(Left or Right ),卷积神经网络。

image.png

2.2.4 模型训练和转换
  • 训练样本处理

  • 模型训练

  • 验证模型准确度

2.2.5 移动端推理预测 & 业务应用

→ 接入模型,滑动后触发预测,将结果缓存,业务使用时获取。

image.png

2.2.6 左右手案例课后作业

github.com/ahcyd008/Op…

继续完善。

03 端智能工程师学习成长路线

3.1 回顾端智能完整流程

image.png

3.2 入门

image.png

学习资料:

了解端智能可以做哪些事情:Google MLKit、华为MLKit

机器学习入门:Tensorflow入门、机器学习速成课、微软Al-EDU

机器学习在移动端应用:TensorflowLite入门

机器学习原理:吴恩达课程

3.3 进阶

达成:对移动端技术、端智能技术和负责业务有更深的理解,可以站在更全面的视野上设计端上智能解决方案,建设端上智能架构。

image.png

04 课程总结

  1. 什么是端智能技术
  • 端智能是什么:是将AI算法模型部署和应用到端侧

  • 端智能的优势:Latency、Privacy、Power、Offline、Cost

  • 端智能的发展历程和端智能框架介绍

  1. 端智能技术案例
  • 手写数字识别

  • 左右手智能识别和应用(抖音案例)3.端智能工程师学习路线

  1. 端智能技术落地完整流程
  • 入门->进阶