Android-端智能技术|青训营笔记
这是我参加「第四届青训营」笔记创作活动第五天
端智能技术
什么是端技能技术
端智能: 是指把机器学习/深度学习方法算法模型应用和部署到端设备上,这里“端设备”是相当于云服务而言的,可以是手机。也可以是物联网LOT设备
- Low Latency :低延迟、实时性高
- Offline :可离线
- Power:端设备算力越大越强大
- Low Cost:低成本
- Privacy:保护隐私
端云协同:
- 端智能不是云智能的替代,是云端机器学习的延伸,是要结合云和端各自的优势,在云端之合理分配任务以获得问题最优解
端智能技术发展的历程
- 2006年,深度学习被提出,得益于大数据的发展和硬件算力的提升,深度学习的算法和框架不断演进,人工智能领域迎来了一次大发展
- 与此同时,端侧设备在算力,算法和框架上同样有突飞猛进的发展,各类端侧机器学习框架和应用案例层出不穷
端侧机器学习框架
- Google:Tensorflow Lite、ML Kit
- 华为:HiAI、ML Kit
- Mate:PyToech Mobile、Pytorch Live
- Apple:CoreML
- 腾讯:NCNN、TNN
- 阿里:MNN
- 百度:Paddle-Lite
- 小米:Mace
- 字节:ByteN、Pitaya
- 快手:KwaiNN、Ykit
端技能技术的实践案例
手写数字识别
需求:手写输入法模块,支持输入数字0~9
- 解决方式
- 训练一个可以手动识别数字的机器学习模型
- 将此模型部署应用到App中实现手写到识别的过程,并将识别结果供给客户输入
- 机器执行部分:
- 输入:手写数字图片
- 输出:其可能代表的数字值,多种可能时给出各自置信度(0.0~1.0)
数据收集
数据来源方式
- 开源数据
- 合成数据
- 人工收集和标注的数据
- 设计和实际需求贴合的数据采集程序
- 兼顾不同年龄段,性别,左手/右手等
- 数据增广
- 选装,平移,缩放变换
- 模型压缩和转换
为什么做模型压缩和转换
- 移动端使用的是被优化的推理引擎,可以在不同的cpu和GPU架构下更高效的执行模型推理计算
- 这里我们使用Tensorflow Lite 作为移动端上推理引擎
- Tensorflow 模型在被TensorFlow Lite 使用前必须转换成TensorFlow Lite 支持的格式
- TensorFlow 提供转换器TFLite Convert
模型部署到移动端
- 核心:让移动端可以加载到前面转化的模型
- 简单做法:放在App包体内assets目录下
- 进阶做法:通过url动态下载,支持动态更新,同时减少包体积
- 移动端推理预测
- 推理预测是指设备上进行TensorFlow Lite模型
TensorFlow lite 将模型的加载和执行封装在Interpreter类中
端智能案例完整流程
左右手智能识别和应用
- 需求:设计一种检测手机是左手操作手机还是右手在操作手机依据检测结果动态调整交互,提升用户体验
- 调研:手指在屏幕滑动轨迹识别左右手
数据收集
数据格式:
- X样本:【p0,p1,p2,...】
- Y样本:left/right
收集方式:(特殊客户端,内测用户收集)
- 滑动轨迹:拦截Activity的dispatchTouchEvent事件,缓存手指滑动产生的MotionEvent序列
左右手标签:
- 左手样本收集时,只用左手手持机操作
- 右手样本收集时,只用右手持机操作
模型设计
二分模型,卷积神经网络
模型训练和转换
- 训练样本处理
- 模型训练
- 验证模型准确度
学习方法
开始
达成:对端智能技术有一定认识,可以协作完成智能端技术需求落地
进阶
达成:对移动端技术、端智能技术和负责业务有更深入的理解,可以站在更全面的视野上设计端智能解决方案,建设端上智能架构