当前位置: 首页 > news >正文

泰山派3M-RK3576-Ai应用-YOLO11-分割模型

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图片,保存有最终识别之后的成果。

http://www.jsqmd.com/news/782899/

相关文章:

  • CANN融合因果一维卷积算子
  • 华为通信/CANN hcomm查询拓扑信息
  • CANN/hcomm通信操作API文档
  • Graph-autofusion super_kernel极简示例
  • 如何快速掌握大气层系统:从新手到专家的终极指南
  • 构建基于Python与机器学习的智能客服
  • 如何高效准确实现表面测温
  • AFSIM 5.3.1在Visual Studio 2015下的详细配置步骤
  • CANN/SHMEM快速使用指南
  • 企业内如何通过Taotoken实现AI模型调用的统一审计与风控
  • ECU-TEST 测试报告自动上传(含代码实现)
  • CANN/ge C++ ES API兼容性设计
  • 可解释AI(XAI)实践指南:从模型透明到业务可信
  • 网盘直链下载助手:九大主流网盘免登录高速下载解决方案
  • 离海数百公里,他们为孩子造了一片“海”
  • 长期使用Taotoken服务在API延迟与稳定性方面的实际感受分享
  • cann/cannbot-skills Kernel定义内存分配
  • CANN/ops-cv NMS掩码算子
  • AI应用上线前必做的5项安全验证:基于SITS2026标准的CI/CD嵌入式检测清单
  • 2026年北京全屋高端定制现代简约风格公司测评与选型指南
  • 泰山派3M-RK3576-系统开发与编译-Buildroot系统-编译内核
  • CANN运行时资源限制内核加载示例
  • Switch游戏文件管理神器:NSC_BUILDER让你告别格式混乱烦恼
  • test000009913
  • 对比多个模型 API 供应商后我为何选择 Taotoken 作为主用平台
  • 模型诊断与知识库调试:从冲突集到高效算法的工程实践
  • 网上祭祀平台哪个更便捷
  • Arm DynamIQ架构性能监控单元(PMU)设计与实战
  • N_m3u8DL-RE终极指南:三步搞定加密流媒体下载,永久保存你喜爱的视频内容
  • CANN/cann-recipes-infer SwigluClipQuant算子