树莓派4B编译paddlelite(详细步骤2022年)


这几天在树莓派上使用paddlelite部署paddlepaddle模型,
大大小小的报错能遇到坑的我应该全部都踩了个变

1.开发板环境

硬件:树莓派4B, 系统:raspberrypi 5.10.103-v7l+ 1529 SMP Tue Mar 8 12:24:00 GMT 2022 armv7l GNU

2.编译环境

使用本机docker环境给树莓派编译paddlelite,不建议使用树莓派自身编译,速度慢,而且bug多
也不建议使用自身电脑环境进行编译,因为cmake版本不同带来的openml_cxx不存在问题,和g+±arm-linux-gnueabihf版本等版本问题很烦。

本机环境: Linux shier 5.17.1-arch1-1 1 SMP PREEMPT Mon, 28 Mar 2022 20:55:33 +0000 x86_64 GNU/Linux
docker版本:Docker version 20.10.14, build a224086349

3.步骤

1.拉取官方docker 镜像

# 官方镜像
docker pull paddlepaddle/paddle-lite:2.0.0_beta
# 创建、并进入容器
sudo docker run -it \
  --name paddlelite_docker \
  --net=host \
  paddlepaddle/paddle-lite /bin/bash
  
(这里不选择挂载本机内的paddlelite文件)

2.克隆paddlelite

在docker中克隆paddlelite

git clone https://github.com/PaddlePaddle/Paddle-Lite.git
# 如果没有梯子就
git clone https://gitee.com/paddlepaddle/paddle-lite.git

注意一下从github clone下来的文件为Paddle-Lite,从gitee上的是paddle-lite
cd Paddle-Lite

3.选择版本

git checkout release/v2.0.0 (这个版本要使用编译出来的python的话没有whl文件,只有.so文件)
git checkout release/v2.10(这个正常,2.11也正常)

ok, 最基本的东西准备完了

官方的docker镜像中没有python3,需要自己手动装一个。
一般使用python3.7, 因为树莓派开发板上一般也是这个版本的python,让版本对应

3.1安装python3.7

先安装以下几个依赖环境。
apt update
apt install zlib* 
apt install libffi-dev 
apt install openssl openssl-dev
apt install patchelf

下载python

cd ~ 
wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz

解压python

tar -zxvf Python-3.7.0.tgz

创建python文件夹(因为是docker环境,后续可以删除,自己随便创一个就完了)

mkdir /usr/lib/python3.7

进入python目录,设置启动ssl

cd Python-3.7.0
./configure --prefix=/usr/lib/python3.7 -with-ssl-default-suites=openssl 

编译安装

make && make install

安装完成后
删除环境中原有的python2链接,建立新的软链接

rm /usr/bin/pip
rm -f /usr/bin/python
ln -s /usr/lib/python3.7/bin/python3.7 /usr/bin/python3
ln -s /usr/lib/python3.7/bin/pip3.7 /usr/bin/pip3
ln -s /usr/bin/pip3 /usr/bin/pip
ln -s /usr/bin/python3 /usr/bin/python

安装完成,检查一下,查看版本是否对应

python --version
pip list

编译paddlelite需要numpy和wheel,安装(可以换源再进行安装)

换源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
安装
pip install numpy
pip install wheel

4. 编译paddle-lite

如果需要编译产生whl文件的化需要进行修改Paddle-Lite文件夹中的/lite/tools/build_linux.sh文件

vim ./lite/tools/build_linux.sh

在如图所在位置添加
在这里插入图片描述

-DPYTHON_INCLUDE_DIR=$(python -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())")  \
-DPYTHON_LIBRARY=$(python -c "import distutils.sysconfig as sysconfig; print(sysconfig.get_config_var('LIBDIR'))")

因为不加上进行编译时会产生
Could NOT find PythonLibs (missing: PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS)_错误

如果是使用release/v2.0.0版本的化不一样

位置:
在这里插入图片描述
在这里插入图片描述
进行编译(官网有,这里同时也给出)

./lite/tools/build_linux.sh --arch=armv8 --with_python=ON

其他参数选择

--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.5|3.7) 编译whl的Python版本,默认为 None
--with_cv: (OFF|ON)             是否编译CV相关预处理库, 默认为 OFF
--with_log: (OFF|ON)            是否输出日志信息, 默认为 ON
--with_exception: (OFF|ON)      是否在错误发生时抛出异常,默认为 OFF

如果选择release/v2.0.0,命令为

./lite/tools/build.sh --arm_os=armlinux --arm_abi=armv8 --arm_lang=gcc --build_python=ON full_publish

5.编译完成

在buildxxxxxxxxxx.gcc文件夹下会产生inferxxx文件夹(release/v2.10版本)

目录结构
.
|-- bin
|   |-- benchmark_bin
|   `-- test_model_bin
|-- cxx
|   |-- include
|   |   |-- paddle_api.h
|   |   |-- paddle_image_preprocess.h
|   |   |-- paddle_lite_factory_helper.h
|   |   |-- paddle_place.h
|   |   |-- paddle_use_kernels.h
|   |   |-- paddle_use_ops.h
|   |   `-- paddle_use_passes.h
|   `-- lib
|       |-- liblite_pybind.so
|       |-- libpaddle_api_full_bundled.a
|       |-- libpaddle_api_light_bundled.a
|       |-- libpaddle_full_api_shared.so
|       `-- libpaddle_light_api_shared.so
|-- demo
|   |-- cxx
|   |   |-- mobilenetv1_full
|   |   |   |-- CMakeLists.txt
|   |   |   |-- build.sh
|   |   |   `-- mobilenet_full_api.cc
|   |   `-- mobilenetv1_light
|   |       |-- CMakeLists.txt
|   |       |-- build.sh
|   |       `-- mobilenet_light_api.cc
|   `-- python
|       |-- mobilenetv1_full_api.py
|       `-- mobilenetv1_light_api.py
`-- python
    |-- install
    |   |-- build
    |   |   |-- bdist.linux-x86_64
    |   |   |-- lib
    |   |   |   `-- paddlelite
    |   |   |       |-- __init__.py
    |   |   |       `-- lite.so
    |   |   `-- scripts-3.7
    |   |       `-- paddle_lite_opt
    |   |-- dist
    |   |   `-- paddlelite-a949e21-cp37-cp37m-linux_x86_64.whl
    |   |-- libs
    |   |-- lite
    |   |   |-- __init__.py
    |   |   |-- lite.so
    |   |   `-- paddle_lite_opt
    |   |-- paddlelite.egg-info
    |   |   |-- PKG-INFO
    |   |   |-- SOURCES.txt
    |   |   |-- dependency_links.txt
    |   |   `-- top_level.txt
    |   `-- setup.py
    `-- lib
        `-- lite.so

6. 安装

6.1 将文件从docker中拷贝出来

docker cp paddlelite_docker:文件 本机文件名

6.2 树莓派安装whl文件

pip install 文件名 就可以了。

使用

将whl文件拷贝至树莓派中,并直接使用pip install 文件名就完成了。
按照此流程一般情况下不会出错,由于篇幅问题,具体报错,和解决方法将在下一篇博客中给出

  • 2
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
你好!要在树莓派4B编译PaddleLite 2.8,你需要按照以下步骤进行操作: 1. 准备工作: - 确保你的树莓派已经安装了Raspberry Pi OS(先前称为Raspbian)。 - 确保你的树莓派已经连接到互联网。 2. 安装依赖: - 打开终端,并执行以下命令来更新系统软件包列表: ``` sudo apt update ``` - 安装所需的依赖库: ``` sudo apt install -y build-essential cmake git vim wget unzip sudo apt install -y libopencv-dev libopenblas-dev libprotobuf-dev protobuf-compiler sudo apt install -y libgoogle-glog-dev libgtest-dev libgtest-dev sudo apt install -y libatlas-base-dev libhdf5-serial-dev sudo apt install -y libyaml-cpp-dev ``` - 安装交叉编译工具链(ARMv8): ``` wget https://github.com/lhelontra/tensorflow-on-arm/releases/download/v2.4.0/tensorflow-2.4.0-cp37-none-linux_aarch64.whl sudo apt install -y python3-pip pip3 install tensorflow-2.4.0-cp37-none-linux_aarch64.whl ``` 3. 克隆PaddleLite仓库并编译: - 在终端中执行以下命令来克隆PaddleLite仓库: ``` git clone https://github.com/PaddlePaddle/Paddle-Lite.git ``` - 进入Paddle-Lite目录,并创建build目录: ``` cd Paddle-Lite mkdir build cd build ``` - 执行CMake配置命令: ``` cmake -DPADDLE_LITE_ARM=ON -DARM_TARGET_ARCH_ABI=armv8 -DWITH_STATIC_LIB=ON .. ``` - 执行编译命令: ``` make -j4 ``` 4. 安装PaddleLite库: - 执行以下命令来安装PaddleLite库到系统目录: ``` sudo make install ``` 完成上述步骤后,你应该已经成功在树莓派4B编译并安装了PaddleLite 2.8。你可以根据需要在自己的项目中使用PaddleLite进行推理。希望对你有所帮助!如果你还有其他问题,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值