目录

  • 前言
  • 一、完成Linux 本地编译环境的准备
    • 1. 下载安装patchelf
    • 2. 下载安装cmake
  • 二、源码编译
    • 1. 下载Paddle-Lite 源码
    • 2. 编译Paddle-Lite 预测库
    • 3. 安装Paddle-Lite
    • 4. 直接安装whl文件


前言

最近在学习PaddlePaddle,并且需要把训练好的模型部署在树莓派上。
Paddle-Lite简介:

Lite是一种轻量级、灵活性强、易于扩展的高性能的深度学习预测框架,它可以支持诸如ARM、OpenCL、NPU等等多种终端。

由于PaddlePaddle是不支持ARM架构CPU的,所以我们在树莓派上只可以安装Paddle-Lite。

同时我们可以从其官网了解到,树莓派安装Paddle-Lite只可以使用本地源码编译的方式

P.S. 除了下载源码并编译之外,我们也可以直接下载编译好的whl包并安装即可。
paddlelite 2.8.0:paddlelite2.8版本whl文件

也有2.6.0版本的paddlelite.whl包提供下载:
https://download.csdn/download/weixin_40973138/15929619

安装方式:
将whl文件下载至树莓派,然后执行pip install paddlelite-2.6.0-xxx.whl 即可(详见下文)。

我的整个安装过程所参考的文章:

  1. 本地编译ARM Linux(直接在RK3399或树莓派上编译)
  2. 源码编译 (ARMLinux)
  3. 树莓派4b学习笔记六:以源码编译的方式安装Paddlelite

接下来就开始吧!

一、完成Linux 本地编译环境的准备

这部分主要是安装一些基础的软件,用于完成Linux 本地编译环境的准备。

注意:本编译方法暂时只适用于ARM的设备

1. 下载安装patchelf

安装patchelf:

sudo apt install patchelf

然后更新一下目录:

sudo apt-get update

升级安装:

sudo apt-get install -y

-y的作用是对后续的操作都选择yes

gcc g++ make wget python unzip patchelf python-dev

2. 下载安装cmake

下载cmake压缩包并解压:

wget https://cmake/files/v3.20/cmake-3.20.0-rc4.tar.gz
tar -zxvf cmake-3.20.0-rc4.tar.gz

然后进行一些配置:

cd cmake-3.20.0-rc4
./configure

此处若出现Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR (missing: OPENSSL_LIBRARIES OPENSSL_INCLUDE_DIR)这种错误。

可输入(安装OpenSSL的编译依赖):sudo apt-get install libssl-dev

开始编译:

make

至此,输出结果应该是这样的:

然后安装:

sudo make install

输出结果:

查看cmake版本以验证安装成功:

cmake --version

本地编译环境的准备完成。

二、源码编译

1. 下载Paddle-Lite 源码

首先下载Paddle-Lite源码:

在此,我选择从Gitee上面下载,因为我这GitHub实在干不动~~

git clone https://gitee/paddlepaddle/paddle-lite.git

如果你想从GitHub下载,只需要将上述链接替换成https://github/PaddlePaddle/Paddle-Lite.git

源码下载完成后将其中的third-party 目录删除,这将使得编译脚本自动从国内CDN下载第三方库文件:

cd paddle-lite
git checkout release/v2.8

rm -rf third-party

注意:在此我选择将默认的4线程编译切换成单线程编译,因为我怀疑4线程编译的多次失败是树莓派的配置较低所导致。

export LITE_BUILD_THREADS=1

2. 编译Paddle-Lite 预测库

./lite/tools/build_linux.sh --arch=armv7hf --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

P.S. 一开始我除了--arch--with_python 外也有配置其他参数,但失败了很多次后,我就把参数精简到这两个,尽量排除因为其他参数而导致错误的可能。

编译成功:

3. 安装Paddle-Lite

首先贴上编译后的文件结构树状图:

inference_lite_lib.armlinux.armv8
├── cxx                                           C++ 预测库和头文件
│   ├── include                                   C++ 头文件
│   │   ├── 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                                       C++ 预测库
│       ├── libpaddle_api_light_bundled.a         C++ 静态库
│       └── libpaddle_light_api_shared.so         C++ 动态库
├── demo
│   └── python                                    Python 预测库demo
│
└── python                                        Python 预测库(需要打开with_python选项)
    ├── install
    │   └── dist
    │       └── paddlelite-*.whl                  Python whl包
    └── lib
        └── lite.so                               Python 预测库

我们的目标文件是paddlelite-*.whl,对其进行安装:

最后验证一下paddlelite 是否可以import:

大功告成。

4. 直接安装whl文件

注意:下列仅展示安装2.6版本的paddlelite,文件夹里面有2.8版本的paddlelite,安装方法与下同。

若上述方式始终不能顺利安装,那就直接安装whl文件吧。

首先把whl文件下载至树莓派:

然后执行安装命令:pip install paddlelite-2.6.0-cp37-cp37m-linux_armv7l.whl


通过pip list可以查看paddlelite的安装版本:


安装成功!

更多推荐

【超详细】树莓派4B 安装Paddle-Lite 2.8.0