瑞芯微 Rockchip 系列 RK3588 部署 yolo11 模型推理教程
在上一篇文章中,我介绍了如何在瑞芯微 Rockchip 系列芯片将主流深度学习框架模型转换为 RKNN 模型。在这篇文章,我将介绍如何在瑞芯微 Rockchip 系列 RK3588 芯片上部署 yolo11 模型推理。本文章会使用到上一篇文章转换的 rknn 模型,因此如果还没看过上一篇文章的同学,建议优先阅读上一篇文章。本教程不仅适合 RK3588 平台,也适合其他 RK 系列平台,例如 RK3
前言
在上一篇文章中,我介绍了如何在瑞芯微 Rockchip 系列芯片将主流深度学习框架模型转换为 RKNN 模型。在这篇文章,我将介绍如何在瑞芯微 Rockchip 系列 RK3588 芯片上部署 yolo11 模型推理。本文章会使用到上一篇文章转换的 rknn 模型,因此如果还没看过上一篇文章的同学,建议优先阅读上一篇文章。
本教程不仅适合 RK3588 平台,也适合其他 RK 系列平台,例如 RK3566、RK3568、RK3562 等。具体平台请参考 RKNN-Toolkit2 文档。
板端 NPU 驱动环境确认
确保你的板端使用了 Rockchip 固件刷入,Rockchip 固件默认自带 NPU 驱动,使用如下命令查看驱动版本:
dmesg | grep -i rknpu
# 或
cat /sys/kernel/debug/rknpu/version
# 或
cat /sys/kernel/debug/rknpu/driver_version
# 或
cat /proc/debug/rknpu/driver_version
打印如下:
[ 5.641038] RKNPU fdab0000.npu: Adding to iommu group 0
[ 5.645141] RKNPU fdab0000.npu: RKNPU: rknpu iommu is enabled, using iommu mode
[ 5.651052] RKNPU fdab0000.npu: Looking up rknpu-supply from device tree
[ 5.657737] RKNPU fdab0000.npu: Looking up mem-supply from device tree
[ 5.658410] RKNPU fdab0000.npu: can't request region for resource [mem 0xfdab0000-0xfdabffff]
[ 5.663132] RKNPU fdab0000.npu: can't request region for resource [mem 0xfdac0000-0xfdacffff]
[ 5.667732] RKNPU fdab0000.npu: can't request region for resource [mem 0xfdad0000-0xfdadffff]
[ 5.673037] [drm] Initialized rknpu 0.9.8 20240828 for fdab0000.npu on minor 1
[ 5.677369] RKNPU fdab0000.npu: Looking up rknpu-supply from device tree
[ 5.677977] RKNPU fdab0000.npu: Looking up mem-supply from device tree
[ 5.678855] RKNPU fdab0000.npu: Looking up rknpu-supply from device tree
[ 5.680912] RKNPU fdab0000.npu: RKNPU: bin=0
[ 5.684056] RKNPU fdab0000.npu: leakage=7
[ 5.686957] RKNPU fdab0000.npu: Looking up rknpu-supply from device tree
[ 5.686976] debugfs: Directory 'fdab0000.npu-rknpu' with parent 'vdd_npu_s0' already present!
[ 5.697891] RKNPU fdab0000.npu: pvtm=836
[ 5.706536] RKNPU fdab0000.npu: pvtm-volt-sel=2
[ 5.711939] RKNPU fdab0000.npu: avs=0
[ 5.716542] RKNPU fdab0000.npu: l=10000 h=85000 hyst=5000 l_limit=0 h_limit=800000000 h_table=0
[ 5.731861] RKNPU fdab0000.npu: failed to find power_model node
[ 5.736109] RKNPU fdab0000.npu: RKNPU: failed to initialize power model
[ 5.744664] RKNPU fdab0000.npu: RKNPU: failed to get dynamic-coefficient
[ 577.469647] RKNPU fdab0000.npu: RKNPU: iommu still enabled
可以看到,我的 npu 驱动版本为 0.98。
NPU 推理流程

RKNN通用 API 接口调用流程:
- 调用
rknn_init()接口初始化模型; - 调用
rknn_query()接口查询模型的输入输出属性; - 对输入进行前处理;
- 调用
rknn_inputs_set()接口设置输入数据; - 调用
rknn_run()接口进行模型推理; - 调用
rknn_outputs_get()接口获取推理结果数据; - 对输出进行后处理;
- 调用
rknn_outputs_release()接口释放输出数据内存; - 调用
rknn_destroy()接口销毁RKNN
代码示例
下面我将手把手教大家如何在 RK3588 上部署 yolo11 模型推理,其他 RK 系列平台同理。
这里需要用到一个库,rknn_model_zoo,这个库里面包含了各种示例代码,方便我们快速上手。
首先,运行如下命令下载 rknn_model_zoo 库:
git clone https://github.com/airockchip/rknn_model_zoo.git
因为需要在板端运行,因此我们需要安装交叉编译工具链进行交叉编译,这里以 aarch64 为例,运行如下命令:
wget https://releases.linaro.org/components/toolchain/binaries/latest-7/aarch64-linux-gnu/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz
tar -xvf gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz
接着,进入 rknn_model_zoo 目录,该目录下有个 build-linux.sh 文件,在文件开头位置添加如下命令:
# Projects 是你刚刚下载的 gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu 的绝对路径
GCC_COMPILER=Projects/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu
将我们在上篇文章中编译的 yolo11n.rknn 放到 当前目录下的 examples/yolo11/model 目录中,如果没有这个文件,可以运行如下命令进行下载:
wget -P examples/yolo11/model https://github.com/qaz624824554/rknn_trans_test/raw/refs/heads/master/yolo11n.rknn
接着,运行如下命令,编译 yolo11 模型示例:
chmod +x build-linux.sh
./build-linux.sh -t rk3588 -a aarch64 -d yolo11
如果看到如下输出,说明编译成功。

此时会在当前目录下生成一个 install 目录,里面包含编译好的可执行文件。目录结构如下:
install
└── rk3588_linux_aarch64
└── rknn_yolo11_demo
├── lib
│ ├── librga.so
│ └── librknnrt.so
├── model
│ ├── bus.jpg
│ ├── coco_80_labels_list.txt
│ └── yolo11n.rknn
├── rknn_yolo11_demo
└── rknn_yolo11_demo_zero_copy
将 rknn_yolo11_demo 目录放到板端,并且进入该目录,接着运行如下命令进行推理:
export LD_LIBRARY_PATH=./lib
./rknn_yolo11_demo model/yolo11n.rknn model/bus.jpg
如果看到如下输出,说明推理成功,并且当前目录下会生成一个 out.png 的图片。

图片的效果如下:

至此,我们成功实现了在 RK3588 上部署了 yolo11 模型推理。
改进
由于这个推理示例代码是基于单帧单张图片的,因此无法进行实时推理。不过只要稍微改进,例如配合 opencv 库,就可以实现实时推理了,这个我会在后续的文章中进行介绍,有兴趣的同学可以点波关注哟。
更多推荐



所有评论(0)