这是我参与「第四届青训营 」笔记创作活动的第6天 主要为思维导图大纲,收集课堂要点和一些补充知识 欢迎补充&指正
端智能技术的演进与实践
1.端智能技术是什么
1.定义:把机器学习、深度学习算法模型应用和部署到端设备上(手机、物联网...)
2.客户端案例
- 1.换装特效
- 2.文字识别
- 3.实时肢体检测、手势识别
3.优势
- 1.低延迟
- 2.实时性
- 3.可离线使用
- 4.节省成本
- 5.保护用户隐私数据
4.不足
- 算力不足,资源受限
5.端云结合
2.端智能技术实践案例
1.手写数字识别
-
1.解决方法
- 1.训练一个可以识别手写数字的机器学习模型。
- 2.将此模型部署应用到App中,实现手写输入到识别的过程,并将识别结果供给用户选择输入。
-
2.数据收集
-
1.开源数据 - ~~~~MNIST
-
2.合成数据 如将各种字体下的数字写在黑板上生成图片,作为样本。
-
3.人工收集和标注的数据
- 设计和实际需求贴合的一个数据采集程序
- 兼顾不同年龄段、性别、左手/右手等
- 数据增广 对原始图片进行旋转、平移、缩放变换,扩充更多数据集,增强模型适应性。
-
-
3.模型设计
- 输入图片,由二维展开成一维分量,对应置信度
-
4.模型训练
- 1.搭建环境
- 2.训练样本处理
- 3.模型构建
- 4.模型训练
- 5.验证模型准确度
-
5.模型压缩和转换
- 移动端使用的是被优化的推理引擎,可以在不同CPU和GPU架构下高效的执行模型推理计算。
-
6.模型部署到移动端
- 1.放在App包体内assets目录下。
- 2.通过url动态下载,支持动态更新,同时减少包体积。
-
7.移动端推理预测
-
1.加载模型到内层
-
2.构造模型输入
- 将bitmap图片 resize 缩放到28x28像素,转灰度,再转成bytebuffer,这是 interpreter 接受的输入格式。
-
3.执行推理预测
- 构造输出buffer,调用run执行计算
-
4.获取推理预测结果
- result中的10个数值代表手写输入是 0~9 这10个数字置信度分值,对分值进行排序,把排序前三的数字作为预测输出,供用户选择。
-
-
8.拿到结果执行业务策略
2.左右手智能识别
-
1.问题和方案
-
设计一种方法检测用户是左手在操作手机、还是右手在操作手机,然后依据检测结果动态调整交互,提升用户体验。
-
如识别到右手时,交互设计保持右手适配模式;识别到左手时,交互设计更改为左手适配模式。
-
方案
- 训练一个二分类的CNN神经网络模型来识别用户是左手 or 右手操作。
- 输入:用户在屏幕上的滑动轨迹
- 输出:左手 or 右手
-
-
2.训练AI模型
-
1.数据格式
- X样本:[p0, p1, p2, p3, p4, … ] ,p=(x, y, w, h, density, dt)。
- Y样本:left / right
-
2.收集方式
-
1.滑动轨迹:拦截Activity的dispatchTouchEvent
-
2.事件,缓存手指滑动产生的MotionEvent序列。
-
3.左右手标签
- 开启左手样本收集时,只用左手持机操作,只录制左手滑动数据。
- 开启右手样本收集时,只用右手持机操作,只录制右手滑动数据。
-
-
3.模型设计
- 二分类模型( Left or Right ),卷积神经网络。
-
4.模型训练和转换
- 滑动轨迹X样本需要采样对齐成9个固定点输入方式
- 在Demo案例我们继续用Tensorflow Lite 提供的转换器 TFLite Convert,将模型转为移动端模型。
- 在抖音使用的端上推理计算框架是ByteNN,其也提供了相应的Tensorflow Lite模型进一步转成ByteNN模型的工具。
-
5.模型部署到移动端
- 在抖音中模型是通过url下发的,动态更新,需要更新模型时也可以通过Libra实验进行对比。
- 在案例Demo中,是和案例1一样,放在安装包assets目录下。
-
6.移动端推理预测
- 接入模型后,在用户滑动后触发预测,将预测结果缓存,业务使用时获取最近识别结果。
- 案例中我们继续使用Tensorflow Lite作为推理引擎,加载和执行模型预测。
- 抖音中使用ByteNN推理引擎执行推理预测。
-
3.案例落地
-
1.问题和方案
- 1.问题描述和定义
- 2.设计机器学习解决方案
-
2.训练AI模型
- 1.数据收集
- 2.模型设计、模型训练
- 3.模型压缩、模型转换
-
3.AI模型在移动端部署应用
- 1.模型部署到移动端
- 2.收集输入、推理预测
- 3.拿到结果,执行业务推测
3.端智能工程师学习长路线
入门
- 对端智能技术有一定认识,可以协作完成端智能技术的需求落地
- 了解端智能技术是什么、可以做什么
- 掌握移动端开发、Machine Learning 基础知识,了解业内端智能框架
- 理解怎么做端智能,可以协作完成端智能技术解决实际业务问题的需求落地
进阶
- 达成:对移动端技术、端智能技术和负责业务有更深入的理解,可以站在更全面的视野上设计端上智能解决方案,建设端上智能架构。