Paddle-Lite——在树莓派4B端(Raspi OS)基于python API部署Paddle模型

Paddle Lite环境准备

硬件准备

  • 树莓派4B
  • usb摄像头
  • 装好Buster的镜像源的SD卡(Paddle Lite目前不支持arm Ubuntu)

基本软件环境准备

摄像头准备

参考文章:树莓派摄像头的安装、配置与验证

编译库准备

完成gcc、g++、opencv、cmake的安装:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install -y gcc g++ make wget python unzip patchelf python-dev
#下载cmake
wget https://www.cmake.org/files/v3.10/cmake-3.10.3.tar.gz

在这一步如果下载很慢,这里我也提供了cmake-3.10.3.tar.gz的包,需要的可以自行下载。

#解压
tar -zxvf cmake-3.10.3.tar.gz
#进入文件夹
cd cmake-3.10.3
#环境配置
./configure
#make
make

在这里插入图片描述

sudo make install

在这里插入图片描述
到这里就完成了所有的环境准备。

下载Paddle-Lite

git clone很慢的同学参考博客:git clone速度加快方法

# 1. 下载Paddle-Lite源码 并切换到release分支
git clone https://github.com/PaddlePaddle/Paddle-Lite.git
cd Paddle-Lite && git checkout release/v2.6

# 删除此目录,编译脚本会自动从国内CDN下载第三方库文件
rm -rf third-party

编译

树莓派4B官方的操作系统是32位,armv7hf架构。

cd Paddle-Lite
./lite/tools/build_linux.sh --arch=armv7hf --with_python=ON --python_version=3.7 --with_cv=ON --with_exception=ON
查看编译的可选项
./lite/tools/build_linux.sh help
  • 具体选项
--arch: (armv8|armv7|armv7hf)   arm版本,默认为armv8
--toolchain: (gcc|clang)        编译器类型,默认为gcc
--with_extra: (OFF|ON)          是否编译OCR/NLP模型相关kernel&OP,默认为OFF,只编译CV模型相关kernel&OP
--with_python: (OFF|ON)         是否编译python预测库, 默认为 OFF
--python_version: (2.7|3.6|3.7等等) 编译whl的Python版本,默认为 None
--with_cv: (OFF|ON)             是否编译CV相关预处理库, 默认为 OFF
--with_log: (OFF|ON)            是否输出日志信息, 默认为 ON
--with_exception: (OFF|ON)      是否在错误发生时抛出异常,默认为 OFF   

编译完成
在这里插入图片描述

安装编译生成的python paddle-lite包

进入dist目录下
cd /Paddle-Lite/build.lite.linux.armv7hf.gcc/inference_lite_lib.armlinux.armv7hf/python/install/dist

在这里插入图片描述

pip3 install paddlelite-2708c2fe-cp37-cp37m-linux_armv7l.whl

在这里插入图片描述

运行基于python API的demo程序

准备模型文件

  • 下载模型
wget http://paddle-inference-dist.bj.bcebos.com/mobilenet_v1.tar.gz
tar zxf mobilenet_v1.tar.gz
  • 采用opt工具转换模型
paddle_lite_opt --model_dir=./mobilenet_v1  \
                --optimize_out=mobilenet_v1_opt \
                --optimize_out_type=naive_buffer \
                --valid_targets=arm

转化成功
在这里插入图片描述

运行模型

需要注意的是,在这里有两个demo文件,他们的区别在于

  • full_api.py中需要的模型文件为__model____param__文件,API详解:CxxPredictor
  • light_api.py中需要的模型文件为opt转换后的model.nb文件,API详解:LightPredictor
# light api的输入为优化后模型文件mobilenet_v1_opt.nb
python3 mobilenetv1_light_api.py --model_dir=mobilenet_v1_opt.nb

在这里插入图片描述

部署自己的模型

Paddle用于推理的模型是通过save_inference_model这个API保存下来的,保存的格式有两种,在这里将在AI studio上运行生成的模型参数文件下载并挂载在树莓派上:

两种模型格式

  • non-combined形式:参数保存到独立的文件,如设置 model_filenameNone , params_filenameNone
    在这里插入图片描述

  • combined形式:参数保存到同一个文件,如设置 model_filenamemodel , params_filenameparams

在这里插入图片描述

编译opt工具

在树莓派端编译:

cd Paddle-Lite
./lite/tools/build.sh build_optimize_tool

在这里插入图片描述

使用opt转换模型
paddle_lite_opt --model_dir=./mobilenet_v1 \
      --valid_targets=arm \
      --optimize_out_type=naive_buffer \
      --optimize_out=mobilenet_v1_opt

具体的API详情参考:

编译过程参考:

  • 7
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值