端智能技术 | 青训营笔记

252 阅读2分钟

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

1. 端智能

a. 定义:

是在端设备上使用机器学习/深度学习模型

端设备是相对于云服务而言,可以是手机也可以是物联网IOT设备

eg: 换装特效/离线文字识别/肢体检测/手势识别

b. 为什么要做端智能

低延迟、实时性高,可离线,低成本,保护隐私

因为数据是在端设备上的,不需要传递到云端,所以可以保护隐私/省钱

2. 端智能技术实践案例

a. 手写数字识别

github.com/ahcyd008/Di…

需求: 做一个手写输入法模块,支持数字0~9

分析: 

机器学习部分

输入:手写输入数字(图片)

输出:可能代表的数值,多种可能时给出自置信度(0.0~1.0)

数据来源

开源MNIST或人工收集数据(让不同年龄/性别/左右手)的人根据提示的数字输入手写

数据增广:旋转平移缩放变换

有一个可以在线模拟神经网络模型的网站:

playground.tensorflow.org/

模型训练

搭建训练环境Tensorflow-训练样本处理-模型构建Keras-模型训练-验证模型准确度

模型部署到移动端(让移动端可以加载到前面转化的模型):

- 方法1:放在App包体内assets目录下, xxxx.tflite

- 方法2: 通过url动态下载支持动态更新 减少包体积

移动端推理预测

b. 左右手智能识别和应用

github.com/ahcyd008/Op…

需求:自动检测用户是左手操作手机还是右手操作手机,根据检测结果动态调整UI,提升用户体验

方法:可以通过手指屏幕上的滑动轨迹识别左右手

数据收集:

- 数据格式:

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

Y样本: left/right

- 收集方式:

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

左右手标签:左手样本收集时,只用左手持机操作

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

模型使用

3. 端智能学习路线

a. 入门

先了解端智能可以做什咩: GoogleMLKit, 华为MLKit

机器学习入门: Tensorflow入门, 谷歌机器学习速成课, 微软AI-EDU

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

学原理:找吴恩达 : )

b. 进阶

更好的架构: 推理引擎/模型管理/端云协同/性能优化/端上训练