[Docs] fixed rknn building docs (#1754)

* 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
This commit is contained in:
Zheng-Bicheng
2023-03-31 10:43:45 +08:00
committed by GitHub
parent 82ce988573
commit 8deb2ed179
4 changed files with 146 additions and 94 deletions

View File

@@ -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 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 ### 板端编译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 ```bash
git clone https://github.com/PaddlePaddle/FastDeploy.git git clone https://github.com/PaddlePaddle/FastDeploy.git
@@ -71,13 +93,36 @@ cmake .. -DENABLE_ORT_BACKEND=ON \
-DENABLE_VISION=ON \ -DENABLE_VISION=ON \
-DRKNN2_TARGET_SOC=RK3588 \ -DRKNN2_TARGET_SOC=RK3588 \
-DCMAKE_INSTALL_PREFIX=${PWD}/fastdeploy-0.0.0 -DCMAKE_INSTALL_PREFIX=${PWD}/fastdeploy-0.0.0
# build if soc is RK3588
make -j8 make -j8
# build if soc is RK356X
make -j4
make install make install
``` ```
### 交叉编译FastDeploy C++ SDK ### 交叉编译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 ```bash
git clone https://github.com/PaddlePaddle/FastDeploy.git git clone https://github.com/PaddlePaddle/FastDeploy.git
@@ -87,8 +132,8 @@ cd FastDeploy
git checkout develop git checkout develop
mkdir build && cd build 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 \ 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=/home/zbc/opt/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ \ -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 \ -DCMAKE_TOOLCHAIN_FILE=./../cmake/toolchain.cmake \
-DTARGET_ABI=arm64 \ -DTARGET_ABI=arm64 \
-DENABLE_ORT_BACKEND=OFF \ -DENABLE_ORT_BACKEND=OFF \
@@ -100,8 +145,6 @@ make -j8
make install make install
``` ```
如果你找不到编译工具,你可以复制[交叉编译工具](https://bj.bcebos.com/paddle2onnx/libs/gcc-linaro-6.3.1-2017.zip)进行下载。
### 配置环境变量 ### 配置环境变量
为了方便大家配置环境变量FastDeploy提供了一键配置环境变量的脚本在运行程序前你需要执行以下命令 为了方便大家配置环境变量FastDeploy提供了一键配置环境变量的脚本在运行程序前你需要执行以下命令
@@ -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) * [RKNN模型导出建议](../faq/rknpu2/export.md)
* [RKNPU2模型速度一览表](../faq/rknpu2/rknpu2.md) * [RKNPU2模型速度一览表](../faq/rknpu2/rknpu2.md)
* [RKNPU2 常见问题合集](../faq/rknpu2/issues.md)

View File

@@ -2,20 +2,44 @@
# FastDeploy RKNPU2引擎编译 # FastDeploy RKNPU2引擎编译
## FastDeploy后端支持详情 ## FastDeploy后端支持详情
FastDeploy当前在RK平台上支持后端引擎如下:
FastDeploy当前在`RK356X/RK3588`平台上支持后端引擎如下:
| 后端 | 平台 | 支持模型格式 | 说明 | | 后端 | 平台 | 支持模型格式 | 说明 |
|:------------------|:---------------------|:-------|:-------------------------------------------| |:------------------|:---------------------|:-------|:-------------------------------------------|
| ONNX&nbsp;Runtime | RK356X <br> RK3588 | ONNX | 编译开关`ENABLE_ORT_BACKEND`为ON或OFF控制默认OFF | | ONNX&nbsp;Runtime | RK356X <br> RK3588 | ONNX | 编译开关`ENABLE_ORT_BACKEND`为ON或OFF控制默认OFF |
| RKNPU2 | RK356X <br> RK3588 | RKNN | 编译开关`ENABLE_RKNPU2_BACKEND`为ON或OFF控制默认OFF | | RKNPU2 | RK356X <br> RK3588 | RKNN | 编译开关`ENABLE_RKNPU2_BACKEND`为ON或OFF控制默认OFF |
## 编译FastDeploy 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 ### 板端编译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 ```bash
git clone https://github.com/PaddlePaddle/FastDeploy.git git clone https://github.com/PaddlePaddle/FastDeploy.git
@@ -30,13 +54,36 @@ cmake .. -DENABLE_ORT_BACKEND=ON \
-DENABLE_VISION=ON \ -DENABLE_VISION=ON \
-DRKNN2_TARGET_SOC=RK3588 \ -DRKNN2_TARGET_SOC=RK3588 \
-DCMAKE_INSTALL_PREFIX=${PWD}/fastdeploy-0.0.0 -DCMAKE_INSTALL_PREFIX=${PWD}/fastdeploy-0.0.0
# build if soc is RK3588
make -j8 make -j8
# build if soc is RK356X
make -j4
make install make install
``` ```
### 交叉编译FastDeploy C++ SDK ### 交叉编译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 ```bash
git clone https://github.com/PaddlePaddle/FastDeploy.git git clone https://github.com/PaddlePaddle/FastDeploy.git
@@ -46,8 +93,8 @@ cd FastDeploy
git checkout develop git checkout develop
mkdir build && cd build 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 \ 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=/home/zbc/opt/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ \ -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 \ -DCMAKE_TOOLCHAIN_FILE=./../cmake/toolchain.cmake \
-DTARGET_ABI=arm64 \ -DTARGET_ABI=arm64 \
-DENABLE_ORT_BACKEND=OFF \ -DENABLE_ORT_BACKEND=OFF \
@@ -59,12 +106,27 @@ make -j8
make install 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
除了NPURockchip的芯片还有其他的一些功能。
这些功能大部分都是需要C/C++进行编程因此如果您使用到了这些模块我们不推荐您使用Python SDK.
Python SDK的编译暂时仅支持板端编译, 以下教程在RK3568(debian 10)、RK3588(debian 11) 环境下完成。Python打包依赖`wheel`,编译前请先执行`pip install wheel` Python SDK的编译暂时仅支持板端编译, 以下教程在RK3568(debian 10)、RK3588(debian 11) 环境下完成。Python打包依赖`wheel`,编译前请先执行`pip install wheel`
```bash ```bash
git clone https://github.com/PaddlePaddle/FastDeploy.git git clone https://github.com/PaddlePaddle/FastDeploy.git
cd FastDeploy cd FastDeploy

View File

@@ -5,71 +5,24 @@
在FastDeploy上部署模型前我们需要搭建一下开发环境。FastDeploy将环境搭建分成板端推理环境搭建和PC端模型转换环境搭建两个部分。 在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中会存在依赖问题这里介绍以下如何安装。 rknn_toolkit2依赖一些特定的包因此建议使用conda新建一个虚拟环境进行安装。 安装rknn_toolkit2中会存在依赖问题这里介绍以下如何安装。
安装conda的方法百度有很多这里跳过直接介绍如何安装rknn_toolkit2。
### 下载rknn_toolkit2
一般可以通过git直接下载rknn_toolkit2
```bash
git clone https://github.com/rockchip-linux/rknn-toolkit2.git
```
### 下载安装需要的软件包 ### 下载安装需要的软件包
安装rknntoolkit2之前你需要安装以下依赖包。
```bash ```bash
sudo apt-get install libxslt1-dev zlib1g zlib1g-dev libglib2.0-0 \ sudo apt-get install libxslt1-dev zlib1g zlib1g-dev libglib2.0-0 \
libsm6 libgl1-mesa-glx libprotobuf-dev gcc g++ libsm6 libgl1-mesa-glx libprotobuf-dev gcc g++
``` ```
### 安装rknn_toolkit2环境 ### 安装rknn_toolkit2环境
rknn_toolkit2依赖一些特定的包因此建议使用conda新建一个虚拟环境进行安装。
```bash ```bash
# 创建虚拟环境 # 创建虚拟环境
conda create -n rknn2 python=3.6 conda create -n rknn2 python=3.6
@@ -79,13 +32,10 @@ conda activate rknn2
pip install numpy==1.16.6 pip install numpy==1.16.6
# 安装rknn_toolkit2-1.3.0_11912b58-cp38-cp38-linux_x86_64.whl # 安装rknn_toolkit2-1.3.0_11912b58-cp38-cp38-linux_x86_64.whl
cd ~/下载/rknn-toolkit2-master/packages 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.3.0_11912b58-cp38-cp38-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) * [rknntoolkit2开发板下载地址 密码rknn](https://eyun.baidu.com/s/3eTDMk6Y)
## 其他文档
- [RKNN 模型转换文档](./export.md)

View File

@@ -17,7 +17,7 @@ FastDeploy在RK3588s上进行了测试测试环境如下:
以下环境测试的速度均为端到端测试速度根据芯片体质的不同,速度会上下有所浮动,仅供参考。 以下环境测试的速度均为端到端测试速度根据芯片体质的不同,速度会上下有所浮动,仅供参考。
| 任务场景 | 模型及其example | 模型版本 | 是否量化 | RKNN速度(ms) | | 任务场景 | 模型及其example | 模型版本 | 是否量化 | RKNN速度(ms) |
|----------------------|--------------------------------------------------------------------------------------------------|--------------------------|------|------------| |----------------------|---------------------------------------------------------------------------------------------------|--------------------------|------|------------|
| Classification | [ResNet](../../../../examples/vision/classification/paddleclas/rknpu2/README.md) | ResNet50_vd | 否 | 33 | | Classification | [ResNet](../../../../examples/vision/classification/paddleclas/rknpu2/README.md) | ResNet50_vd | 否 | 33 |
| Detection | [Picodet](../../../../examples/vision/detection/paddledetection/rknpu2/README.md) | Picodet-s | 否 | 112 | | Detection | [Picodet](../../../../examples/vision/detection/paddledetection/rknpu2/README.md) | Picodet-s | 否 | 112 |
| Detection | [PaddleDetection Yolov8](../../../../examples/vision/detection/paddledetection/rknpu2/README.md) | yolov8-n | 否 | 100 | | Detection | [PaddleDetection Yolov8](../../../../examples/vision/detection/paddledetection/rknpu2/README.md) | yolov8-n | 否 | 100 |