Skip to content

Commit 104d965

Browse files
[Backend] Add YOLOv5、PPYOLOE and PP-Liteseg for RV1126 (#647)
* add yolov5 and ppyoloe for rk1126 * update code, rename rk1126 to rv1126 * add PP-Liteseg * update lite lib * updade doc for PPYOLOE * update doc * fix docs * fix doc and examples * update code * uodate doc * update doc Co-authored-by: Jason <jiangjiajun@baidu.com>
1 parent 763da98 commit 104d965

59 files changed

Lines changed: 804 additions & 987 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README_CN.md

100644100755
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,8 @@
6868

6969
<div id="fastdeploy-quick-start-python"></div>
7070

71-
<details close>
72-
71+
<details close>
72+
7373
<summary><b>Python SDK快速开始(点开查看详情)</b></summary><div>
7474

7575
#### 快速安装
@@ -131,7 +131,7 @@ cv2.imwrite("vis_image.jpg", vis_im)
131131
<div id="fastdeploy-quick-start-cpp"></div>
132132

133133
<details close>
134-
134+
135135
<summary><b>C++ SDK快速开始(点开查看详情)</b></summary><div>
136136

137137

README_EN.md

100644100755
File mode changed.

cmake/opencv.cmake

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,12 @@ elseif(IOS)
4141
else()
4242
if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "aarch64")
4343
set(OPENCV_FILENAME "opencv-linux-aarch64-3.4.14")
44-
elseif(TARGET_ABI MATCHES "armhf")
45-
set(OPENCV_FILENAME "opencv-armv7hf")
4644
else()
47-
set(OPENCV_FILENAME "opencv-linux-x64-3.4.16")
45+
if(ENABLE_TIMVX)
46+
set(OPENCV_FILENAME "opencv-armv7hf")
47+
else()
48+
set(OPENCV_FILENAME "opencv-linux-x64-3.4.16")
49+
endif()
4850
endif()
4951
if(ENABLE_OPENCV_CUDA)
5052
if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "aarch64")
@@ -57,7 +59,7 @@ endif()
5759
set(OPENCV_INSTALL_DIR ${THIRD_PARTY_PATH}/install/)
5860
if(ANDROID)
5961
set(OPENCV_URL_PREFIX "https://bj.bcebos.com/fastdeploy/third_libs")
60-
elseif(TARGET_ABI MATCHES "armhf")
62+
elseif(ENABLE_TIMVX)
6163
set(OPENCV_URL_PREFIX "https://bj.bcebos.com/fastdeploy/test")
6264
else() # TODO: use fastdeploy/third_libs instead.
6365
set(OPENCV_URL_PREFIX "https://bj.bcebos.com/paddle2onnx/libs")
@@ -185,7 +187,7 @@ else()
185187
file(RENAME ${THIRD_PARTY_PATH}/install/${OPENCV_FILENAME}/ ${THIRD_PARTY_PATH}/install/opencv)
186188
set(OPENCV_FILENAME opencv)
187189
set(OpenCV_DIR ${THIRD_PARTY_PATH}/install/${OPENCV_FILENAME})
188-
if(TARGET_ABI MATCHES "armhf")
190+
if(ENABLE_TIMVX)
189191
set(OpenCV_DIR ${OpenCV_DIR}/lib/cmake/opencv4)
190192
endif()
191193
if (WIN32)

cmake/paddlelite.cmake

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,10 +59,12 @@ elseif(ANDROID)
5959
else() # Linux
6060
if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "aarch64")
6161
set(PADDLELITE_URL "${PADDLELITE_URL_PREFIX}/lite-linux-arm64-20220920.tgz")
62-
elseif(TARGET_ABI MATCHES "armhf")
63-
set(PADDLELITE_URL "https://bj.bcebos.com/fastdeploy/test/lite-linux_armhf_1101.tgz")
6462
else()
65-
message(FATAL_ERROR "Only support Linux aarch64 now, x64 is not supported with backend Paddle Lite.")
63+
if(ENABLE_TIMVX)
64+
set(PADDLELITE_URL "https://bj.bcebos.com/fastdeploy/test/lite-linux_armhf_1130.tgz")
65+
else()
66+
message(FATAL_ERROR "Only support Linux aarch64 or ENABLE_TIMVX now, x64 is not supported with backend Paddle Lite.")
67+
endif()
6668
endif()
6769
endif()
6870

cmake/timvx.cmake

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
1-
if (NOT DEFINED TARGET_ABI)
1+
if (NOT DEFINED CMAKE_SYSTEM_PROCESSOR)
22
set(CMAKE_SYSTEM_NAME Linux)
33
set(CMAKE_SYSTEM_PROCESSOR arm)
44
set(CMAKE_C_COMPILER "arm-linux-gnueabihf-gcc")
55
set(CMAKE_CXX_COMPILER "arm-linux-gnueabihf-g++")
66
set(CMAKE_CXX_FLAGS "-march=armv7-a -mfloat-abi=hard -mfpu=neon-vfpv4 ${CMAKE_CXX_FLAGS}")
77
set(CMAKE_C_FLAGS "-march=armv7-a -mfloat-abi=hard -mfpu=neon-vfpv4 ${CMAKE_C_FLAGS}" )
8-
set(TARGET_ABI armhf)
98
set(CMAKE_BUILD_TYPE MinSizeRel)
109
else()
1110
if(NOT ${ENABLE_LITE_BACKEND})

docs/cn/build_and_install/README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@
88
## 自行编译安装
99
- [GPU部署环境](gpu.md)
1010
- [CPU部署环境](cpu.md)
11-
- [CPU部署环境](ipu.md)
11+
- [IPU部署环境](ipu.md)
1212
- [Jetson部署环境](jetson.md)
1313
- [Android平台部署环境](android.md)
14-
- [瑞芯微RK1126部署环境](rk1126.md)
14+
- [瑞芯微RV1126部署环境](rv1126.md)
1515

1616

1717
## FastDeploy编译选项说明
@@ -22,6 +22,7 @@
2222
| ENABLE_PADDLE_BACKEND | 默认OFF,是否编译集成Paddle Inference后端(CPU/GPU上推荐打开) |
2323
| ENABLE_LITE_BACKEND | 默认OFF,是否编译集成Paddle Lite后端(编译Android库时需要设置为ON) |
2424
| ENABLE_RKNPU2_BACKEND | 默认OFF,是否编译集成RKNPU2后端(RK3588/RK3568/RK3566上推荐打开) |
25+
| ENABLE_TIMVX | 默认OFF,需要在RV1126/RV1109上部署时,需设置为ON |
2526
| ENABLE_TRT_BACKEND | 默认OFF,是否编译集成TensorRT后端(GPU上推荐打开) |
2627
| ENABLE_OPENVINO_BACKEND | 默认OFF,是否编译集成OpenVINO后端(CPU上推荐打开) |
2728
| ENABLE_VISION | 默认OFF,是否编译集成视觉模型的部署模块 |

docs/cn/build_and_install/rk1126.md

Lines changed: 0 additions & 63 deletions
This file was deleted.
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
# 瑞芯微 RV1126 部署环境编译安装
2+
3+
FastDeploy基于 Paddle-Lite 后端支持在瑞芯微(Rockchip)Soc 上进行部署推理。
4+
更多详细的信息请参考:[PaddleLite部署示例](https://www.paddlepaddle.org.cn/lite/develop/demo_guides/verisilicon_timvx.html)
5+
6+
本文档介绍如何编译基于 PaddleLite 的 C++ FastDeploy 交叉编译库。
7+
8+
相关编译选项说明如下:
9+
|编译选项|默认值|说明|备注|
10+
|:---|:---|:---|:---|
11+
|ENABLE_LITE_BACKEND|OFF|编译RK库时需要设置为ON| - |
12+
|ENABLE_TIMVX|OFF|编译RK库时需要设置为ON| - |
13+
14+
更多编译选项请参考[FastDeploy编译选项说明](./README.md)
15+
16+
## 交叉编译环境搭建
17+
18+
### 宿主机环境需求
19+
- os:Ubuntu == 16.04
20+
- cmake: version >= 3.10.0
21+
22+
### 环境搭建
23+
```bash
24+
# 1. Install basic software
25+
apt update
26+
apt-get install -y --no-install-recommends \
27+
gcc g++ git make wget python unzip
28+
29+
# 2. Install arm gcc toolchains
30+
apt-get install -y --no-install-recommends \
31+
g++-arm-linux-gnueabi gcc-arm-linux-gnueabi \
32+
g++-arm-linux-gnueabihf gcc-arm-linux-gnueabihf \
33+
gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
34+
35+
# 3. Install cmake 3.10 or above
36+
wget -c https://mms-res.cdn.bcebos.com/cmake-3.10.3-Linux-x86_64.tar.gz && \
37+
tar xzf cmake-3.10.3-Linux-x86_64.tar.gz && \
38+
mv cmake-3.10.3-Linux-x86_64 /opt/cmake-3.10 && \
39+
ln -s /opt/cmake-3.10/bin/cmake /usr/bin/cmake && \
40+
ln -s /opt/cmake-3.10/bin/ccmake /usr/bin/ccmake
41+
```
42+
43+
## 基于 PaddleLite 的 FastDeploy 交叉编译库编译
44+
搭建好交叉编译环境之后,编译命令如下:
45+
```bash
46+
# Download the latest source code
47+
git clone https://github.com/PaddlePaddle/FastDeploy.git
48+
cd FastDeploy
49+
mkdir build && cd build
50+
51+
# CMake configuration with RK toolchain
52+
cmake -DCMAKE_TOOLCHAIN_FILE=./../cmake/timvx.cmake \
53+
-DENABLE_TIMVX=ON \
54+
-DCMAKE_INSTALL_PREFIX=fastdeploy-tmivx \
55+
-DENABLE_VISION=ON \ # 是否编译集成视觉模型的部署模块,可选择开启
56+
-Wno-dev ..
57+
58+
# Build FastDeploy RV1126 C++ SDK
59+
make -j8
60+
make install
61+
```
62+
编译完成之后,会生成 fastdeploy-tmivx 目录,表示基于 PadddleLite TIM-VX 的 FastDeploy 库编译完成。
63+
64+
## 准备设备运行环境
65+
部署前要保证芯原 Linux Kernel NPU 驱动 galcore.so 版本及所适用的芯片型号与依赖库保持一致,在部署前,请登录开发板,并通过命令行输入以下命令查询 NPU 驱动版本,Rockchip建议的驱动版本为: 6.4.6.5
66+
```bash
67+
dmesg | grep Galcore
68+
```
69+
70+
如果当前版本不符合上述,请用户仔细阅读以下内容,以保证底层 NPU 驱动环境正确。
71+
72+
有两种方式可以修改当前的 NPU 驱动版本:
73+
1. 手动替换 NPU 驱动版本。(推荐)
74+
2. 刷机,刷取 NPU 驱动版本符合要求的固件。
75+
76+
### 手动替换 NPU 驱动版本
77+
1. 使用如下命令下载解压 PaddleLite demo,其中提供了现成的驱动文件
78+
```bash
79+
wget https://paddlelite-demo.bj.bcebos.com/devices/generic/PaddleLite-generic-demo.tar.gz
80+
tar -xf PaddleLite-generic-demo.tar.gz
81+
```
82+
2. 使用 `uname -a` 查看 `Linux Kernel` 版本,确定为 `Linux` 系统 4.19.111 版本,
83+
3.`PaddleLite-generic-demo/libs/PaddleLite/linux/armhf/lib/verisilicon_timvx/viv_sdk_6_4_6_5/lib/1126/4.19.111/` 路径下的 `galcore.ko` 上传至开发板。
84+
85+
4. 登录开发板,命令行输入 `sudo rmmod galcore` 来卸载原始驱动,输入 `sudo insmod galcore.ko` 来加载传上设备的驱动。(是否需要 sudo 根据开发板实际情况,部分 adb 链接的设备请提前 adb root)。此步骤如果操作失败,请跳转至方法 2。
86+
5. 在开发板中输入 `dmesg | grep Galcore` 查询 NPU 驱动版本,确定为:6.4.6.5
87+
88+
### 刷机
89+
根据具体的开发板型号,向开发板卖家或官网客服索要 6.4.6.5 版本 NPU 驱动对应的固件和刷机方法。
90+
91+
更多细节请参考:[PaddleLite准备设备环境](https://www.paddlepaddle.org.cn/lite/develop/demo_guides/verisilicon_timvx.html#zhunbeishebeihuanjing)
92+
93+
## 基于 FastDeploy 在 RV1126 上的部署示例
94+
1. RV1126 上部署 PaddleClas 分类模型请参考:[PaddleClas 分类模型在 RV1126 上的 C++ 部署示例](../../../examples/vision/classification/paddleclas/rv1126/README.md)
95+
96+
2. RV1126 上部署 PPYOLOE 检测模型请参考:[PPYOLOE 检测模型在 RV1126 上的 C++ 部署示例](../../../examples/vision/detection/paddledetection/rv1126/README.md)
97+
98+
3. RV1126 上部署 YOLOv5 检测模型请参考:[YOLOv5 检测模型在 RV1126 上的 C++ 部署示例](../../../examples/vision/detection/yolov5/rv1126/README.md)
99+
100+
4. RV1126 上部署 PP-LiteSeg 分割模型请参考:[PP-LiteSeg 分割模型在 RV1126 上的 C++ 部署示例](../../../examples/vision/segmentation/paddleseg/rv1126/README.md)

examples/vision/classification/paddleclas/quantize/README.md

100644100755
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ FastDeploy已支持部署量化模型,并提供一键模型自动化压缩的工
44

55
## FastDeploy一键模型自动化压缩工具
66
FastDeploy 提供了一键模型自动化压缩工具, 能够简单地通过输入一个配置文件, 对模型进行量化.
7-
详细教程请见: [一键模型自动化压缩工具](../../../../../tools/auto_compression/)
7+
详细教程请见: [一键模型自动化压缩工具](../../../../../tools/common_tools/auto_compression/)
88
注意: 推理量化后的分类模型仍然需要FP32模型文件夹下的inference_cls.yaml文件, 自行量化的模型文件夹内不包含此yaml文件, 用户从FP32模型文件夹下复制此yaml文件到量化后的模型文件夹内即可。
99

1010
## 下载量化完成的PaddleClas模型

examples/vision/classification/paddleclas/quantize/cpp/README.md

100644100755
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
### 量化模型准备
1010
- 1. 用户可以直接使用由FastDeploy提供的量化模型进行部署.
11-
- 2. 用户可以使用FastDeploy提供的[一键模型自动化压缩工具](../../../../../../tools/auto_compression/),自行进行模型量化, 并使用产出的量化模型进行部署.(注意: 推理量化后的分类模型仍然需要FP32模型文件夹下的inference_cls.yaml文件, 自行量化的模型文件夹内不包含此yaml文件, 用户从FP32模型文件夹下复制此yaml文件到量化后的模型文件夹内即可.)
11+
- 2. 用户可以使用FastDeploy提供的[一键模型自动化压缩工具](../../../../../../tools/common_tools/auto_compression/),自行进行模型量化, 并使用产出的量化模型进行部署.(注意: 推理量化后的分类模型仍然需要FP32模型文件夹下的inference_cls.yaml文件, 自行量化的模型文件夹内不包含此yaml文件, 用户从FP32模型文件夹下复制此yaml文件到量化后的模型文件夹内即可.)
1212

1313
## 以量化后的ResNet50_Vd模型为例, 进行部署,支持此模型需保证FastDeploy版本0.7.0以上(x.x.x>=0.7.0)
1414
在本目录执行如下命令即可完成编译,以及量化模型部署.

0 commit comments

Comments
 (0)