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

104 阅读4分钟

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

本笔记内容是第六课的端智能技术演进与实践。

1 端智能技术介绍

端智能(On-Device Machine Learning):把机器学习/深度学习算法模型应用、部署到端设备(手机、IoT设备等)上。

端设备的算力越来越强大。端智能相对于云端,有更高的实时性、更低的延迟,可以离线操作,成本低,保护隐私。

但端智能的算力仍然与云端有较大的差异。所以端智能和云端智能相结合是更常用、效果更好的方式。

端侧机器学习框架:

Google: TF Lite、ML Kit

华为:HiAI、ML Kit

Meta:PyTorch Mobile、PyTorch Live

Apple:CoreML

腾讯:NCNN、TNN

阿里:MNN

百度:Paddle-Lite

小米:Mace

2 端智能技术实践案例

2.1 端智能落地方法

分为三个步骤。

1)明确问题和方案。定义问题,描述问题。调研并设计通过机器学习解决问题的方案。

2)训练AI模型。首先收集数据,然后设计、训练机器学习模型。获得模型后,针对端侧做优化、模型压缩、模型转换。

3)将AI模型在移动端部署应用。部署后执行推理预测,通过获得的结果执行业务策略。

2.2 手写输入数字识别案例

手写体识别是机器学习的基本案例,本案例的需求是支持用户输入0-9十个数字,识别出用户手写的内容。

数据收集可以使用开源数据集,可以合成数据,也可以通过人工收集、标注的方式。本案例使用了第三种方式,通过设计一个数据采集程序,请用户手写指定的数字。收集的数据保存在手机存储中并上传云端。

完成收集后做了数据增广,即对原始图片做旋转、平移、缩放等变换方式,目的是使数据集得到扩充,增强模型的适应能力。

随后根据所选用的算法设计训练模型。本案例使用神经网络模型,使用了tensorflow。利用keras构建模型。

模型转换方面,该案例使用了TFLite提供的转换器TFLite Convert。

模型部署方面,比较简单的做法是放在App中的assets目录中,本案例使用了这种方式。进阶的做法是URL动态下载,这样App包的体积得到了减小,还支持动态更新。

随后在移动端加载模型,完成推理预测。本步骤中模型的输入需要先将图片处理成模型可接受的输入格式。

通过演示的推测结果,发现在输入数字8时检测不准确。需要增加数据、尝试更复杂的模型,不断优化,以获得更好的结果。

2.3 左右手识别案例

本案例介绍了另一种端智能应用。需求的背景是判断用户是在用左手还是右手使用手机,从而给出不同的操作界面。给出的界面可以是激进的,即左手右手两者场景的按钮位置完全颠倒;也可以是保守的,即调整按钮的长度。

本案例的收集方式是通过邀请内测用户使用特殊的就客户端收集。

本案例使用了二分类模型,同样应用卷积神经网络。

训练样本包括X和Y。X需要采样对齐成九个固定点的输入,Y为标签(左/右)。

3 端智能工程师成长路线

回顾端智能流程,从问题发现到设计解决方案,属于架构工作;从收集训练数据到模型的优化处理,是算法工作;经过不断的迭代调优后,从模型部署到业务调用,是工程工作。

入门需要了解端智能技术的能力,了解常用的端智能框架。同时,也应该掌握移动端开发技术和机器学习/深度学习的基础知识。

进阶需要更深入理解业务,设计端智能解决方案并建立端智能架构,更好地解决业务问题。

4 总结

本课主要介绍了端智能的基本应用流程,并通过两个场景案例的介绍举例。最后讲解端智能工程师的成长路线,在各个阶段需具备的技术能力。