端智能技术介绍

端智能(On-Device Machine Learning)是指把机器学习或深度学习算法模型应用和部署到端设备上,这里“端设备”是相对于云服务而言的,可以是手机,也可以是物联网IoT设备。在日常生活中,端智能并不少见,像离线文本识别、目标检测、人脸识别、手势识别乃至无人驾驶等都是端智能的实际应用场景。

端智能的优势

虽然端设备的算力通常比不上云服务,但是端智能却具备一些独特的优势,比如:

  • Latency 延迟:得益于数据的采集、模型推理和业务逻辑均在本地完成而无需网络交互,端智能能够带来更低的处理延迟,从而比云端智能更具实时性
  • Privacy 隐私:因为数据只在端设备上进行处理,而不是上传云端,所以可以更好地保护用户隐私
  • Offline 离线:数据处理不依赖于云服务,因此可以在离线环境下使用,更加可靠
  • Cost 成本:数据处理有端设备完成,而不必依赖云端的算力和存储,因此可以节省服务器成本

端智能和云智能各有优劣,比如端智能性能限制大,运行的模型不能太大,而云端拥有充足算力和海量数据却延迟较大。二者并非是替代关系,而是互补关系,在实际应用中最好根据需要在端和云之间合理分配任务。

端侧机器学习框架

  • Google:Tensorflow Lite、ML Kit
  • Meta:PyTorch Mobile、PyTorch Live
  • Apple:CoreML
  • 腾讯:NCNN、TNN
  • 阿里:MNN
  • 百度:Paddle-Lite
  • 华为: HiAI 、ML Kit
  • 小米:Mace
  • ......

端智能落地流程

端智能从设计到模型部署通常遵循下面的步骤。

问题和方案

要解决问题,自然先要搞清楚问题是什么,也就是对问题进行定义和描述,之后根据问题选择合适的机器学习方案(比如在何处进行机器学习、学什么、输出什么等)

训练AI模型

在确定了问题和方案以后,就需要训练AI模型了,训练的过程可以分为下面三步。

数据收集

机器学习需要大量数据来训练AI模型,所以首先要收集数据。数据可以通过下载开源数据、合成数据和人工标注来获取。对于一些常见类型的问题,往往可以找到开源数据;而合成数据则是通过一些手段来生成数据(比如使用各种字库作为手写数据);人工标注则由人手动产生数据,然后辨识和标注数据。在得到数据后,还可以对数据进行增广(例如图像数据可以进行旋转、平移变换增广出更多数据)。

模型设计和模型训练

有了标注过的数据,就可以开始模型设计了,模型设计需要考虑模型的神经网络结构(比如全连接神经网络、卷积神经网络等)、输出数据的格式(比如数字识别输出10个值代表1-10的置信度)。

设计好模型,就可以进行模型训练了,模型训练可以遵照下面的步骤:

  • 搭建训练环境(比如Tensorflow)
  • 模型构建
  • 模型训练
  • 验证模型准确度(准确度不佳则返回上面的步骤重新设计,或者扩大训练数据规模)

模型压缩和模型转换

因为移动端算力往往受限,且设备架构通常异于通常使用的通用计算机,所以需要对模型进行压缩和优化,以使模型能够更高效地执行推理计算。此外,因为移动端的机器学习框架也与通常的框架有差异,所以还需要对模型进行转换(比如Tensorflow->Tensorflow Lite)。

部署到移动应用

部署到移动应用,也就是要让移动端能够顺利加载前面得到的模型,在Android中通常有两种做法:把模型附加在应用包中,或者通过网络动态下载乃至动态更新。


端智能技术介绍
https://young-cloud-creator.github.io/on-device-ml/
作者
Young Cloud Creator
发布于
2022年8月14日
许可协议