地平线
基本流程就是
飞桨模型训练->使用paddle2onnx转化成onnx模型->进行模型推理->模型量化->板子上测试
假设,我们已经训练好了一个paddle的模型,现在使用
pip install paddle2onnx onnx
安装paddle2onnx和onnx两个包,在进行模型转化的时候一定要把BCHW的B设置为1
# 定义输入数据
input_spec = paddle.static.InputSpec(shape=[1, 3, 224, 224], dtype='float32', name='image')
# ONNX模型导出
# enable_onnx_checker设置为True,表示使用官方ONNX工具包来check模型的正确性,需要安装ONNX(pip install onnx)
paddle.onnx.export(net, 'mobilenet_v2', input_spec=[input_spec], opset_version=10, enable_onnx_checker=True)
设置好对应的输入维度,以及类型,然后使用paddle.onnx.export导出onnx模型
转化结束后需要使用地平线提供的天工开物工具链对onnx进行模型校验与转化,获得bin文件
然后使用天公开物工具链,调用上板测试模块,进行应用构建,数据处理,通过scp指令发送到开发板下,执行评测脚本即可完成推理过程。
参考项目:https://aistudio.baidu.com/aistudio/projectdetail/1818294?channelType=0&channel=0
Jetson nano
先下载官方编译好的Jetson nano预测库:https://paddleinference.paddlepaddle.org.cn/user_guides/download_lib.html#python
使用pip3 install paddlepaddle_gpu-2.1.1-cp36-cp36m-linux_aarch64.whl 进行安装
使用!git clone https://github.com/PaddlePaddle/Paddle-Inference-Demo.git拉取paddle-inference-demo
修改run.sh文件中的python为python3
运行内存尽量给大。
在demo中主要由以下几步重要的部署步骤
从infer_cfg.yml文件中读取label信息
配置.pdmodel和.pdiparams文件路径,并放入到Paddle.inference的Config类的实例对象中
如果可以使用GPU则需要手动分配GPU显存和对应的GPU号,开启IR优化和内存优化
使用create_predictor这个API构建预测器
使用cv2对图片进行加载和前处理
使用预测器的get_input_names的方法,获取输入层的名字,将图片设置到预测器中,启用predictor.run()即可完成推理过程。