这是我参与「第四届青训营 」笔记创作活动的第5天
1. 端智能
a. 定义:
是在端设备上使用机器学习/深度学习模型
端设备是相对于云服务而言,可以是手机也可以是物联网IOT设备
eg: 换装特效/离线文字识别/肢体检测/手势识别
b. 为什么要做端智能
低延迟、实时性高,可离线,低成本,保护隐私
因为数据是在端设备上的,不需要传递到云端,所以可以保护隐私/省钱
2. 端智能技术实践案例
a. 手写数字识别
需求: 做一个手写输入法模块,支持数字0~9
分析:
机器学习部分:
输入:手写输入数字(图片)
输出:可能代表的数值,多种可能时给出自置信度(0.0~1.0)
数据来源:
开源MNIST或人工收集数据(让不同年龄/性别/左右手)的人根据提示的数字输入手写
数据增广:旋转平移缩放变换
有一个可以在线模拟神经网络模型的网站:
模型训练:
搭建训练环境Tensorflow-训练样本处理-模型构建Keras-模型训练-验证模型准确度
模型部署到移动端(让移动端可以加载到前面转化的模型):
- 方法1:放在App包体内assets目录下, xxxx.tflite
- 方法2: 通过url动态下载支持动态更新 减少包体积
移动端推理预测:
b. 左右手智能识别和应用
需求:自动检测用户是左手操作手机还是右手操作手机,根据检测结果动态调整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. 进阶
更好的架构: 推理引擎/模型管理/端云协同/性能优化/端上训练