admin管理员组文章数量:1130349
作为一名嵌入式 AI 爱好者,我最近在网心云 OEC-Turbo(芯片为 RK3566)上成功部署了 YOLO11 目标检测模型。这款设备性能不错,内置 NPU 支持硬件加速,但部署过程涉及模型转换、交叉编译等步骤,稍有不慎就容易出错。本文基于 Rockchip 官方的 rknn-toolkit2 和 rknn_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)环境配置
-
安装 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
- 下载 Miniconda:
-
安装依赖:
sudo apt update sudo apt install cmake build-essential git libopencv-dev protobuf-compiler libprotobuf-dev libstdc++-12-dev conda install numpy opencv -
克隆仓库:
cd /mnt/d # 或你的工作目录,避免 Windows 文件系统问题,最好移到 ~/ git clone https://github/airockchip/rknn-toolkit2.git git clone https://github/airockchip/rknn_model_zoo.git -
安装 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 包)。
- 进入仓库:
-
修复常见问题: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 等)。
-
下载或导出 ONNX 模型:
- 从 rknn_model_zoo/examples/yolo11/model中运行提供的download_model.sh下载 yolo11n.onnx(或从 https://console.zbox.filez/l/8ufwtG 下载,key: rknn)。
- 或者从 Ultralytics 导出:安装
ultralytics,yolo export model=yolo11n.pt format=onnx opset=13。
-
转换生成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
-
修复仓库问题(如果存在软链接错误,一般不需要):
cd rknn-toolkit2/rknpu2/examples/3rdparty/mpp/Linux/aarch64rm librockchip_mpp.so librockchip_mpp.so.1cp librockchip_mpp.so.0 librockchip_mpp.socp librockchip_mpp.so.0 librockchip_mpp.so.1
-
编译 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. 传输和运行
-
传输到 OEC-Turbo:
- 假设板子 IP 为 192.168.1.100:
scp -r rknn_model_zoo/examples/yolo11/c/install/yolo11_Linux root@192.168.1.100:/root/
- 假设板子 IP 为 192.168.1.100:
-
在板子上运行:
- 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 和检测框。
- SSH 登录板子:
-
性能测试:
- 使用 rknn_benchmark:编译类似步骤,运行
LD_LIBRARY_PATH=./lib ./rknn_benchmark model/yolo11n.rknn model/bus.jpg。 - 预期 FPS:YOLO11n INT8 约 34 FPS(单核)。
- 使用 rknn_benchmark:编译类似步骤,运行
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-toolkit2 和 rknn_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)环境配置
-
安装 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
- 下载 Miniconda:
-
安装依赖:
sudo apt update sudo apt install cmake build-essential git libopencv-dev protobuf-compiler libprotobuf-dev libstdc++-12-dev conda install numpy opencv -
克隆仓库:
cd /mnt/d # 或你的工作目录,避免 Windows 文件系统问题,最好移到 ~/ git clone https://github/airockchip/rknn-toolkit2.git git clone https://github/airockchip/rknn_model_zoo.git -
安装 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 包)。
- 进入仓库:
-
修复常见问题: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 等)。
-
下载或导出 ONNX 模型:
- 从 rknn_model_zoo/examples/yolo11/model中运行提供的download_model.sh下载 yolo11n.onnx(或从 https://console.zbox.filez/l/8ufwtG 下载,key: rknn)。
- 或者从 Ultralytics 导出:安装
ultralytics,yolo export model=yolo11n.pt format=onnx opset=13。
-
转换生成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
-
修复仓库问题(如果存在软链接错误,一般不需要):
cd rknn-toolkit2/rknpu2/examples/3rdparty/mpp/Linux/aarch64rm librockchip_mpp.so librockchip_mpp.so.1cp librockchip_mpp.so.0 librockchip_mpp.socp librockchip_mpp.so.0 librockchip_mpp.so.1
-
编译 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. 传输和运行
-
传输到 OEC-Turbo:
- 假设板子 IP 为 192.168.1.100:
scp -r rknn_model_zoo/examples/yolo11/c/install/yolo11_Linux root@192.168.1.100:/root/
- 假设板子 IP 为 192.168.1.100:
-
在板子上运行:
- 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 和检测框。
- SSH 登录板子:
-
性能测试:
- 使用 rknn_benchmark:编译类似步骤,运行
LD_LIBRARY_PATH=./lib ./rknn_benchmark model/yolo11n.rknn model/bus.jpg。 - 预期 FPS:YOLO11n INT8 约 34 FPS(单核)。
- 使用 rknn_benchmark:编译类似步骤,运行
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
版权声明:本文标题:【OEC-Turbo】网心云 OEC-Turbo 上运行 YOLO11 的完整教程 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://it.en369.cn/jiaocheng/1763552476a2942639.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论