admin管理员组

文章数量:1130349

作为一名嵌入式 AI 爱好者,我最近在网心云 OEC-Turbo(芯片为 RK3566)上成功部署了 YOLO11 目标检测模型。这款设备性能不错,内置 NPU 支持硬件加速,但部署过程涉及模型转换、交叉编译等步骤,稍有不慎就容易出错。本文基于 Rockchip 官方的 rknn-toolkit2rknn_model_zoo 仓库,详细记录了从环境准备到运行的全过程。如果你是初学者,这篇教程会帮你避坑。如果你的板子已经刷了 Armbian 系统(基于 Ubuntu 24.04),那就更好了——我的环境正是如此。

注意:本教程基于 2025 年 9 月的最新版本(rknn-toolkit2 v2.3.2)。如果版本更新,请参考官方 GitHub(https://github/airockchip/rknn-toolkit2 和 https://github/airockchip/rknn_model_zoo)。整个过程在 Windows 11 的 WSL(Ubuntu 24.04)上进行交叉编译,然后将编译好的文件传输到 OEC-Turbo 运行。

1. 硬件和软件要求

  • 硬件:网心云 OEC-Turbo(RK3566 芯片),已刷 Armbian 系统(内核 6.1.x,GLIBC 2.39)。
  • 开发机:Windows 11 + WSL(Ubuntu 24.04),或 Linux PC。确保 WSL 有足够内存(至少 8GB)。
  • 软件依赖
    • Python 3.10(推荐,使用 Miniconda 安装)。
    • GCC 交叉编译工具链(GCC 12.2 for aarch64)。
    • rknn-toolkit2(v2.3.2)。
    • ONNX 库(v1.12.0,兼容性关键)。
    • 其他:CMake, Git, OpenCV 等。

OEC-Turbo 的 NPU 支持 FP16/INT8 量化,YOLO11 的 FPS 可达 20-77(根据模型大小,参考官方 benchmark)。

2. 环境准备

2.1 开发机(WSL)环境配置

  1. 安装 Miniconda 和 Python 3.10

    • 下载 Miniconda:wget https://repo.anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh
    • 安装:bash Miniconda3-latest-Linux-x86_64.sh
    • 创建虚拟环境:conda create -n rk3566 python=3.10
    • 激活:conda activate rk3566
  2. 安装依赖

    sudo apt update
    sudo apt install cmake build-essential git libopencv-dev protobuf-compiler libprotobuf-dev libstdc++-12-dev
    conda install numpy opencv
    
  3. 克隆仓库

    cd /mnt/d  # 或你的工作目录,避免 Windows 文件系统问题,最好移到 ~/
    git clone https://github/airockchip/rknn-toolkit2.git
    git clone https://github/airockchip/rknn_model_zoo.git
    
  4. 安装 rknn-toolkit2

    • 进入仓库:cd rknn-toolkit2-master\rknn-toolkit2\packages\x86_64
    • pip install rknn_toolkit2-2.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl(安装 rknn-toolkit2 包)。
  5. 修复常见问题:rknn-toolkit2 v2.3.2 依赖旧版 ONNX(包含 onnx.mapping)。如果报 AttributeError: module 'onnx' has no attribute 'mapping'

    pip uninstall onnx
    pip install onnx==1.12.0
    

    如果安装失败,尝试下载 wheel 文件(从 https://pypi/project/onnx/1.12.0/ 下载 cp310-manylinux_x86_64.whl):

    wget https://files.pythonhosted/packages/.../onnx-1.12.0-cp310-cp310-manylinux_2_17_x86_64.whl
    pip install onnx-1.12.0-cp310-cp310-manylinux_2_17_x86_64.whl
    

2.2 下载 GCC 交叉编译工具链到开发机(WSL)

OEC-Turbo 系统 GLIBC 2.39,支持 GCC 12.2:

  • 下载:wget https://developer.arm/-/media/Files/downloads/gnu/12.2.rel1/binrel/arm-gnu-toolchain-12.2.rel1-x86_64-aarch64-none-linux-gnu.tar.xz
  • 解压:tar -xvf arm-gnu-toolchain-12.2.rel1-x86_64-aarch64-none-linux-gnu.tar.xz
  • 移动:sudo mv arm-gnu-toolchain-12.2.rel1-x86_64-aarch64-none-linux-gnu /opt/gcc-arm/
  • 验证:/opt/gcc-arm/arm-gnu-toolchain-12.2.rel1-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc --version(应显示 12.2)。

2.3 OEC-Turbo 板子上的准备

  • 确保 NPU 驱动加载:lsmod | grep rknpu(如果没有,参考 Rockchip 官网安装 RKNPU 驱动)。
  • 安装依赖:sudo apt install libopencv4.5-dev libstdc++6

3. 在 开发机(WSL)上进行模型转换(ONNX to RKNN)

YOLO11 模型从 rknn_model_zoo 导出,支持 n/s/m 变体(yolo11n.onnx 等)。

  1. 下载或导出 ONNX 模型

    • 从 rknn_model_zoo/examples/yolo11/model中运行提供的download_model.sh下载 yolo11n.onnx(或从 https://console.zbox.filez/l/8ufwtG 下载,key: rknn)。
    • 或者从 Ultralytics 导出:安装 ultralyticsyolo export model=yolo11n.pt format=onnx opset=13
  2. 转换生成RKNN模型

    • 进入目录:cd rknn_model_zoo/examples/yolo11/python
    • 修改 convert.py(如果需要自定义输入/输出)。
    • 运行:python convert.py ../model/yolo11n.onnx rk3566
    • 输出:生成 yolo11n.rknn 文件。
    • 如果报错,确认 ONNX 版本:python -c "import onnx; print(onnx.__version__)"(应为 1.12.0)。

4. 在开发机(WSL)上编译 Demo

  1. 修复仓库问题(如果存在软链接错误,一般不需要):

    • cd rknn-toolkit2/rknpu2/examples/3rdparty/mpp/Linux/aarch64
    • rm librockchip_mpp.so librockchip_mpp.so.1
    • cp librockchip_mpp.so.0 librockchip_mpp.so
    • cp librockchip_mpp.so.0 librockchip_mpp.so.1
  2. 编译 YOLO11 Demo

    • 进入:cd rknn_model_zoo
    • 执行:./build-linux.sh -t rk3566 -a aarch64 -d yolo11
      • -t rk3566:目标芯片(rk356x 代表 RK3566/3568)。
      • -a aarch64:架构。
      • GCC_COMPILER 路径:确保脚本中指向 /opt/gcc-arm/.../aarch64-none-linux-gnu-
    • 输出:在 install/yolo11_Linux 目录下生成可执行文件、lib 和模型。

5. 传输和运行

  1. 传输到 OEC-Turbo

    • 假设板子 IP 为 192.168.1.100:
      scp -r rknn_model_zoo/examples/yolo11/c/install/yolo11_Linux root@192.168.1.100:/root/
      
  2. 在板子上运行

    • SSH 登录板子:ssh root@192.168.1.100
    • 进入目录:cd /root/yolo11_Linux
    • 运行:LD_LIBRARY_PATH=./lib ./yolo11 model/yolo11n.rknn model/bus.jpg(替换为你的模型和图片)。
    • 输出:生成 out.jpg(检测结果),查看 FPS 和检测框。
  3. 性能测试

    • 使用 rknn_benchmark:编译类似步骤,运行 LD_LIBRARY_PATH=./lib ./rknn_benchmark model/yolo11n.rknn model/bus.jpg
    • 预期 FPS:YOLO11n INT8 约 34 FPS(单核)。

6. 常见问题排查

  • GLIBC 版本错误:用 GCC 12.2 重新编译。
  • ONNX mapping 错误:确认 ONNX 1.12.0,卸载重装。
  • Protobuf 错误:确保 protoc --version 为 3.20.x 或 3.21.x,安装 libprotobuf-dev
  • 链接错误 (R_X86_64_TPOFF32):用动态 Protobuf 库,安装 wheel 文件。
  • NPU 未加载:检查 dmesg | grep rknpu,重启或安装驱动。
  • 权限问题:在 WSL 用 sudo,在板子用 chmod。
  • 模型不支持:YOLO11 支持 RK3566,但某些算子需量化(INT8 更快)。

如果运行时 FPS 低,检查 NPU 频率(cat /sys/kernel/debug/rknpu/load)或用 INT8 量化。

结语

通过这个教程,可以在 OEC-Turbo 上轻松运行 YOLO11,实现实时目标检测。整个过程强调兼容性,尤其是 ONNX 版本。如果有问题,欢迎评论!

参考链接

  • Rockchip RKNN Toolkit2: https://github/airockchip/rknn-toolkit2
  • RKNN Model Zoo: https://github/airockchip/rknn_model_zoo
  • https://wwwblogs/milton/p/18907603

作为一名嵌入式 AI 爱好者,我最近在网心云 OEC-Turbo(芯片为 RK3566)上成功部署了 YOLO11 目标检测模型。这款设备性能不错,内置 NPU 支持硬件加速,但部署过程涉及模型转换、交叉编译等步骤,稍有不慎就容易出错。本文基于 Rockchip 官方的 rknn-toolkit2rknn_model_zoo 仓库,详细记录了从环境准备到运行的全过程。如果你是初学者,这篇教程会帮你避坑。如果你的板子已经刷了 Armbian 系统(基于 Ubuntu 24.04),那就更好了——我的环境正是如此。

注意:本教程基于 2025 年 9 月的最新版本(rknn-toolkit2 v2.3.2)。如果版本更新,请参考官方 GitHub(https://github/airockchip/rknn-toolkit2 和 https://github/airockchip/rknn_model_zoo)。整个过程在 Windows 11 的 WSL(Ubuntu 24.04)上进行交叉编译,然后将编译好的文件传输到 OEC-Turbo 运行。

1. 硬件和软件要求

  • 硬件:网心云 OEC-Turbo(RK3566 芯片),已刷 Armbian 系统(内核 6.1.x,GLIBC 2.39)。
  • 开发机:Windows 11 + WSL(Ubuntu 24.04),或 Linux PC。确保 WSL 有足够内存(至少 8GB)。
  • 软件依赖
    • Python 3.10(推荐,使用 Miniconda 安装)。
    • GCC 交叉编译工具链(GCC 12.2 for aarch64)。
    • rknn-toolkit2(v2.3.2)。
    • ONNX 库(v1.12.0,兼容性关键)。
    • 其他:CMake, Git, OpenCV 等。

OEC-Turbo 的 NPU 支持 FP16/INT8 量化,YOLO11 的 FPS 可达 20-77(根据模型大小,参考官方 benchmark)。

2. 环境准备

2.1 开发机(WSL)环境配置

  1. 安装 Miniconda 和 Python 3.10

    • 下载 Miniconda:wget https://repo.anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh
    • 安装:bash Miniconda3-latest-Linux-x86_64.sh
    • 创建虚拟环境:conda create -n rk3566 python=3.10
    • 激活:conda activate rk3566
  2. 安装依赖

    sudo apt update
    sudo apt install cmake build-essential git libopencv-dev protobuf-compiler libprotobuf-dev libstdc++-12-dev
    conda install numpy opencv
    
  3. 克隆仓库

    cd /mnt/d  # 或你的工作目录,避免 Windows 文件系统问题,最好移到 ~/
    git clone https://github/airockchip/rknn-toolkit2.git
    git clone https://github/airockchip/rknn_model_zoo.git
    
  4. 安装 rknn-toolkit2

    • 进入仓库:cd rknn-toolkit2-master\rknn-toolkit2\packages\x86_64
    • pip install rknn_toolkit2-2.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl(安装 rknn-toolkit2 包)。
  5. 修复常见问题:rknn-toolkit2 v2.3.2 依赖旧版 ONNX(包含 onnx.mapping)。如果报 AttributeError: module 'onnx' has no attribute 'mapping'

    pip uninstall onnx
    pip install onnx==1.12.0
    

    如果安装失败,尝试下载 wheel 文件(从 https://pypi/project/onnx/1.12.0/ 下载 cp310-manylinux_x86_64.whl):

    wget https://files.pythonhosted/packages/.../onnx-1.12.0-cp310-cp310-manylinux_2_17_x86_64.whl
    pip install onnx-1.12.0-cp310-cp310-manylinux_2_17_x86_64.whl
    

2.2 下载 GCC 交叉编译工具链到开发机(WSL)

OEC-Turbo 系统 GLIBC 2.39,支持 GCC 12.2:

  • 下载:wget https://developer.arm/-/media/Files/downloads/gnu/12.2.rel1/binrel/arm-gnu-toolchain-12.2.rel1-x86_64-aarch64-none-linux-gnu.tar.xz
  • 解压:tar -xvf arm-gnu-toolchain-12.2.rel1-x86_64-aarch64-none-linux-gnu.tar.xz
  • 移动:sudo mv arm-gnu-toolchain-12.2.rel1-x86_64-aarch64-none-linux-gnu /opt/gcc-arm/
  • 验证:/opt/gcc-arm/arm-gnu-toolchain-12.2.rel1-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc --version(应显示 12.2)。

2.3 OEC-Turbo 板子上的准备

  • 确保 NPU 驱动加载:lsmod | grep rknpu(如果没有,参考 Rockchip 官网安装 RKNPU 驱动)。
  • 安装依赖:sudo apt install libopencv4.5-dev libstdc++6

3. 在 开发机(WSL)上进行模型转换(ONNX to RKNN)

YOLO11 模型从 rknn_model_zoo 导出,支持 n/s/m 变体(yolo11n.onnx 等)。

  1. 下载或导出 ONNX 模型

    • 从 rknn_model_zoo/examples/yolo11/model中运行提供的download_model.sh下载 yolo11n.onnx(或从 https://console.zbox.filez/l/8ufwtG 下载,key: rknn)。
    • 或者从 Ultralytics 导出:安装 ultralyticsyolo export model=yolo11n.pt format=onnx opset=13
  2. 转换生成RKNN模型

    • 进入目录:cd rknn_model_zoo/examples/yolo11/python
    • 修改 convert.py(如果需要自定义输入/输出)。
    • 运行:python convert.py ../model/yolo11n.onnx rk3566
    • 输出:生成 yolo11n.rknn 文件。
    • 如果报错,确认 ONNX 版本:python -c "import onnx; print(onnx.__version__)"(应为 1.12.0)。

4. 在开发机(WSL)上编译 Demo

  1. 修复仓库问题(如果存在软链接错误,一般不需要):

    • cd rknn-toolkit2/rknpu2/examples/3rdparty/mpp/Linux/aarch64
    • rm librockchip_mpp.so librockchip_mpp.so.1
    • cp librockchip_mpp.so.0 librockchip_mpp.so
    • cp librockchip_mpp.so.0 librockchip_mpp.so.1
  2. 编译 YOLO11 Demo

    • 进入:cd rknn_model_zoo
    • 执行:./build-linux.sh -t rk3566 -a aarch64 -d yolo11
      • -t rk3566:目标芯片(rk356x 代表 RK3566/3568)。
      • -a aarch64:架构。
      • GCC_COMPILER 路径:确保脚本中指向 /opt/gcc-arm/.../aarch64-none-linux-gnu-
    • 输出:在 install/yolo11_Linux 目录下生成可执行文件、lib 和模型。

5. 传输和运行

  1. 传输到 OEC-Turbo

    • 假设板子 IP 为 192.168.1.100:
      scp -r rknn_model_zoo/examples/yolo11/c/install/yolo11_Linux root@192.168.1.100:/root/
      
  2. 在板子上运行

    • SSH 登录板子:ssh root@192.168.1.100
    • 进入目录:cd /root/yolo11_Linux
    • 运行:LD_LIBRARY_PATH=./lib ./yolo11 model/yolo11n.rknn model/bus.jpg(替换为你的模型和图片)。
    • 输出:生成 out.jpg(检测结果),查看 FPS 和检测框。
  3. 性能测试

    • 使用 rknn_benchmark:编译类似步骤,运行 LD_LIBRARY_PATH=./lib ./rknn_benchmark model/yolo11n.rknn model/bus.jpg
    • 预期 FPS:YOLO11n INT8 约 34 FPS(单核)。

6. 常见问题排查

  • GLIBC 版本错误:用 GCC 12.2 重新编译。
  • ONNX mapping 错误:确认 ONNX 1.12.0,卸载重装。
  • Protobuf 错误:确保 protoc --version 为 3.20.x 或 3.21.x,安装 libprotobuf-dev
  • 链接错误 (R_X86_64_TPOFF32):用动态 Protobuf 库,安装 wheel 文件。
  • NPU 未加载:检查 dmesg | grep rknpu,重启或安装驱动。
  • 权限问题:在 WSL 用 sudo,在板子用 chmod。
  • 模型不支持:YOLO11 支持 RK3566,但某些算子需量化(INT8 更快)。

如果运行时 FPS 低,检查 NPU 频率(cat /sys/kernel/debug/rknpu/load)或用 INT8 量化。

结语

通过这个教程,可以在 OEC-Turbo 上轻松运行 YOLO11,实现实时目标检测。整个过程强调兼容性,尤其是 ONNX 版本。如果有问题,欢迎评论!

参考链接

  • Rockchip RKNN Toolkit2: https://github/airockchip/rknn-toolkit2
  • RKNN Model Zoo: https://github/airockchip/rknn_model_zoo
  • https://wwwblogs/milton/p/18907603

本文标签: 完整教程心云OECTurbo