泰山派3M-RK3576-Ai应用-YOLO11-分割模型
2026/5/9 12:21:59 网站建设 项目流程

YOLO11介绍

YOLO11 是 Ultralytics 体系的新一代 YOLO 目标检测/分割/姿态等任务模型迭代版本,延续了 YOLO 系列“一阶段、端到端、实时”的设计思路,通过改进网络结构、特征融合与训练/推理策略,在同等算力下提升精度与速度的权衡,并提供从n/s/m/l/x等不同规模以适配端侧到服务器的部署需求。

💡 提示

在 YOLO 相关模型命名里,n / s / m / l / x这类字母通常表示模型规模(size),也就是网络的宽度/深度配置不同,带来参数量、计算量和精度/速度的权衡。

常见含义:

  • n=nano:最小、最快、精度相对低,适合端侧/低算力
  • s=small:小型
  • m=medium:中型
  • l=large:大型
  • x=xlarge / extra-large:最大、最慢、精度通常最

目标

我们将部署模型到泰山派3M-RK3576板子上,使用 rknn_model_zoo 的官方Demo进行演示。

环境准备

  • 主机环境:Ubuntu22.04(x86)
  • 开发板:泰山派3M-RK3576
  • 数据线:连接PC和开发板用于ADB传输文件。

安装miniforge3

为了防止在一个主机中不同的环境造成的 python 环境问题,我们使用 miniforge3 管理。

安装 miniforge3 :

# YOLO11-分割模型 wget -c https://mirrors.bfsu.edu.cn/github-release/conda-forge/miniforge/LatestRelease/Miniforge3-Linux-x86_64.sh # 运行安装脚本 bash Miniforge3-Linux-x86_64.sh # 1.按下Enter回车继续运行 # 2.然后使用向下箭头,向下滚动查看协议 # 3.最后输入yes # 4.提示Proceed with initialization?输入yes

可以去 https://mirrors.bfsu.edu.cn/github-release/conda-forge/miniforge/LatestRelease/ 这个目录下查看目前最新的 .sh 文件名。

初始化conda环境变量:

source ~/miniforge3/bin/activate

成功之后,命令行前方会显示一个(base)

创建rknn-toolkit2环境

创建并激活Conda环境:YOLO11-RKNN-Toolkit2(这里推荐使用 python 3.10 版本)

后面我们将ONNX模型转化为RKNN模型的时候需要用到。

# 创建环境 conda create -n YOLO11-RKNN-Toolkit2 python=3.10 # 遇到Proceed ([y]/n)? # 输入y即可

激活Conda环境:

conda activate YOLO11-RKNN-Toolkit2 # 激活之后在命令行前面会出现:(YOLO11-RKNN-Toolkit2)

安装依赖环境:

# 安装rknn-toolkit2 pip install rknn-toolkit2 -i https://mirrors.aliyun.com/pypi/simple # 安装指定版本onnx==1.18.0 pip install onnx==1.18.0 -i https://mirrors.aliyun.com/pypi/simple

安装完成之后,退出YOLO11-RKNN-Toolkit2环境:

conda deactivate

创建yolo11环境

创建并激活Conda环境:Tspi3-YOLO11(这里推荐使用 python 3.10 版本)

# 创建环境 conda create -n Tspi3-YOLO11 python=3.10 # 遇到Proceed ([y]/n)? # 输入y即可

激活Conda环境:

conda activate Tspi3-YOLO11 # 激活之后在命令行前面会出现:(TaishanPi3-YOLO11)

安装依赖工具,为YOLO11做准备:

pip install ultralytics onnx onnxscript -i https://mirrors.aliyun.com/pypi/simple

测试:

(Tspi3-YOLO11) lipeng@host:~/workspace$ yolo -v 8.3.248

模型转换

接下来我么需要执行三个重要的步骤:

  1. 拉取pt文件。
  2. 使用rockchip优化过的yolo11项目导出onnx模型。
  3. 使用rknn-toolkit2将onnx模型转化为能硬件加速的RKNN模型。

拉取pt文件

所谓的.pt文件,就是训练好的YOLO11模型权重(参数),只有拿到这个文件,才能去识别目标。

否则即使有YOLO11的代码,也只是一个空架子,无法完成检测。

在 https://github.com/ultralytics/assets/releases/ 这个地址中,有着ultralytics官方给我们提供的.pt权重文件,我们只需要下载需要的:

wget https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11n-seg.pt

导出ONNX模型

我们接下来就要拉取 Rockchip 官方修改的 ultralytics_yolo11项目,针对RKNPU进行了专门的适配:

  • 修改输出结构, 移除后处理结构. (后处理结果对于量化不友好)
  • dfl 结构在 NPU 处理上性能不佳,移至模型外部的后处理阶段,此操作大部分情况下可提升推理性能。
  • 模型输出分支新增置信度的总和,用于后处理阶段加速阈值筛选。

详情:https://github.com/airockchip/ultralytics_yolo11/blob/main/RKOPT_README.zh-CN.md

继续使用Tspi3-YOLO11环境:

conda activate Tspi3-YOLO11

拉取airockchip/ultralytics_yolo11项目:

git clone https://github.com/airockchip/ultralytics_yolo11.git

拉取完成之后,进入目录:

cd ultralytics_yolo11

修改ultralytics_yolo11/ultralytics/cfg/default.yaml文件中的model为刚刚拉取的.pt文件绝对路径

要根据自己的.pt文件路径,进行填写。

# Train settings ------------------------------------------------------------------------------------------------------- -model: yolo11n.pt # (str, optional) path to model file, i.e. yolo11n.pt, yolo11n.yaml +model: /home/lipeng/workspace/yolo11/yolo11n-seg.pt # (str, optional) path to model file, i.e. yolo11n.pt, yolo11n.yaml data: # (str, optional) path to data file, i.e. coco8.yaml epochs: 100 # (int) number of epochs to train for time: # (float, optional) number of hours to train for, overrides epochs if supplied

设置导出路径为当前目录:

export PYTHONPATH=./

使用脚本开始导出 ONNX模型:

python ./ultralytics/engine/exporter.py

ONNX转RKNN

退出Tspi3-YOLO11环境:

conda deactivate

进入YOLO11-RKNN-Toolkit2环境

conda activate YOLO11-RKNN-Toolkit2

接下来我们将使用 rknn_model_zoo 中的 转换脚本 将 ONNX 转换为 RKNN 模型,拉取项目:

git clone https://github.com/airockchip/rknn_model_zoo.git

进入rknn_model_zoo/examples/yolov8_seg/python目录下:

特别注意

因为YOLO11没有专门的分割案例,我们直接使用YOLOv8的案例即可,

cd rknn_model_zoo/examples/yolov8_seg/python

运行rknn_model_zoo/examples/yolov8_seg/python/convert.py脚本转化RKNN模型:

# 语法:python3 convert.py onnx_model_path [platform] [dtype] [output_rknn_path] ## platform:[rk3562, rk3566, rk3568, rk3576, rk3588, rv1126b, rv1109, rv1126, rk1808] ## dtype:[i8, fp] for [rk3562, rk3566, rk3568, rk3576, rk3588, rv1126b] ## dtype:[u8, fp] for [rv1109, rv1126, rk1808] python convert.py /home/lipeng/workspace/yolo11/yolo11n-seg.onnx rk3576 i8
  • platform选择的平台有rk3562,rk3566,rk3568,rk3576,rk3588,rv1126b,rv1109,rv1126,rk1808可选择
  • dtype
  1. 选择i8fp适用于rk3562,rk3566,rk3568,rk3576,rk3588,rv1126b这些平台
  2. 选择u8fp适用于rv1109,rv1126,rk1808这些平台

执行成功之后,会在rknn_model_zoo/examples/yolov8_seg/model目录下生成一个.rknn模型文件。

Demo编译

说明

在 rockchip官方的开源项目 中使用的是C++编写的Demo,可以通过运行

  1. rknn_model_zoo/build-linux.sh
  2. rknn_model_zoo/build-android.sh

这两个脚本(将交叉编译路径替换为实际路径)直接编译示例代码。

部署目录中生成一个install/demo_Linux_aarch64install/demo_Android_aarch64文件夹,包含imgencllmdemolib文件夹。

退出环境

conda deactivate

看到命令行前面出现(base)字样就可以了。

安装交叉编译器

我们需要在PC主机上面编译Demo生成文件,在泰山派3M-RK3576的板子上面运行,所以我们直接使用apt安装aarch64-linux-gnu

sudo apt update && \ sudo apt install -y cmake make gcc-aarch64-linux-gnu g++-aarch64-linux-gnu

编译

进入项目目录:

cd rknn_model_zoo/

给予build-linux.sh运行权限:

sudo chmod +x ./build-linux.sh

运行编译脚本:

./build-linux.sh -t <target> -a <arch> -d <build_demo_name> [-b <build_type>] [-m] [-r] [-j] -t : target (rk356x/rk3576/rk3588/rv1106/rv1126b/rv1126/rk1808) -a : arch (aarch64/armhf) -d : demo name -b : build_type(Debug/Release) -m : enable address sanitizer, build_type need set to Debug -r : disable rga, use cpu resize image -j : disable libjpeg to avoid conflicts between libjpeg and opencv # 我们运行RK3576相关的命令即可。: ./build-linux.sh -t rk3576 -a aarch64 -d yolov8_seg

注意<demo name>这个参数要和rknn_model_zoo/examples中的目标文件夹名称保持一致,因为依靠此参数选择编译的Demo。

最终生成install/文件目录如下:

(base) lipeng@host:~/workspace/yolo11/rknn_model_zoo$ tree install install `-- rk3576_linux_aarch64 `-- rknn_yolov8_seg_demo |-- lib | |-- librga.so | `-- librknnrt.so |-- model | |-- bus.jpg | |-- coco_80_labels_list.txt | `-- yolov8_seg.rknn `-- rknn_yolov8_seg_demo 4 directories, 6 files

板端Demo演示

转移文件

接下来我们需要将rknn_model_zoo/install/rk3576_linux_aarch64/rknn_yolov8_seg_demo目录转移到到板子上面:

推荐使用adb工具,进行转移,泰山派3m默认开启ADB,或者使用TF卡,ssh或者U盘都可以。

参考:https://wiki.lckfb.com/zh-hans/tspi-3-rk3576/system-usage/debian12-usage/adb-usage.html

adb push yolo11/rknn_model_zoo/install/rk3576_linux_aarch64/rknn_yolov8_seg_demo /home/lckfb/

板端运行

详细请阅读:https://github.com/airockchip/rknn_model_zoo/blob/main/examples/yolo11/README.md

我们进入泰山派开发板的终端,然后进入rknn_yolov8_seg_demo/目录:

# 进入目录 cd rknn_yolov8_seg_demo/

设置动态库路径:(为当前目录下的./lib目录下 )

# 设置动态库路径 (非常重要,否则会报错误) export LD_LIBRARY_PATH=./lib

赋予demo可执行权限

sudo chmod +x rknn_yolov8_seg_demo

运行Demo:

# 命令格式:./rknn_yolov8_seg_demo <RKNN模型路径> <传入的图片路径> sudo ./rknn_yolov8_seg_demo model/yolov8_seg.rknn model/bus.jpg

最终会生成一个out.png图片,保存有最终识别之后的成果。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询