端智能技术演进与实践 | 青训营笔记

163 阅读3分钟

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

端智能技术演进与实现

什么是端智能技术

  • 定义:把机器学习、深度学习算法模型应用和部署到端设备上 (此处”端设备“指对于云服务而言的,可以是手机或物联网IoT设备)
  • 例:拍照换装特效、文字识别、肢体检测、手势识别
  • 为什么:放端里,就减少了请求到云端的延迟等损耗
  • 发展:随着端侧设备在算例、算法和框架上突飞猛进的发展,现在有很多的端侧机器学习框架和应用案例,各大网络公司都有自己的机器学习框架

端智能技术实践案例

  • 流程:
    1. 问题和方案:由问题的描述和定义设计机器学习的解决方案
    2. 训练AI模型: a. 模型设计 b. 数据收集与模型训练 c. 模型压缩模型转换
    3. AI模型在移动端部署应用 a. 将模型部署到移动端 b. 收集输入与推理预测 c. 拿到结果,执行业务策略 微信图片_20220808185451.png
  • 手写数字识别

    • 需求:App要做一个手写输入数字的模块,支持输入0~9
    • 方案:手写输入数字(图片)后,通过机器学习模型将可能代表的数字数值输出,有多种可给出各自的置信度(0.0~1.0)
    • 数据收集:开源数据、脚本合成数据、人工收集标注
      • 数据增广:平移、旋转、缩放
    • 模型设计:图片由二维展开成一维后,经过全连接层计算后输出10个分量的置信度,最后用套件搭建模型代码
    • 模型训练:
      1. 搭建训练环境-Tensorflow
      2. 训练样本处理
      3. 模型构建-Keras
      4. 模型训练
      5. 验证模型准确度
    • 模型压缩和转换(将模型转成端模型):
      • 将 Tensorflow 转成 Tensorflow Lite 模型
    • 模型部署到移动端(让移动端可以加载前面转化好的模型):
      • 简单做法:放在App包内assets目录下
      • 进阶做法:通过url动态下载,支持动态更新,同时减少包体积
    • 移动端推理预测:加载模型->构造模型输入->执行推理预测->获取推理运行结果
    • 拿到结果,执行业务策略:优化、迭代、打磨
  • 左右手智能识别与应用

    • 方案:用手指在屏幕滑动轨迹识别左右手
    • 数据收集:拦截Activity的dispatchTouchEvent事件,缓存手指滑动产生的MotionEvent序列
    • 模型设计:二分类模型,卷积神经网络
    • 模型训练和转换:
      • 模型样本处理
      • 模型训练
      • 验证模型准确度
    • 接入模型,滑动后触发预测,将结果缓存,业务使用时获取

端智能工程师学习路线

  • 入门:对端智能技术有一定认识,可以协作完成端智能技术的需求落地
  • 进阶:对移动端技术、端智能技术和负责业务有更深入的理解,可以站在更全面的视野上设计端上智能解决方案,建设端上智能架构 微信图片_20220808185407.png