Pytorch模型通过paddlelite部署到嵌入式设备

Pytorch模型通过paddlelite部署到嵌入式设备
一.把模型转为嵌入式设备能够识别的格式
1.把.pt或.pth的pytorch模型转为.onnx格式中间过渡状态模型格式,github上X2paddle下面有torch2onnx转换代码。
2.把onnx转为paddlepaddle格式模型,
命令行:x2paddle --framework=onnx --model=yolov5s.onnx --save_dir=pd_model_yolov5s,savedir下面保存了paddle格式模型。
一般可以把模型合并为__model, _params两个打包文件。
命令行:python tools/merge_params.py pd_model_yolov5s/inference_model new_pd_yolov5s_model

3.通过paddlelite工具把paddle模型转为paddlelite模型( .nb格式),支持嵌入式设备。
paddle_lite_opt --model_file=./new_pd_yolov5s_model/model --param_file=./new_pd_yolov5s_model /params --optimize_out_type=naive_buffer --optimize_out=pd_yolov5s --valid_targets=arm
如果这里转模型触发RuntimeError: Inferred shape and existing shape differ in dimension 2: (640) vs (320),这是paddle框架的bug,我给paddle维护人员提出了该问题,已得到修复。自行修改x2paddle对应的三个文件https://github.com/PaddlePaddle/X2Paddle/pull/403

二、安装Android Studio环境,把模型导入嵌入式设备
1.Android Studio官网下载安装环境。网上搜指导文档安装即可,安装好后执行richard@richard:/usr/local/java/android-studio/bin$ ./studio.sh
2、Android工程中导入模型,编译运行。/home/richard/yangqingchuan/git_codes/X2Paddle/Paddle-Lite-Demo/PaddleLite-android-demo/object_detection_demo/app/src/main/assets这是paddlelite的demo,里面有各种模型,可以直接编译运行在嵌入式设备。 我们可以把自己的模型放入models目录,训练的分类标签放入labels,预测demo图片放在images。然后编译编译文件在build目录下面。 把嵌入式设备通过USB接口连接,选择设备运行。(首先会把把模型上传设备,然后在设备端执行模型,执行信息会与服务端控制台共享,在控制台可以观察日志)
注意:采用大模型运行可能会因为内存占用太多被强制kill掉。一定要选用小模型,节省内存。
参考文档:
1.https://paddle-lite.readthedocs.io/zh/latest/user_guides/x2paddle.html
2.https://github.com/PaddlePaddle/Paddle-Lite-Demo
3.https://blog.csdn.net/qq_33200967/article/details/107741168#t2

你可能感兴趣的:(嵌入式,pytorch,android,studio)