diff --git a/docs/cn/build_and_install/rknpu2.md b/docs/cn/build_and_install/rknpu2.md index 9e91cd7c9..caa121bec 100644 --- a/docs/cn/build_and_install/rknpu2.md +++ b/docs/cn/build_and_install/rknpu2.md @@ -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 Runtime | RK356X
RK3588 | ONNX | 编译开关`ENABLE_ORT_BACKEND`为ON或OFF控制,默认OFF | +| RKNPU2 | RK356X
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 @@ -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 @@ -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 \ @@ -100,8 +145,6 @@ make -j8 make install ``` -如果你找不到编译工具,你可以复制[交叉编译工具](https://bj.bcebos.com/paddle2onnx/libs/gcc-linaro-6.3.1-2017.zip)进行下载。 - ### 配置环境变量 为了方便大家配置环境变量,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) * [RKNPU2模型速度一览表](../faq/rknpu2/rknpu2.md) -* [RKNPU2 常见问题合集](../faq/rknpu2/issues.md) diff --git a/docs/cn/faq/rknpu2/build.md b/docs/cn/faq/rknpu2/build.md index bd6a636a8..ec9290b3b 100644 --- a/docs/cn/faq/rknpu2/build.md +++ b/docs/cn/faq/rknpu2/build.md @@ -2,20 +2,44 @@ # FastDeploy RKNPU2引擎编译 ## FastDeploy后端支持详情 -FastDeploy当前在RK平台上支持后端引擎如下: + +FastDeploy当前在`RK356X/RK3588`平台上支持后端引擎如下: | 后端 | 平台 | 支持模型格式 | 说明 | |:------------------|:---------------------|:-------|:-------------------------------------------| | ONNX Runtime | RK356X
RK3588 | ONNX | 编译开关`ENABLE_ORT_BACKEND`为ON或OFF控制,默认OFF | | RKNPU2 | RK356X
RK3588 | RKNN | 编译开关`ENABLE_RKNPU2_BACKEND`为ON或OFF控制,默认OFF | -## 编译FastDeploy SDK +## 编译安装FastDeploy C++ SDK -针对RK356X和RK3588的性能差异,我们提供了两种编译FastDeploy的方式。 +由于不同开发板的性能以及资源均不相同,我们提供了板端编译以及交叉编译两种方式来编译FastDeploy。 +您可以根据需求从中选择一种来进行。 + +### FastDeploy后端支持详情 + +FastDeploy当前在`RK356X/RK3588`平台上支持后端引擎如下: + +| 后端 | 平台 | 支持模型格式 | 说明 | +|:------------------|:---------------------|:-------|:-------------------------------------------| +| ONNX Runtime | RK356X
RK3588 | ONNX | 编译开关`ENABLE_ORT_BACKEND`为ON或OFF控制,默认OFF | +| RKNPU2 | RK356X
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 @@ -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 @@ -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 \ @@ -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 diff --git a/docs/cn/faq/rknpu2/environment.md b/docs/cn/faq/rknpu2/environment.md index 5461c12f6..63380d310 100644 --- a/docs/cn/faq/rknpu2/environment.md +++ b/docs/cn/faq/rknpu2/environment.md @@ -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 @@ -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) diff --git a/docs/cn/faq/rknpu2/rknpu2.md b/docs/cn/faq/rknpu2/rknpu2.md index cb482fbf2..ea2d3a9b0 100644 --- a/docs/cn/faq/rknpu2/rknpu2.md +++ b/docs/cn/faq/rknpu2/rknpu2.md @@ -16,20 +16,20 @@ FastDeploy在RK3588s上进行了测试,测试环境如下: 以下环境测试的速度均为端到端测试速度根据芯片体质的不同,速度会上下有所浮动,仅供参考。 -| 任务场景 | 模型及其example | 模型版本 | 是否量化 | RKNN速度(ms) | -|----------------------|--------------------------------------------------------------------------------------------------|--------------------------|------|------------| -| 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 | [PaddleDetection Yolov8](../../../../examples/vision/detection/paddledetection/rknpu2/README.md) | yolov8-n | 否 | 100 | -| Detection | [PPYOLOE](../../../../examples/vision/detection/paddledetection/rknpu2/README.md) | ppyoloe-s(int8) | 是 | 141 | -| Detection | [RKYOLOV5](../../../../examples/vision/detection/rkyolo/README.md) | YOLOV5-S-Relu(int8) | 是 | 57 | -| Detection | [RKYOLOX](../../../../examples/vision/detection/rkyolo/README.md) | yolox-s | 是 | 130 | -| Detection | [RKYOLOV7](../../../../examples/vision/detection/rkyolo/README.md) | yolov7-tiny | 是 | 58 | -| Segmentation | [Unet](../../../../examples/vision/segmentation/paddleseg/rockchip/rknpu2/README.md) | Unet-cityscapes | 否 | - | -| Segmentation | [PP-HumanSegV2Lite](../../../../examples/vision/segmentation/paddleseg/rockchip/rknpu2/README.md) | portrait(int8) | 是 | 43 | -| Segmentation | [PP-HumanSegV2Lite](../../../../examples/vision/segmentation/paddleseg/rockchip/rknpu2/README.md) | human(int8) | 是 | 43 | -| Face Detection | [SCRFD](../../../../examples/vision/facedet/scrfd/rknpu2/README.md) | SCRFD-2.5G-kps-640(int8) | 是 | 42 | -| Face FaceRecognition | [InsightFace](../../../../examples/vision/faceid/insightface/rknpu2/README_CN.md) | ms1mv3_arcface_r18(int8) | 是 | 12 | +| 任务场景 | 模型及其example | 模型版本 | 是否量化 | RKNN速度(ms) | +|----------------------|---------------------------------------------------------------------------------------------------|--------------------------|------|------------| +| 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 | [PaddleDetection Yolov8](../../../../examples/vision/detection/paddledetection/rknpu2/README.md) | yolov8-n | 否 | 100 | +| Detection | [PPYOLOE](../../../../examples/vision/detection/paddledetection/rknpu2/README.md) | ppyoloe-s(int8) | 是 | 141 | +| Detection | [RKYOLOV5](../../../../examples/vision/detection/rkyolo/README.md) | YOLOV5-S-Relu(int8) | 是 | 57 | +| Detection | [RKYOLOX](../../../../examples/vision/detection/rkyolo/README.md) | yolox-s | 是 | 130 | +| Detection | [RKYOLOV7](../../../../examples/vision/detection/rkyolo/README.md) | yolov7-tiny | 是 | 58 | +| Segmentation | [Unet](../../../../examples/vision/segmentation/paddleseg/rockchip/rknpu2/README.md) | Unet-cityscapes | 否 | - | +| Segmentation | [PP-HumanSegV2Lite](../../../../examples/vision/segmentation/paddleseg/rockchip/rknpu2/README.md) | portrait(int8) | 是 | 43 | +| Segmentation | [PP-HumanSegV2Lite](../../../../examples/vision/segmentation/paddleseg/rockchip/rknpu2/README.md) | human(int8) | 是 | 43 | +| Face Detection | [SCRFD](../../../../examples/vision/facedet/scrfd/rknpu2/README.md) | SCRFD-2.5G-kps-640(int8) | 是 | 42 | +| Face FaceRecognition | [InsightFace](../../../../examples/vision/faceid/insightface/rknpu2/README_CN.md) | ms1mv3_arcface_r18(int8) | 是 | 12 | ## 预编译库下载