一、何为Paddle lite
官方解释如下:
Paddle Lite是飞桨基于Paddle Mobile全新升级推出的端侧推理引擎,在多硬件、多平台以及硬件混合调度的支持上更加完备,为包括手机在内的端侧场景的AI应用提供高效轻量的推理能力,有效解决手机算力和内存限制等问题,致力于推动AI应用更广泛的落地。
官网链接:
Paddle Lite_飞桨-源于产业实践的开源深度学习平台 (paddlepaddle.org.cn)
那么浅显一点的理解就是一个神经网络的加速工具,深度学习加速器,类比为TensorRT等。在硬件上部署深度学习模型时,常常借助加速器,深度学习加速器一般叫Deep Learning Acceletor或Deep Learning Processor,一般可简称DLA或DLP。
二、Paddle lite的简单使用
2.1 通过代码块中实现(推荐)
参考项目自定义数据集+树莓派4B搭建----ssd_mobilenet_v1_voc - 飞桨AI Studio (baidu.com)
感谢大佬!
首先准备一个训练好的模型,注意,该模型必须为paddle框架。
这里我们准备的原生模型是
我们需要将原生模型进行转换,使其成为预测模型。
该代码是建立在配置好PaddleDetection工具的基础上的,所以原生模型路径为:
./PaddleDetection/output/ssd_mobilenet_v1_voc/model_final...
#转化为预测模型
!python -u tools/export_model.py -c configs/ssd/ssd_mobilenet_v1_voc.yml --output_dir=./inference_model_final
生成的预测模型保存在 ./PaddleDetection/inference_model_final/ssd_mobilenet_v1_voc 文件夹下,会生成两个文件,模型文件名和参数文件名分别为__model__和__params__
注:这里选择的训练神经网络是ssd_mobilenet_v1,所以生成在ssd_mobilenet_v1_voc 文件夹,具体位置取决于上述代码中"configs/"中的选择(与模型训练保持一致)。
PaddlePaddle的原生模型需要经过opt工具转化为Paddle-Lite可以支持的naive_buffer格式
%cd /home/aistudio/
#复制opt文件到相应目录下
!cp opt /home/aistudio/PaddleDetection/inference_model_final/ssd_mobilenet_v1_voc
#进入预测模型文件夹
%cd /home/aistudio/PaddleDetection/inference_model_final/ssd_mobilenet_v1_voc
#下载opt文件
#!wget https://github.com/PaddlePaddle/Paddle-Lite/releases/download/v2.3.0/opt
#给opt加上可执行权限
!chmod +x opt
#使用opt进行模型转化,将__model__和__params__转化为model.nb
!./opt --model_file=__model__ --param_file=__params__ --optimize_out_type=naive_buffer --optimize_out=./model
!ls
运行过程及结果示例:
2.2 通过终端实现
另一种方法是通过终端命令实现,但是终端命令实现时极易报错缺少算子,这里为何出现这样问题的原因笔者还未找到,在网络上搜寻结果大多回答都是paddlelite还没提供那些算子,但是同样的原生模型,2.1方法就可以实现,所以先把方法写在这里,大家作一个参考叭。(如果有好办法,感谢留言~万分感谢)
红线部分以下为可参考代码。
注:
此处,
--model_dir=./moxing里为pdmodel及pdparams。
--valid_targets=intel_fpga为适配硬件类型,可以根据使用的硬件平台修改。
--optimize_out为输出路径
初学paddle lite,若有错误,感谢指出~