这是我参与「第四届青训营 」笔记创作活动的第13天
端智能技术演进与实现
什么是端智能技术
- 定义:把机器学习、深度学习算法模型应用和部署到端设备上 (此处”端设备“指对于云服务而言的,可以是手机或物联网IoT设备)
- 例:拍照换装特效、文字识别、肢体检测、手势识别
- 为什么:放端里,就减少了请求到云端的延迟等损耗
- 发展:随着端侧设备在算例、算法和框架上突飞猛进的发展,现在有很多的端侧机器学习框架和应用案例,各大网络公司都有自己的机器学习框架
端智能技术实践案例
- 流程:
- 问题和方案:由问题的描述和定义设计机器学习的解决方案
- 训练AI模型: a. 模型设计 b. 数据收集与模型训练 c. 模型压缩模型转换
- AI模型在移动端部署应用
a. 将模型部署到移动端
b. 收集输入与推理预测
c. 拿到结果,执行业务策略
-
手写数字识别
- 需求:App要做一个手写输入数字的模块,支持输入0~9
- 方案:手写输入数字(图片)后,通过机器学习模型将可能代表的数字数值输出,有多种可给出各自的置信度(0.0~1.0)
- 数据收集:开源数据、脚本合成数据、人工收集标注
- 数据增广:平移、旋转、缩放
- 模型设计:图片由二维展开成一维后,经过全连接层计算后输出10个分量的置信度,最后用套件搭建模型代码
- 模型训练:
- 搭建训练环境-Tensorflow
- 训练样本处理
- 模型构建-Keras
- 模型训练
- 验证模型准确度
- 模型压缩和转换(将模型转成端模型):
- 将 Tensorflow 转成 Tensorflow Lite 模型
- 模型部署到移动端(让移动端可以加载前面转化好的模型):
- 简单做法:放在App包内assets目录下
- 进阶做法:通过url动态下载,支持动态更新,同时减少包体积
- 移动端推理预测:加载模型->构造模型输入->执行推理预测->获取推理运行结果
- 拿到结果,执行业务策略:优化、迭代、打磨
-
左右手智能识别与应用
- 方案:用手指在屏幕滑动轨迹识别左右手
- 数据收集:拦截Activity的dispatchTouchEvent事件,缓存手指滑动产生的MotionEvent序列
- 模型设计:二分类模型,卷积神经网络
- 模型训练和转换:
- 模型样本处理
- 模型训练
- 验证模型准确度
- 接入模型,滑动后触发预测,将结果缓存,业务使用时获取
端智能工程师学习路线
- 入门:对端智能技术有一定认识,可以协作完成端智能技术的需求落地
- 进阶:对移动端技术、端智能技术和负责业务有更深入的理解,可以站在更全面的视野上设计端上智能解决方案,建设端上智能架构