Skip to content

Commit

Permalink
[Docs] fixed rknn building docs (PaddlePaddle#1754)
Browse files Browse the repository at this point in the history
* fixed rknn building docs

* fixed rknn building docs

* fixed rknn building docs

* fixed rknn building docs

* fixed rknn building docs

* fixed rknn building docs

* fixed rknn building docs
  • Loading branch information
Zheng-Bicheng authored Mar 31, 2023
1 parent 82ce988 commit 8deb2ed
Show file tree
Hide file tree
Showing 4 changed files with 146 additions and 94 deletions.
62 changes: 51 additions & 11 deletions docs/cn/build_and_install/rknpu2.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,14 +49,36 @@ wget https://bj.bcebos.com/fastdeploy/third_libs/rknn_toolkit2-1.4.2b3+0bdd72ff-
pip install rknn_toolkit2-1.4.2b3+0bdd72ff-cp36-cp36m-linux_x86_64.whl
```

## 安装FastDeploy C++ SDK
## 编译安装FastDeploy C++ SDK

针对RK356X和RK3588的性能差异,我们提供了两种编译FastDeploy的方式。
由于不同开发板的性能以及资源均不相同,我们提供了板端编译以及交叉编译两种方式来编译FastDeploy。
您可以根据需求从中选择一种来进行。

### FastDeploy后端支持详情

FastDeploy当前在`RK356X/RK3588`平台上支持后端引擎如下:

| 后端 | 平台 | 支持模型格式 | 说明 |
|:------------------|:---------------------|:-------|:-------------------------------------------|
| ONNX&nbsp;Runtime | RK356X <br> RK3588 | ONNX | 编译开关`ENABLE_ORT_BACKEND`为ON或OFF控制,默认OFF |
| RKNPU2 | RK356X <br> RK3588 | RKNN | 编译开关`ENABLE_RKNPU2_BACKEND`为ON或OFF控制,默认OFF |

### 板端编译FastDeploy C++ SDK

针对RK3588,其CPU性能较强,板端编译的速度还是可以接受的,我们推荐在板端上进行编译。以下教程在RK356X(debian10),RK3588(debian 11) 环境下完成。
对于内存比较充足且编译工具链完整的开发版,我们推荐直接在板端执行编译。
以下教程在RK356X(debian10),RK3588(debian 11) 环境下测试通过。

你可以通过修改以下参数来实现自定义你的FastDeploy工具包。

| 选项 | 说明 |
|:------------------------|:--------------------------------------------------------------------------|
| ENABLE_ORT_BACKEND | 默认OFF, 是否编译集成ONNX Runtime后端(CPU/GPU上推荐打开) |
| ENABLE_LITE_BACKEND | 默认OFF,是否编译集成Paddle Lite后端(编译Android库时需要设置为ON) |
| ENABLE_RKNPU2_BACKEND | 默认OFF,是否编译集成RKNPU2后端(RK3588/RK3568/RK3566上推荐打开) |
| ENABLE_VISION | 默认OFF,是否编译集成视觉模型的部署模块 |
| RKNN2_TARGET_SOC | ENABLE_RKNPU2_BACKEND时才需要使用这个编译选项。无默认值, 可输入值为RK3588/RK356X, 必须填入,否则 将编译失败 |
| ORT_DIRECTORY | 当开启ONNX Runtime后端时,用于指定用户本地的ONNX Runtime库路径;如果不指定,编译过程会自动下载ONNX Runtime库 |
| OPENCV_DIRECTORY | 当ENABLE_VISION=ON时,用于指定用户本地的OpenCV库路径;如果不指定,编译过程会自动下载OpenCV库 |

```bash
git clone https://github.com/PaddlePaddle/FastDeploy.git
Expand All @@ -71,13 +93,36 @@ cmake .. -DENABLE_ORT_BACKEND=ON \
-DENABLE_VISION=ON \
-DRKNN2_TARGET_SOC=RK3588 \
-DCMAKE_INSTALL_PREFIX=${PWD}/fastdeploy-0.0.0

# build if soc is RK3588
make -j8
# build if soc is RK356X
make -j4

make install
```

### 交叉编译FastDeploy C++ SDK

针对RK356X,其CPU性能较弱,我们推荐使用交叉编译进行编译。以下教程在Ubuntu 22.04环境下完成。
对于内存不够充足或者编译工具链不够完整的开发版,我们也提供了交叉编译的方式来帮助你完成FastDeploy编译。
以下的交叉编译过程在Ubuntu22.04下测试通过。

在开始交叉编译前,你需要按以下步骤配置安装环境,以确保板端不会出现glibc对应不上的错误。

```bash
sudo apt install cmake build-essential
wget https://bj.bcebos.com/paddle2onnx/libs/gcc-linaro-6.3.1-2017.tar.gz
tar -xzvf gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar.gz -C /path/to/save
```

你可以通过修改以下参数来实现自定义你的FastDeploy工具包。

| 选项 | 说明 |
|:------------------------|:--------------------------------------------------------------------------|
| ENABLE_RKNPU2_BACKEND | 默认OFF,是否编译集成RKNPU2后端(RK3588/RK3568/RK3566上推荐打开) |
| ENABLE_VISION | 默认OFF,是否编译集成视觉模型的部署模块 |
| RKNN2_TARGET_SOC | ENABLE_RKNPU2_BACKEND时才需要使用这个编译选项。无默认值, 可输入值为RK3588/RK356X, 必须填入,否则 将编译失败 |
| OPENCV_DIRECTORY | 当ENABLE_VISION=ON时,用于指定用户本地的OpenCV库路径;如果不指定,编译过程会自动下载OpenCV库 |

```bash
git clone https://github.com/PaddlePaddle/FastDeploy.git
Expand All @@ -87,8 +132,8 @@ cd FastDeploy
git checkout develop

mkdir build && cd build
cmake .. -DCMAKE_C_COMPILER=/home/zbc/opt/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc \
-DCMAKE_CXX_COMPILER=/home/zbc/opt/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ \
cmake .. -DCMAKE_C_COMPILER=/path/to/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc \
-DCMAKE_CXX_COMPILER=/path/to/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ \
-DCMAKE_TOOLCHAIN_FILE=./../cmake/toolchain.cmake \
-DTARGET_ABI=arm64 \
-DENABLE_ORT_BACKEND=OFF \
Expand All @@ -100,8 +145,6 @@ make -j8
make install
```

如果你找不到编译工具,你可以复制[交叉编译工具](https://bj.bcebos.com/paddle2onnx/libs/gcc-linaro-6.3.1-2017.zip)进行下载。

### 配置环境变量

为了方便大家配置环境变量,FastDeploy提供了一键配置环境变量的脚本,在运行程序前,你需要执行以下命令
Expand Down Expand Up @@ -150,8 +193,5 @@ pip3 install fastdeploy_python-0.0.0-cp39-cp39-linux_aarch64.whl

## 导航目录

* [RKNPU2开发环境搭建](../faq/rknpu2/environment.md)
* [编译FastDeploy](../faq/rknpu2/build.md)
* [RKNN模型导出建议](../faq/rknpu2/export.md)
* [RKNPU2模型速度一览表](../faq/rknpu2/rknpu2.md)
* [RKNPU2 常见问题合集](../faq/rknpu2/issues.md)
80 changes: 71 additions & 9 deletions docs/cn/faq/rknpu2/build.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,44 @@
# FastDeploy RKNPU2引擎编译

## FastDeploy后端支持详情
FastDeploy当前在RK平台上支持后端引擎如下:

FastDeploy当前在`RK356X/RK3588`平台上支持后端引擎如下:

| 后端 | 平台 | 支持模型格式 | 说明 |
|:------------------|:---------------------|:-------|:-------------------------------------------|
| ONNX&nbsp;Runtime | RK356X <br> RK3588 | ONNX | 编译开关`ENABLE_ORT_BACKEND`为ON或OFF控制,默认OFF |
| RKNPU2 | RK356X <br> RK3588 | RKNN | 编译开关`ENABLE_RKNPU2_BACKEND`为ON或OFF控制,默认OFF |

## 编译FastDeploy SDK
## 编译安装FastDeploy C++ SDK

由于不同开发板的性能以及资源均不相同,我们提供了板端编译以及交叉编译两种方式来编译FastDeploy。
您可以根据需求从中选择一种来进行。

### FastDeploy后端支持详情

针对RK356X和RK3588的性能差异,我们提供了两种编译FastDeploy的方式。
FastDeploy当前在`RK356X/RK3588`平台上支持后端引擎如下:

| 后端 | 平台 | 支持模型格式 | 说明 |
|:------------------|:---------------------|:-------|:-------------------------------------------|
| ONNX&nbsp;Runtime | RK356X <br> RK3588 | ONNX | 编译开关`ENABLE_ORT_BACKEND`为ON或OFF控制,默认OFF |
| RKNPU2 | RK356X <br> RK3588 | RKNN | 编译开关`ENABLE_RKNPU2_BACKEND`为ON或OFF控制,默认OFF |

### 板端编译FastDeploy C++ SDK

针对RK3588,其CPU性能较强,板端编译的速度还是可以接受的,我们推荐在板端上进行编译。以下教程在RK356X(debian10),RK3588(debian 11) 环境下完成。
对于内存比较充足且编译工具链完整的开发版,我们推荐直接在板端执行编译。
以下教程在RK356X(debian10),RK3588(debian 11) 环境下测试通过。

你可以通过修改以下参数来实现自定义你的FastDeploy工具包。

| 选项 | 说明 |
|:------------------------|:--------------------------------------------------------------------------|
| ENABLE_ORT_BACKEND | 默认OFF, 是否编译集成ONNX Runtime后端(CPU/GPU上推荐打开) |
| ENABLE_LITE_BACKEND | 默认OFF,是否编译集成Paddle Lite后端(编译Android库时需要设置为ON) |
| ENABLE_RKNPU2_BACKEND | 默认OFF,是否编译集成RKNPU2后端(RK3588/RK3568/RK3566上推荐打开) |
| ENABLE_VISION | 默认OFF,是否编译集成视觉模型的部署模块 |
| RKNN2_TARGET_SOC | ENABLE_RKNPU2_BACKEND时才需要使用这个编译选项。无默认值, 可输入值为RK3588/RK356X, 必须填入,否则 将编译失败 |
| ORT_DIRECTORY | 当开启ONNX Runtime后端时,用于指定用户本地的ONNX Runtime库路径;如果不指定,编译过程会自动下载ONNX Runtime库 |
| OPENCV_DIRECTORY | 当ENABLE_VISION=ON时,用于指定用户本地的OpenCV库路径;如果不指定,编译过程会自动下载OpenCV库 |

```bash
git clone https://github.com/PaddlePaddle/FastDeploy.git
Expand All @@ -30,13 +54,36 @@ cmake .. -DENABLE_ORT_BACKEND=ON \
-DENABLE_VISION=ON \
-DRKNN2_TARGET_SOC=RK3588 \
-DCMAKE_INSTALL_PREFIX=${PWD}/fastdeploy-0.0.0

# build if soc is RK3588
make -j8
# build if soc is RK356X
make -j4

make install
```

### 交叉编译FastDeploy C++ SDK

针对RK356X,其CPU性能较弱,我们推荐使用交叉编译进行编译。以下教程在Ubuntu 22.04环境下完成。
对于内存不够充足或者编译工具链不够完整的开发版,我们也提供了交叉编译的方式来帮助你完成FastDeploy编译。
以下的交叉编译过程在Ubuntu22.04下测试通过。

在开始交叉编译前,你需要按以下步骤配置安装环境,以确保板端不会出现glibc对应不上的错误。

```bash
sudo apt install cmake build-essential
wget https://bj.bcebos.com/paddle2onnx/libs/gcc-linaro-6.3.1-2017.tar.gz
tar -xzvf gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar.gz -C /path/to/save
```

你可以通过修改以下参数来实现自定义你的FastDeploy工具包。

| 选项 | 说明 |
|:------------------------|:--------------------------------------------------------------------------|
| ENABLE_RKNPU2_BACKEND | 默认OFF,是否编译集成RKNPU2后端(RK3588/RK3568/RK3566上推荐打开) |
| ENABLE_VISION | 默认OFF,是否编译集成视觉模型的部署模块 |
| RKNN2_TARGET_SOC | ENABLE_RKNPU2_BACKEND时才需要使用这个编译选项。无默认值, 可输入值为RK3588/RK356X, 必须填入,否则 将编译失败 |
| OPENCV_DIRECTORY | 当ENABLE_VISION=ON时,用于指定用户本地的OpenCV库路径;如果不指定,编译过程会自动下载OpenCV库 |

```bash
git clone https://github.com/PaddlePaddle/FastDeploy.git
Expand All @@ -46,8 +93,8 @@ cd FastDeploy
git checkout develop

mkdir build && cd build
cmake .. -DCMAKE_C_COMPILER=/home/zbc/opt/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc \
-DCMAKE_CXX_COMPILER=/home/zbc/opt/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ \
cmake .. -DCMAKE_C_COMPILER=/path/to/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc \
-DCMAKE_CXX_COMPILER=/path/to/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ \
-DCMAKE_TOOLCHAIN_FILE=./../cmake/toolchain.cmake \
-DTARGET_ABI=arm64 \
-DENABLE_ORT_BACKEND=OFF \
Expand All @@ -59,12 +106,27 @@ make -j8
make install
```

如果你找不到编译工具,你可以复制[交叉编译工具](https://bj.bcebos.com/paddle2onnx/libs/gcc-linaro-6.3.1-2017.zip)进行下载。
### 配置环境变量

### 板端编译Python SDK
为了方便大家配置环境变量,FastDeploy提供了一键配置环境变量的脚本,在运行程序前,你需要执行以下命令

```bash
# 临时配置
source PathToFastDeploySDK/fastdeploy_init.sh

# 永久配置
source PathToFastDeploySDK/fastdeploy_init.sh
sudo cp PathToFastDeploySDK/fastdeploy_libs.conf /etc/ld.so.conf.d/
sudo ldconfig
```

## 编译FastDeploy Python SDK

除了NPU,Rockchip的芯片还有其他的一些功能。
这些功能大部分都是需要C/C++进行编程,因此如果您使用到了这些模块,我们不推荐您使用Python SDK.
Python SDK的编译暂时仅支持板端编译, 以下教程在RK3568(debian 10)、RK3588(debian 11) 环境下完成。Python打包依赖`wheel`,编译前请先执行`pip install wheel`


```bash
git clone https://github.com/PaddlePaddle/FastDeploy.git
cd FastDeploy
Expand Down
70 changes: 10 additions & 60 deletions docs/cn/faq/rknpu2/environment.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,71 +5,24 @@

在FastDeploy上部署模型前我们需要搭建一下开发环境。FastDeploy将环境搭建分成板端推理环境搭建和PC端模型转换环境搭建两个部分。

## 板端推理环境搭建

根据开发者的反馈,我们提供了一键安装脚本和命令行安装开发版驱动两种方式来安装板端的推理环境。

### 通过脚本安装

多数开发者不喜欢使用复杂的命令行来进行安装,FastDeploy贴心的为开发者提供了一键安装稳定版RKNN的方式。参考以下命令,即可一键安装板端编译环境

```bash
# 下载解压rknpu2_device_install_1.4.0
wget https://bj.bcebos.com/fastdeploy/third_libs/rknpu2_device_install_1.4.0.zip
unzip rknpu2_device_install_1.4.0.zip

cd rknpu2_device_install_1.4.0
# RK3588运行以下代码
sudo rknn_install_rk3588.sh
# RK356X运行以下代码
sudo rknn_install_rk356X.sh
```

### 通过命令行安装

在开发的过程中,有的开发者希望能够体验到最新的RK驱动,我们也提供了对应的安装方式,使用以下下命令行即可从零开始安装RKNN的驱动。

```bash
# 安装必备的包
sudo apt update -y
sudo apt install -y python3
sudo apt install -y python3-dev
sudo apt install -y python3-pip
sudo apt install -y gcc
sudo apt install -y python3-opencv
sudo apt install -y python3-numpy
sudo apt install -y cmake

# 下载rknpu2
# RK3588运行以下代码
git clone https://gitee.com/mirrors_rockchip-linux/rknpu2.git
sudo cp ./rknpu2/runtime/RK3588/Linux/librknn_api/aarch64/* /usr/lib
sudo cp ./rknpu2/runtime/RK3588/Linux/rknn_server/aarch64/usr/bin/* /usr/bin/

# RK356X运行以下代码
git clone https://gitee.com/mirrors_rockchip-linux/rknpu2.git
sudo cp ./rknpu2/runtime/RK356X/Linux/librknn_api/aarch64/* /usr/lib
sudo cp ./rknpu2/runtime/RK356X/Linux/rknn_server/aarch64/usr/bin/* /usr/bin/
```

## 安装rknn_toolkit2

安装rknn_toolkit2中会存在依赖问题,这里介绍以下如何安装。 rknn_toolkit2依赖一些特定的包,因此建议使用conda新建一个虚拟环境进行安装。
安装conda的方法百度有很多,这里跳过,直接介绍如何安装rknn_toolkit2。
安装rknn_toolkit2中会存在依赖问题,这里介绍以下如何安装。

### 下载rknn_toolkit2
一般可以通过git直接下载rknn_toolkit2
```bash
git clone https://github.com/rockchip-linux/rknn-toolkit2.git
```

### 下载安装需要的软件包

安装rknntoolkit2之前,你需要安装以下依赖包。

```bash
sudo apt-get install libxslt1-dev zlib1g zlib1g-dev libglib2.0-0 \
libsm6 libgl1-mesa-glx libprotobuf-dev gcc g++
```

### 安装rknn_toolkit2环境

rknn_toolkit2依赖一些特定的包,因此建议使用conda新建一个虚拟环境进行安装。

```bash
# 创建虚拟环境
conda create -n rknn2 python=3.6
Expand All @@ -79,13 +32,10 @@ conda activate rknn2
pip install numpy==1.16.6

# 安装rknn_toolkit2-1.3.0_11912b58-cp38-cp38-linux_x86_64.whl
cd ~/下载/rknn-toolkit2-master/packages
pip install rknn_toolkit2-1.3.0_11912b58-cp38-cp38-linux_x86_64.whl
wget https://bj.bcebos.com/fastdeploy/third_libs/rknn_toolkit2-1.4.2b3+0bdd72ff-cp36-cp36m-linux_x86_64.whl
pip install rknn_toolkit2-1.4.2b3+0bdd72ff-cp36-cp36m-linux_x86_64.whl
```

## 资源链接

* [RKNPU2、rknntoolkit2开发板下载地址 密码:rknn](https://eyun.baidu.com/s/3eTDMk6Y)

## 其他文档
- [RKNN 模型转换文档](./export.md)
* [rknntoolkit2开发板下载地址 密码:rknn](https://eyun.baidu.com/s/3eTDMk6Y)
Loading

0 comments on commit 8deb2ed

Please sign in to comment.