!28 添加Rockchip NPU 使用文档(图形推理部分)
From: @chainsx Reviewed-by: @woqidaideshi Signed-off-by: @woqidaideshi
This commit is contained in:
commit
bde8d94fa4
@ -67,6 +67,8 @@ You can get introduction of openEuler SBC SIG from [sig-SBC](https://gitee.com/o
|
|||||||
- [Packaging ITX-RK3588J Integrated Burn Write Image](documents/rockchip/打包ITX-RK3588J一体化烧写镜像.md)
|
- [Packaging ITX-RK3588J Integrated Burn Write Image](documents/rockchip/打包ITX-RK3588J一体化烧写镜像.md)
|
||||||
- [Set up SELinux](documents/rockchip/设置SELinux.md)
|
- [Set up SELinux](documents/rockchip/设置SELinux.md)
|
||||||
- [Build an image using Docker](documents/rockchip/使用Docker构建镜像.md)
|
- [Build an image using Docker](documents/rockchip/使用Docker构建镜像.md)
|
||||||
|
- [openEuler Adaptation Guide](documents/rockchip/openEuler适配指南.md)
|
||||||
|
- [Using RKNPU on openEuler](documents/rockchip/在openEuler上使用RKNPU.md)
|
||||||
- [scripts](./scripts/):
|
- [scripts](./scripts/):
|
||||||
- [Raspberry Pi](./scripts/raspberrypi): Script for building openEuler image for Raspberry Pi
|
- [Raspberry Pi](./scripts/raspberrypi): Script for building openEuler image for Raspberry Pi
|
||||||
- [Quickly Build (without kernel compilation)](scripts/raspberrypi/build-image.sh)
|
- [Quickly Build (without kernel compilation)](scripts/raspberrypi/build-image.sh)
|
||||||
|
|||||||
@ -66,6 +66,8 @@ SIG 组基本信息位于 [sig-SBC](https://gitee.com/openeuler/community/tree/m
|
|||||||
- [打包 ITX-RK3588J 一体化烧写镜像](documents/rockchip/打包ITX-RK3588J一体化烧写镜像.md)
|
- [打包 ITX-RK3588J 一体化烧写镜像](documents/rockchip/打包ITX-RK3588J一体化烧写镜像.md)
|
||||||
- [设置 SELinux](documents/rockchip/设置SELinux.md)
|
- [设置 SELinux](documents/rockchip/设置SELinux.md)
|
||||||
- [使用 Docker 构建镜像](documents/rockchip/使用Docker构建镜像.md)
|
- [使用 Docker 构建镜像](documents/rockchip/使用Docker构建镜像.md)
|
||||||
|
- [openEuler 适配指南](documents/rockchip/openEuler适配指南.md)
|
||||||
|
- [在openEuler上使用RKNPU](documents/rockchip/在openEuler上使用RKNPU.md)
|
||||||
- [scripts](./scripts/): 镜像构建脚本
|
- [scripts](./scripts/): 镜像构建脚本
|
||||||
- [树莓派](./scripts/raspberrypi): 构建 openEuler 树莓派镜像的脚本
|
- [树莓派](./scripts/raspberrypi): 构建 openEuler 树莓派镜像的脚本
|
||||||
- [快速构建(不编译内核)](scripts/raspberrypi/build-image.sh)
|
- [快速构建(不编译内核)](scripts/raspberrypi/build-image.sh)
|
||||||
|
|||||||
465
documents/rockchip/在openEuler上使用RKNPU.md
Normal file
465
documents/rockchip/在openEuler上使用RKNPU.md
Normal file
@ -0,0 +1,465 @@
|
|||||||
|
- [描述](#描述)
|
||||||
|
- [在 openEuler 上安装 RKNPU 并运行推理](#在-openeuler-上安装-rknpu-并运行推理)
|
||||||
|
- [安装 RKNPU 运行环境](#安装-rknpu-运行环境)
|
||||||
|
- [测试 RKNPU](#测试-rknpu)
|
||||||
|
- [安装 rknn-toolkit-lite2 Python 环境](#安装-rknn-toolkit-lite2-python-环境)
|
||||||
|
- [运行 ResNet18 模型推理](#运行-resnet18-模型推理)
|
||||||
|
- [测试 Dynamic Shape](#测试-dynamic-shape)
|
||||||
|
|
||||||
|
# 描述
|
||||||
|
|
||||||
|
本文档介绍如何在 openEuler 的 Rockchip 设备上使用 RKNPU。
|
||||||
|
|
||||||
|
参考的官方文档:
|
||||||
|
|
||||||
|
https://github.com/airockchip/rknn-toolkit2/blob/master/doc/02_Rockchip_RKNPU_User_Guide_RKNN_SDK_V2.3.2_CN.pdf
|
||||||
|
|
||||||
|
内核需求:需要支持 RKNPU 的内核
|
||||||
|
|
||||||
|
测试设备:Armsom Sige5 (RK3576)
|
||||||
|
|
||||||
|
openEuler 版本:openEuler 22.03 LTS SP3
|
||||||
|
|
||||||
|
镜像构建命令如下:
|
||||||
|
|
||||||
|
```
|
||||||
|
sudo bash build.sh --board armsom-sige5 \
|
||||||
|
-n openEuler-22.03-LTS-SP3-Armsom-Sige5-aarch64-alpha1 \
|
||||||
|
-k https://github.com/armbian/linux-rockchip.git \
|
||||||
|
-b rk-6.1-rkr5.1 \
|
||||||
|
-c rockchip_linux_defconfig \
|
||||||
|
-r https://gitee.com/src-openeuler/openEuler-repos/raw/openEuler-22.03-LTS-SP3/generic.repo \
|
||||||
|
-s headless
|
||||||
|
```
|
||||||
|
|
||||||
|
将上面构建成功的 openEuler 镜像刷写到 Armsom Sige5 (RK3576) 开发板,之后就可以按照下面的文档安装 RKNPU 并运行推理。
|
||||||
|
|
||||||
|
# 在 openEuler 上安装 RKNPU 并运行推理
|
||||||
|
|
||||||
|
## 安装 RKNPU 运行环境
|
||||||
|
|
||||||
|
安装所需要的软件包
|
||||||
|
|
||||||
|
```
|
||||||
|
dnf update && dnf install git python3-pip screen gcc g++ make cmake -y
|
||||||
|
```
|
||||||
|
|
||||||
|
下载 RKNPU 代码及软件包仓库
|
||||||
|
|
||||||
|
```
|
||||||
|
cd ~
|
||||||
|
git clone --depth=1 https://github.com/airockchip/rknn-toolkit2.git
|
||||||
|
```
|
||||||
|
|
||||||
|
安装 RKNPU 运行环境到系统
|
||||||
|
|
||||||
|
```
|
||||||
|
cd rknn-toolkit2
|
||||||
|
|
||||||
|
cp rknpu2/runtime/Linux/librknn_api/aarch64/librknnrt.so /usr/lib64
|
||||||
|
cp rknpu2/runtime/Linux/librknn_api/aarch64/librknnrt.so /usr/lib
|
||||||
|
|
||||||
|
cp rknpu2/runtime/Linux/rknn_server/aarch64/usr/bin/* /usr/bin
|
||||||
|
```
|
||||||
|
|
||||||
|
添加文件权限
|
||||||
|
|
||||||
|
```
|
||||||
|
chmod +x /usr/bin/start_rknn.sh
|
||||||
|
chmod +x /usr/bin/restart_rknn.sh
|
||||||
|
chmod +x /usr/bin/rknn_server
|
||||||
|
```
|
||||||
|
|
||||||
|
使用 `screen` 来保持 `rknn_server` 后台运行,这里也可以使用其他软件来实现,例如 `nohup`。
|
||||||
|
|
||||||
|
```
|
||||||
|
screen -S rknn_server
|
||||||
|
```
|
||||||
|
|
||||||
|
然后输入以下命令来启动 `rknn_server`:
|
||||||
|
|
||||||
|
```
|
||||||
|
start_rknn.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
运行结果如下:
|
||||||
|
|
||||||
|
```
|
||||||
|
bash-5.1# start_rknn.sh
|
||||||
|
start rknn server, version:2.3.2 (1842325 build@2025-03-30T09:54:34)
|
||||||
|
I NPUTransfer(995): Starting NPU Transfer Server, Transfer version 2.2.2 (@2024-06-18T03:50:51)
|
||||||
|
```
|
||||||
|
|
||||||
|
如果使用 `screen` 命令使 `rknn_server` 保持后台运行的话,此时使用 `Ctrl A + Z` 来退出当前终端(按住 `Ctrl` 的同时,先按 `A` 再按 `Z`),让 `rknn_server` 保持后台运行。如需恢复 `rknn_server` 终端,使用 `screen -r rknn_server`。
|
||||||
|
|
||||||
|
## 测试 RKNPU
|
||||||
|
|
||||||
|
### 运行 rknn_benchmark 基准测试
|
||||||
|
|
||||||
|
进入 `rknn_benchmark` 目录
|
||||||
|
|
||||||
|
```
|
||||||
|
cd ~/rknn-toolkit2/rknpu2/examples/rknn_benchmark
|
||||||
|
```
|
||||||
|
|
||||||
|
编译并运行 `rknn_benchmark`
|
||||||
|
|
||||||
|
```
|
||||||
|
export GCC_COMPILER=/usr/bin/aarch64-linux-gnu
|
||||||
|
|
||||||
|
bash build-linux.sh -t rk3576 -a aarch64 -b Release
|
||||||
|
```
|
||||||
|
|
||||||
|
这里使用的设备是 `rk3576`,如果使用 `rk3588` 平台,将这里的 `rk3576` 改为 `rk3588` 即可。
|
||||||
|
|
||||||
|
编译过程如下:
|
||||||
|
|
||||||
|
```
|
||||||
|
[root@openEuler rknn_benchmark]# bash build-linux.sh -t rk3576 -a aarch64 -b Release
|
||||||
|
build-linux.sh -t rk3576 -a aarch64 -b Release
|
||||||
|
/usr/bin/aarch64-linux-gnu
|
||||||
|
===================================
|
||||||
|
TARGET_SOC=RK3576
|
||||||
|
TARGET_ARCH=aarch64
|
||||||
|
BUILD_TYPE=Release
|
||||||
|
BUILD_DIR=/root/rknn-toolkit2/rknpu2/examples/rknn_benchmark/build/build_RK3576_linux_aarch64_Release
|
||||||
|
CC=/usr/bin/aarch64-linux-gnu-gcc
|
||||||
|
CXX=/usr/bin/aarch64-linux-gnu-g++
|
||||||
|
===================================
|
||||||
|
-- The CXX compiler identification is GNU 10.3.1
|
||||||
|
-- Detecting CXX compiler ABI info
|
||||||
|
-- Detecting CXX compiler ABI info - done
|
||||||
|
-- Check for working CXX compiler: /usr/bin/aarch64-linux-gnu-g++ - skipped
|
||||||
|
-- Detecting CXX compile features
|
||||||
|
-- Detecting CXX compile features - done
|
||||||
|
-- Configuring done
|
||||||
|
-- Generating done
|
||||||
|
-- Build files have been written to: /root/rknn-toolkit2/rknpu2/examples/rknn_benchmark/build/build_RK3576_linux_aarch64_Release
|
||||||
|
[ 33%] Building CXX object CMakeFiles/rknn_benchmark.dir/src/cnpy/cnpy.cpp.o
|
||||||
|
[ 66%] Building CXX object CMakeFiles/rknn_benchmark.dir/src/rknn_benchmark.cpp.o
|
||||||
|
[100%] Linking CXX executable rknn_benchmark
|
||||||
|
[100%] Built target rknn_benchmark
|
||||||
|
Consolidate compiler generated dependencies of target rknn_benchmark
|
||||||
|
[100%] Built target rknn_benchmark
|
||||||
|
Install the project...
|
||||||
|
-- Install configuration: "Release"
|
||||||
|
-- Installing: /root/rknn-toolkit2/rknpu2/examples/rknn_benchmark/install/rknn_benchmark_Linux/./rknn_benchmark
|
||||||
|
-- Set runtime path of "/root/rknn-toolkit2/rknpu2/examples/rknn_benchmark/install/rknn_benchmark_Linux/./rknn_benchmark" to "lib"
|
||||||
|
-- Installing: /root/rknn-toolkit2/rknpu2/examples/rknn_benchmark/install/rknn_benchmark_Linux/lib/librknnrt.so
|
||||||
|
```
|
||||||
|
|
||||||
|
进入编译完成的目录:
|
||||||
|
|
||||||
|
```
|
||||||
|
cd ~/rknn-toolkit2/rknpu2/examples/rknn_benchmark/install/rknn_benchmark_Linux/
|
||||||
|
```
|
||||||
|
|
||||||
|
使用 `MobileNet v1` 运行基准测试
|
||||||
|
|
||||||
|
```
|
||||||
|
./rknn_benchmark ../../../rknn_mobilenet_demo/model/RK3576/mobilenet_v1.rknn
|
||||||
|
```
|
||||||
|
|
||||||
|
测试结果如下:
|
||||||
|
|
||||||
|
```
|
||||||
|
[root@openEuler rknn_benchmark_Linux]# ./rknn_benchmark ../../../rknn_mobilenet_demo/model/RK3576/mobilenet_v1.rknn
|
||||||
|
rknn_api/rknnrt version: 2.3.2 (429f97ae6b@2025-04-09T09:09:27), driver version: 0.9.8
|
||||||
|
total weight size: 4465024, total internal size: 2157568
|
||||||
|
total dma used size: 11530240
|
||||||
|
model input num: 1, output num: 1
|
||||||
|
input tensors:
|
||||||
|
index=0, name=input, n_dims=4, dims=[1, 224, 224, 3], n_elems=150528, size=150528, w_stride = 224, size_with_stride=150528, fmt=NHWC, type=INT8, qnt_type=AFFINE, zp=0, scale=0.007812
|
||||||
|
output tensors:
|
||||||
|
index=0, name=MobilenetV1/Predictions/Reshape_1, n_dims=2, dims=[1, 1001], n_elems=1001, size=2002, w_stride = 0, size_with_stride=2002, fmt=UNDEFINED, type=FP16, qnt_type=AFFINE, zp=0, scale=1.000000
|
||||||
|
custom string:
|
||||||
|
Warmup ...
|
||||||
|
0: Elapse Time = 4.98ms, FPS = 200.72
|
||||||
|
1: Elapse Time = 4.61ms, FPS = 216.92
|
||||||
|
2: Elapse Time = 4.44ms, FPS = 225.17
|
||||||
|
3: Elapse Time = 4.39ms, FPS = 228.05
|
||||||
|
4: Elapse Time = 4.39ms, FPS = 227.74
|
||||||
|
Begin perf ...
|
||||||
|
0: Elapse Time = 4.36ms, FPS = 229.62
|
||||||
|
1: Elapse Time = 4.29ms, FPS = 232.88
|
||||||
|
2: Elapse Time = 4.34ms, FPS = 230.68
|
||||||
|
3: Elapse Time = 4.47ms, FPS = 223.71
|
||||||
|
4: Elapse Time = 4.53ms, FPS = 220.95
|
||||||
|
5: Elapse Time = 4.51ms, FPS = 221.68
|
||||||
|
6: Elapse Time = 4.51ms, FPS = 221.48
|
||||||
|
7: Elapse Time = 4.64ms, FPS = 215.75
|
||||||
|
8: Elapse Time = 4.91ms, FPS = 203.79
|
||||||
|
9: Elapse Time = 2.60ms, FPS = 384.91
|
||||||
|
|
||||||
|
Avg Time 4.31ms, Avg FPS = 231.771
|
||||||
|
|
||||||
|
Save output to rt_output0.npy
|
||||||
|
---- Top5 ----
|
||||||
|
0.049622 - 620
|
||||||
|
0.044678 - 645
|
||||||
|
0.032288 - 627
|
||||||
|
0.021011 - 819
|
||||||
|
0.016953 - 790
|
||||||
|
```
|
||||||
|
|
||||||
|
可以看到,在使用 `MobileNet v1` 模型进行基准测试时,推理平均时延为 4.31ms,推理平均 FPS 为 231.771。
|
||||||
|
|
||||||
|
### 测试 MobileNet 模型推理
|
||||||
|
|
||||||
|
进入 `MobileNet Demo` 目录:
|
||||||
|
|
||||||
|
```
|
||||||
|
cd rknn_mobilenet_demo
|
||||||
|
```
|
||||||
|
|
||||||
|
编译 `MobileNet Demo` 推理程序:
|
||||||
|
|
||||||
|
```
|
||||||
|
bash build-linux.sh -t rk3576 -a aarch64 -b Release
|
||||||
|
```
|
||||||
|
|
||||||
|
编译过程如下:
|
||||||
|
|
||||||
|
```
|
||||||
|
[root@openEuler rknn_mobilenet_demo]# bash build-linux.sh -t rk3576 -a aarch64 -b Release
|
||||||
|
build-linux.sh -t rk3576 -a aarch64 -b Release
|
||||||
|
/usr/bin/aarch64-linux-gnu
|
||||||
|
===================================
|
||||||
|
TARGET_SOC=RK3576
|
||||||
|
TARGET_ARCH=aarch64
|
||||||
|
BUILD_TYPE=Release
|
||||||
|
BUILD_DIR=/root/rknn-toolkit2/rknpu2/examples/rknn_mobilenet_demo/build/build_RK3576_linux_aarch64_Release
|
||||||
|
CC=/usr/bin/aarch64-linux-gnu-gcc
|
||||||
|
CXX=/usr/bin/aarch64-linux-gnu-g++
|
||||||
|
===================================
|
||||||
|
-- The C compiler identification is GNU 10.3.1
|
||||||
|
-- The CXX compiler identification is GNU 10.3.1
|
||||||
|
-- Detecting C compiler ABI info
|
||||||
|
-- Detecting C compiler ABI info - done
|
||||||
|
-- Check for working C compiler: /usr/bin/aarch64-linux-gnu-gcc - skipped
|
||||||
|
-- Detecting C compile features
|
||||||
|
-- Detecting C compile features - done
|
||||||
|
-- Detecting CXX compiler ABI info
|
||||||
|
-- Detecting CXX compiler ABI info - done
|
||||||
|
-- Check for working CXX compiler: /usr/bin/aarch64-linux-gnu-g++ - skipped
|
||||||
|
-- Detecting CXX compile features
|
||||||
|
-- Detecting CXX compile features - done
|
||||||
|
-- Found OpenCV: /root/rknn-toolkit2/rknpu2/examples/3rdparty/opencv/opencv-linux-aarch64 (found version "3.4.5")
|
||||||
|
-- target_soc = RK3576
|
||||||
|
-- Configuring done
|
||||||
|
-- Generating done
|
||||||
|
-- Build files have been written to: /root/rknn-toolkit2/rknpu2/examples/rknn_mobilenet_demo/build/build_RK3576_linux_aarch64_Release
|
||||||
|
[ 50%] Building CXX object CMakeFiles/rknn_mobilenet_demo.dir/src/main.cc.o
|
||||||
|
[100%] Linking CXX executable rknn_mobilenet_demo
|
||||||
|
[100%] Built target rknn_mobilenet_demo
|
||||||
|
Consolidate compiler generated dependencies of target rknn_mobilenet_demo
|
||||||
|
[100%] Built target rknn_mobilenet_demo
|
||||||
|
Install the project...
|
||||||
|
-- Install configuration: "Release"
|
||||||
|
-- Installing: /root/rknn-toolkit2/rknpu2/examples/rknn_mobilenet_demo/install/rknn_mobilenet_demo_Linux/./rknn_mobilenet_demo
|
||||||
|
-- Set runtime path of "/root/rknn-toolkit2/rknpu2/examples/rknn_mobilenet_demo/install/rknn_mobilenet_demo_Linux/./rknn_mobilenet_demo" to "lib"
|
||||||
|
-- Installing: /root/rknn-toolkit2/rknpu2/examples/rknn_mobilenet_demo/install/rknn_mobilenet_demo_Linux/./model/RK3576
|
||||||
|
-- Installing: /root/rknn-toolkit2/rknpu2/examples/rknn_mobilenet_demo/install/rknn_mobilenet_demo_Linux/./model/RK3576/mobilenet_v1.rknn
|
||||||
|
-- Installing: /root/rknn-toolkit2/rknpu2/examples/rknn_mobilenet_demo/install/rknn_mobilenet_demo_Linux/./model/cat_224x224.jpg
|
||||||
|
-- Installing: /root/rknn-toolkit2/rknpu2/examples/rknn_mobilenet_demo/install/rknn_mobilenet_demo_Linux/./model/dog_224x224.jpg
|
||||||
|
-- Installing: /root/rknn-toolkit2/rknpu2/examples/rknn_mobilenet_demo/install/rknn_mobilenet_demo_Linux/lib/librknnrt.so
|
||||||
|
```
|
||||||
|
|
||||||
|
进入编译输出文件目录:
|
||||||
|
|
||||||
|
```
|
||||||
|
cd install/rknn_mobilenet_demo_Linux
|
||||||
|
```
|
||||||
|
|
||||||
|
使用 `MobileNet` 模型运行推理,测试输入 `cat_224x224.jpg` 图片:
|
||||||
|
|
||||||
|
```
|
||||||
|
./rknn_mobilenet_demo ../../model/RK3576/mobilenet_v1.rknn ../../model/cat_224x224.jpg
|
||||||
|
```
|
||||||
|
|
||||||
|
推理结果如下:
|
||||||
|
|
||||||
|
```
|
||||||
|
[root@openEuler rknn_mobilenet_demo_Linux]# ./rknn_mobilenet_demo ../../model/RK3576/mobilenet_v1.rknn ../../model/cat_224x224.jpg
|
||||||
|
model input num: 1, output num: 1
|
||||||
|
input tensors:
|
||||||
|
index=0, name=input, n_dims=4, dims=[1, 224, 224, 3], n_elems=150528, size=150528, fmt=NHWC, type=INT8, qnt_type=AFFINE, zp=0, scale=0.007812
|
||||||
|
output tensors:
|
||||||
|
index=0, name=MobilenetV1/Predictions/Reshape_1, n_dims=2, dims=[1, 1001, 0, 0], n_elems=1001, size=2002, fmt=UNDEFINED, type=FP16, qnt_type=AFFINE, zp=0, scale=1.000000
|
||||||
|
rknn_run
|
||||||
|
--- Top5 ---
|
||||||
|
283: 0.415283
|
||||||
|
282: 0.175781
|
||||||
|
286: 0.158813
|
||||||
|
278: 0.060303
|
||||||
|
279: 0.043427
|
||||||
|
```
|
||||||
|
|
||||||
|
使用 `MobileNet` 模型运行推理,测试输入 `dog_224x224.jpg` 图片:
|
||||||
|
|
||||||
|
```
|
||||||
|
./rknn_mobilenet_demo ../../model/RK3576/mobilenet_v1.rknn ../../model/dog_224x224.jpg
|
||||||
|
```
|
||||||
|
|
||||||
|
推理结果如下:
|
||||||
|
|
||||||
|
```
|
||||||
|
[root@openEuler rknn_mobilenet_demo_Linux]# ./rknn_mobilenet_demo ../../model/RK3576/mobilenet_v1.rknn ../../model/dog_224x224.jpg
|
||||||
|
model input num: 1, output num: 1
|
||||||
|
input tensors:
|
||||||
|
index=0, name=input, n_dims=4, dims=[1, 224, 224, 3], n_elems=150528, size=150528, fmt=NHWC, type=INT8, qnt_type=AFFINE, zp=0, scale=0.007812
|
||||||
|
output tensors:
|
||||||
|
index=0, name=MobilenetV1/Predictions/Reshape_1, n_dims=2, dims=[1, 1001, 0, 0], n_elems=1001, size=2002, fmt=UNDEFINED, type=FP16, qnt_type=AFFINE, zp=0, scale=1.000000
|
||||||
|
rknn_run
|
||||||
|
--- Top5 ---
|
||||||
|
156: 0.935059
|
||||||
|
155: 0.057037
|
||||||
|
205: 0.003881
|
||||||
|
284: 0.003119
|
||||||
|
285: 0.000172
|
||||||
|
```
|
||||||
|
|
||||||
|
## 安装 rknn-toolkit-lite2 Python 环境
|
||||||
|
|
||||||
|
进入 rknn-toolkit-lite2 Python 软件包目录:
|
||||||
|
|
||||||
|
```
|
||||||
|
cd ~/rknn-toolkit2/rknn-toolkit-lite2/packages
|
||||||
|
```
|
||||||
|
|
||||||
|
查看 `Python` 版本:
|
||||||
|
|
||||||
|
```
|
||||||
|
[root@openEuler packages]# python3 -V
|
||||||
|
Python 3.9.9
|
||||||
|
```
|
||||||
|
|
||||||
|
根据相应的版本应该安装仓库提供的对应 `cp39` 的 `rknn_toolkit_lite2` Python 软件包 `rknn_toolkit_lite2-2.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl`,运行以下命令:
|
||||||
|
|
||||||
|
```
|
||||||
|
pip3 install rknn_toolkit_lite2-2.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
|
||||||
|
```
|
||||||
|
|
||||||
|
安装过程如下:
|
||||||
|
|
||||||
|
```
|
||||||
|
[root@openEuler packages]# pip3 install rknn_toolkit_lite2-2.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
|
||||||
|
WARNING: Running pip install with root privileges is generally not a good idea. Try `pip3 install --user` instead.
|
||||||
|
Processing ./rknn_toolkit_lite2-2.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
|
||||||
|
Collecting ruamel.yaml
|
||||||
|
Downloading ruamel.yaml-0.18.14-py3-none-any.whl (118 kB)
|
||||||
|
|████████████████████████████████| 118 kB 644 kB/s
|
||||||
|
Collecting numpy
|
||||||
|
Downloading numpy-2.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (13.9 MB)
|
||||||
|
|████████████████████████████████| 13.9 MB 61 kB/s
|
||||||
|
Collecting psutil
|
||||||
|
Downloading psutil-7.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (279 kB)
|
||||||
|
|████████████████████████████████| 279 kB 31.8 MB/s
|
||||||
|
Collecting ruamel.yaml.clib>=0.2.7
|
||||||
|
Downloading ruamel.yaml.clib-0.2.12-cp39-cp39-manylinux2014_aarch64.whl (636 kB)
|
||||||
|
|████████████████████████████████| 636 kB 23.4 MB/s
|
||||||
|
Installing collected packages: ruamel.yaml.clib, ruamel.yaml, psutil, numpy, rknn-toolkit-lite2
|
||||||
|
Successfully installed numpy-2.0.2 psutil-7.0.0 rknn-toolkit-lite2-2.3.2 ruamel.yaml-0.18.14 ruamel.yaml.clib-0.2.12
|
||||||
|
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
|
||||||
|
```
|
||||||
|
|
||||||
|
还需要安装 `opencv-python` Python 软件包:
|
||||||
|
|
||||||
|
```
|
||||||
|
[root@openEuler packages]# pip3 install opencv-python
|
||||||
|
WARNING: Running pip install with root privileges is generally not a good idea. Try `pip3 install --user` instead.
|
||||||
|
Collecting opencv-python
|
||||||
|
Downloading opencv_python-4.12.0.88-cp37-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (45.9 MB)
|
||||||
|
|████████████████████████████████| 45.9 MB 6.0 kB/s
|
||||||
|
Requirement already satisfied: numpy<2.3.0,>=2 in /usr/local/lib64/python3.9/site-packages (from opencv-python) (2.0.2)
|
||||||
|
Installing collected packages: opencv-python
|
||||||
|
Successfully installed opencv-python-4.12.0.88
|
||||||
|
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
|
||||||
|
```
|
||||||
|
|
||||||
|
## 运行 ResNet18 模型推理
|
||||||
|
|
||||||
|
进入 ResNet18 Demo 目录:
|
||||||
|
|
||||||
|
```
|
||||||
|
cd ~/rknn-toolkit2/rknn-toolkit-lite2/examples/resnet18
|
||||||
|
```
|
||||||
|
|
||||||
|
运行推理:
|
||||||
|
|
||||||
|
```
|
||||||
|
[root@openEuler resnet18]# python3 test.py
|
||||||
|
W rknn-toolkit-lite2 version: 2.3.2
|
||||||
|
--> Load RKNN model
|
||||||
|
done
|
||||||
|
--> Init runtime environment
|
||||||
|
I RKNN: [16:56:45.369] RKNN Runtime Information, librknnrt version: 2.3.2 (429f97ae6b@2025-04-09T09:09:27)
|
||||||
|
I RKNN: [16:56:45.369] RKNN Driver Information, version: 0.9.8
|
||||||
|
I RKNN: [16:56:45.369] RKNN Model Information, version: 6, toolkit version: 2.3.2(compiler version: 2.3.2 (839b70f037@2025-04-03T10:34:04)), target: RKNPU f2, target platform: rk3576, framework name: PyTorch, framework layout: NCHW, model inference type: static_shape
|
||||||
|
W RKNN: [16:56:45.400] query RKNN_QUERY_INPUT_DYNAMIC_RANGE error, rknn model is static shape type, please export rknn with dynamic_shapes
|
||||||
|
W Query dynamic range failed. Ret code: RKNN_ERR_MODEL_INVALID. (If it is a static shape RKNN model, please ignore the above warning message.)
|
||||||
|
done
|
||||||
|
--> Running model
|
||||||
|
resnet18
|
||||||
|
-----TOP 5-----
|
||||||
|
[812] score:0.999638 class:"space shuttle"
|
||||||
|
[404] score:0.000281 class:"airliner"
|
||||||
|
[657] score:0.000014 class:"missile"
|
||||||
|
[833] score:0.000010 class:"submarine, pigboat, sub, U-boat"
|
||||||
|
[466] score:0.000010 class:"bullet train, bullet"
|
||||||
|
|
||||||
|
done
|
||||||
|
```
|
||||||
|
|
||||||
|
## 测试 Dynamic Shape
|
||||||
|
|
||||||
|
进入 Dynamic Shape Demo 目录:
|
||||||
|
|
||||||
|
```
|
||||||
|
cd ~/rknn-toolkit2/rknn-toolkit-lite2/examples/dynamic_shape
|
||||||
|
```
|
||||||
|
|
||||||
|
运行推理:
|
||||||
|
|
||||||
|
```
|
||||||
|
[root@openEuler dynamic_shape]# python3 test.py
|
||||||
|
W rknn-toolkit-lite2 version: 2.3.2
|
||||||
|
--> Load RKNN model
|
||||||
|
done
|
||||||
|
--> Init runtime environment
|
||||||
|
I RKNN: [16:57:46.389] RKNN Runtime Information, librknnrt version: 2.3.2 (429f97ae6b@2025-04-09T09:09:27)
|
||||||
|
I RKNN: [16:57:46.389] RKNN Driver Information, version: 0.9.8
|
||||||
|
I RKNN: [16:57:46.390] RKNN Model Information, version: 6, toolkit version: 2.3.2(compiler version: 2.3.2 (839b70f037@2025-04-03T10:34:04)), target: RKNPU f2, target platform: rk3576, framework name: Caffe, framework layout: NCHW, model inference type: dynamic_shape
|
||||||
|
done
|
||||||
|
--> Running model
|
||||||
|
model: mobilenet_v2
|
||||||
|
|
||||||
|
input shape: 1,3,224,224
|
||||||
|
W The input[0] need NHWC data format, but NCHW set, the data format and data buffer will be changed to NHWC.
|
||||||
|
-----TOP 5-----
|
||||||
|
[155] score:0.937500 class:"Shih-Tzu"
|
||||||
|
[204] score:0.002548 class:"Lhasa, Lhasa apso"
|
||||||
|
[154] score:0.001890 class:"Pekinese, Pekingese, Peke"
|
||||||
|
[283] score:0.000659 class:"Persian cat"
|
||||||
|
[284] score:0.000172 class:"Siamese cat, Siamese"
|
||||||
|
|
||||||
|
input shape: 1,3,160,160
|
||||||
|
W The input[0] need NHWC data format, but NCHW set, the data format and data buffer will be changed to NHWC.
|
||||||
|
-----TOP 5-----
|
||||||
|
[155] score:0.634766 class:"Shih-Tzu"
|
||||||
|
[154] score:0.295166 class:"Pekinese, Pekingese, Peke"
|
||||||
|
[204] score:0.030182 class:"Lhasa, Lhasa apso"
|
||||||
|
[194] score:0.001085 class:"Dandie Dinmont, Dandie Dinmont terrier"
|
||||||
|
[219] score:0.000291 class:"cocker spaniel, English cocker spaniel, cocker"
|
||||||
|
|
||||||
|
input shape: 1,3,256,256
|
||||||
|
W The input[0] need NHWC data format, but NCHW set, the data format and data buffer will be changed to NHWC.
|
||||||
|
-----TOP 5-----
|
||||||
|
[155] score:0.926758 class:"Shih-Tzu"
|
||||||
|
[154] score:0.008347 class:"Pekinese, Pekingese, Peke"
|
||||||
|
[204] score:0.004559 class:"Lhasa, Lhasa apso"
|
||||||
|
[193] score:0.001019 class:"Australian terrier"
|
||||||
|
[283] score:0.000481 class:"Persian cat"
|
||||||
|
|
||||||
|
done
|
||||||
|
```
|
||||||
@ -31,6 +31,7 @@
|
|||||||
- [设置 SELinux](rockchip/设置SELinux.md)
|
- [设置 SELinux](rockchip/设置SELinux.md)
|
||||||
- [使用 Docker 构建镜像](rockchip/使用Docker构建镜像.md)
|
- [使用 Docker 构建镜像](rockchip/使用Docker构建镜像.md)
|
||||||
- [openEuler 适配指南](rockchip/openEuler适配指南.md)
|
- [openEuler 适配指南](rockchip/openEuler适配指南.md)
|
||||||
|
- [在openEuler上使用RKNPU](rockchip/在openEuler上使用RKNPU.md)
|
||||||
- [scripts](../scripts/rockchip): 构建 openEuler RK3399 等开发板镜像的脚本
|
- [scripts](../scripts/rockchip): 构建 openEuler RK3399 等开发板镜像的脚本
|
||||||
- [一次构建脚本](../scripts/rockchip/build.sh)
|
- [一次构建脚本](../scripts/rockchip/build.sh)
|
||||||
- [boot 镜像构建脚本](../scripts/rockchip/build_boot.sh)
|
- [boot 镜像构建脚本](../scripts/rockchip/build_boot.sh)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user