AI应用的核心包括以下两大块:如何开发一个模型、以及如何将模型部署到项目进行应用。
现在有许多关于AI的教程,比如如何进行目标检测、图像分类、NLP以及构建聊天机器人等,反复强调相同的几点:
- 首先,使用像飞桨这样的深度学习平台开发模型。
- 然后,将模型打包到网页Paddle.js、移动端Paddle Lite、单机Paddle Inference、或者服务器Paddle Servering。
如何开发一个模型,无论是学术论文还是工业实践,相关的详细讲解随处可见;而如何实现第二点的细节,相关的讲解却很少。
本文将为大家详细解读将模型集成到移动端应用的核心代码。其他部署详解后续会陆续推出,敬请期待哦!
集成流程
对所有模型来说,将模型集成到移动端应用的流程是相同的:
![19610481fed1c599acf7c28295a0c469.png](https://img-blog.csdnimg.cn/img_convert/19610481fed1c599acf7c28295a0c469.png)
集成流程分两大阶段:
- 模型训练阶段:主要解决模型训练,利用标注数据训练出对应的模型文件。面向端侧进行模型设计时,需要考虑模型大小和计算量。
- 模型部署阶段:
- 模型转换:如果是Caffe, TensorFlow或ONNX平台训练的模型,需要使用X2Paddle工具将模型转换到飞桨的格式。本次使用的ocr模型是使用Paddle平台训练的模型,因此不需要进行转换。
- (可选)模型压缩:主要优化模型大小,借助PaddleSlim提供的剪枝、量化等手段降低模型大小,以便在端上使用。
- 将模型部署到Paddle Lite。
- 在终端上通过调用Paddle Lite提供的API接口(C++、Java、Python等API接口),完成推理相关的计算。
具体实现方法
移动端的AI应用开发具体实现,包含以下操作:
![084ba8823cc1d571265968f740db0aa9.png](https://img-blog.csdnimg.cn/img_convert/084ba8823cc1d571265968f740db0aa9.png)
- 生成和优化模型。先经过模型训练得到Paddle模型,该模型不能直接用于Paddle Lite部署,需先通过Paddle Lite的opt离线优化工具优化,然后得到Paddle Lite nb模型。如果是Caffe, TensorFlow或ONNX平台训练的模型,需要使用X2Paddle工具将模型转换到Paddle模型格式,再使用opt优化。X2Paddle使用方法:https://paddle-lite.readthedocs.io/zh/latest/user_guides/x2paddle.html
opt工具使用方法:https://paddle-lite.readthedocs.io/zh/latest/user_guides/model_optimize_tool.html - 获取Paddle Lite推理库。Paddle Lite新版本发布时已提供预编译库,因此无需进行手动编译,直接下载编译好的推理库文件即可。
- 构建推理程序。使用前续步骤中编译出来的推理库、优化后模型文件,首先经过模型初始化,配置模型位置、线程数等参数,然后进行图像预处理,如图形转换、归一化等处理,处理好以后就可以将数据输入到模型中执行推理计算,并获得推理结果。
Paddle Lite预测库
Paddle Lite库可以通过飞桨下载,链接:
https://paddle-lite.readthedocs.io/zh/latest/user_guides/release_lib.html。
![6fad9819a5b77069fa5653d44f0bc8fe.png](https://img-blog.csdnimg.cn/img_convert/6fad9819a5b77069fa5653d44f0bc8fe.png)
模型文件