想在手机上面玩AI目标检测,使用的是Termux环境,加编译的二进制可执行代码,因为PaddleX训练出的模型是不能进行使用的,需要转换成nb格式来使用,经过近一天的折腾总算弄成功,在这里做个总结,方便需要的朋友
在Paddle_37中安装
pip 环境为
paddlex 2.1.0
paddlepaddle-gpu 2.3.2.post116
protobuf 3.20.0
paddlepaddle-gpu 感觉应该是没有什么用
对protobuf有要求,必需要在3.20以下,有出错误提示
第一步:将PaddleX模型导出为inference模型
这次是在WIN环境下面进行的操作,之前尝试在Ubuntu 22.0.4,Python 3.10环境安装
pip install paddlex 结果出错,后面在WIN 10 Python 3.7系统下,按错误提示处理一下就成功安装
按"部署模型导出"文章下载演示:xiaoduxiong_epoch_12.tar.gz,尝试进行转换不成功
出现的是这个提示:
Exception: Current version is 2.1.0, a model trained by PaddleX=0.1.1.github cannot be load.
使用这个目录的才成功,T0002\output\best_model,这是使用PaddleX GUI界面版本训练出的结果数据
这里用的是
执行下的命令
paddlex --export_inference --model_dir="D:\PaddleX\paddlex_workspace\projects\P0002\T0002\output\best_model" --save_dir="D:\PaddleX-develop\static\deploy\lite\inference_model"
其它的调整参考,这次没有使用
--fixed_input_shape=[640,960]
第二步:将inference模型优化为Paddle Lite模型,在Ubuntu2204 Python 3.10环境
pip install paddlelite
paddlelite 2.13rc0
因为paddlex安装不上,将上一步产生的inference_model放入目录/home/ubuntu/
cd /home/ubuntu/
执行如下命令:
paddle_lite_opt --model_dir=/home/ubuntu/inference_model/ --valid_targets=arm --optimize_out=mobilenet_v1_opt
运行后的结果:
ubuntu@ubuntu:~$ paddle_lite_opt --model_dir=/home/ubuntu/inference_model/ --valid_targets=arm --optimize_out=mobilenet_v1_opt
Loading topology data from /home/ubuntu/inference_model//model.pdmodel
Loading params data from /home/ubuntu/inference_model//model.pdiparams
1. Model is successfully loaded!
2. Model is optimized and saved into mobilenet_v1_opt.nb successfully
参数比较多,可以多研究,这里只测试能不能成功
最终得到mobilenet_v1_opt.nb
参考model.pdiparams,文件感觉大小是一模一样的
参考文章
Paddle Lite 介绍
https://www.paddlepaddle.org.cn/lite/develop/guide/introduction.html
模型优化工具 opt
https://www.paddlepaddle.org.cn/lite/develop/user_guides/model_optimize_tool.html
python 调用 opt 转化模型
https://www.paddlepaddle.org.cn/lite/develop/user_guides/opt/opt_python.html
Android平台
https://paddlex.readthedocs.io/zh_CN/release-1.3/deploy/paddlelite/android.html
部署模型导出
https://paddlex.readthedocs.io/zh_CN/release-1.3/deploy/export_model.html