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

RDK X5 部署 Ultralytics YOLO 目标检测/分割/姿态/分类实战教程

RDK X5 部署 Ultralytics YOLO 目标检测/分割/姿态/分类实战教程

文章目录

  • RDK X5 部署 Ultralytics YOLO 目标检测/分割/姿态/分类实战教程
    • 一、背景介绍
    • 二、适用环境
    • 三、内容目标
    • 四、操作步骤
      • 步骤一:克隆仓库并下载模型
      • 步骤二:安装 Python 依赖
      • 步骤三:运行目标检测
      • 步骤四:运行实例分割
      • 步骤五:运行姿态估计
      • 步骤六:运行图像分类
    • 五、模型转换(自定义模型)
      • 5.1 准备转换环境
      • 5.2 导出 ONNX
      • 5.3 准备校准数据并生成配置
      • 5.4 编译 BIN 模型
      • 5.5 验证编译结果
      • 5.6 输出 Tensor 协议(关键)
    • 六、参数说明
    • 七、模型列表概览
      • Detection(检测)
      • Instance Segmentation(实例分割)
      • Pose Estimation(姿态估计)
      • Classification(图像分类)
    • 八、性能数据解读
      • 检测性能(部分)
      • 分类性能(部分,输入 224×224)
    • 九、常见问题
      • Q1:模型下载失败?
      • Q2:提示 `ModuleNotFoundError: No module named 'hbm_runtime'`?
      • Q3:为什么输入必须是 NV12 格式?
      • Q4:如何切换不同大小的模型?
      • Q5:跑自己的图片怎么做?
    • 十、参考资料
    • 十一、来源声明

一、背景介绍

在端侧设备上运行视觉 AI 模型,是实现低成本、低延迟、高隐私实时推理的关键。RDK X5 是 D-Robotics 推出的嵌入式 AI 开发板,内置 BPU(Brain Processing Unit),专为卷积神经网络推理优化,能够在低功耗条件下提供可观的吞吐能力。

Ultralytics YOLO 是目前工业界使用最广泛的实时目标检测框架之一,涵盖检测(Detect)、实例分割(Segment)、姿态估计(Pose)和图像分类(Classify)四大任务。本教程将指导你在 RDK X5 上完成从模型下载到多任务推理的全流程。

特别说明:本教程覆盖 YOLOv5u / v8 / v9 / v10 / v11 / v12 / v13 共 7 个系列的检测模型,以及对应的分割、姿态、分类模型,总计 50+ 个预编译.bin模型可供选择。

二、适用环境

项目要求
硬件平台RDK X5
操作系统RDK OS ≥ 3.5.0 (Ubuntu 22.04)
推理后端hbm_runtime
模型格式.bin(BPU 量化模型)
输入格式packed NV12(YUV420SP)
Python 版本Python 3

三、内容目标

完成本教程后,你将能够:

  • 下载任意 YOLO 系列的预编译.bin模型
  • 在 RDK X5 上运行目标检测推理
  • 切换任务类型,运行实例分割、姿态估计、图像分类
  • 理解关键参数的作用并灵活调整

四、操作步骤

步骤一:克隆仓库并下载模型

首先克隆 Model Zoo 仓库:

gitclone https://github.com/D-Robotics/rdk_model_zoo.gitcdrdk_model_zoo/samples/vision/ultralytics_yolo

进入模型目录,按需下载:

cdmodel# 仅下载默认模型(yolo11n 检测)chmod+x download_model.sh ./download_model.sh# 或下载全部 50+ 模型chmod+x fulldownload.sh ./fulldownload.sh

所有模型的下载地址为:

https://archive.d-robotics.cc/downloads/rdk_model_zoo/rdk_x5/ultralytics_YOLO/

步骤二:安装 Python 依赖

进入 Python 运行时目录,安装必需的依赖:

cd../runtime/python pipinstallnumpy opencv-python hbm-runtime scipy

注意hbm-runtime为 RDK X5 板端专用包,仅在板端环境可安装。如果你在 PC 端配置,可先跳过此包,待推送到板端后再安装。

步骤三:运行目标检测

python3 main.py\--taskdetect\--model-path../../model/yolo11n_detect_bayese_640x640_nv12.bin\--test-img../../../../../datasets/coco/assets/bus.jpg\--img-save-path../../test_data/result_detect.jpg

检测结果图将保存到../../test_data/result_detect.jpg

一键运行(默认检测任务):

chmod+x run.sh ./run.sh

run.sh默认会在模型不存在时自动下载yolo11n_detect_bayese_640x640_nv12.bin

步骤四:运行实例分割

python3 main.py\--taskseg\--model-path../../model/yolo11n_seg_bayese_640x640_nv12.bin\--test-img../../../../../datasets/coco/assets/bus.jpg\--img-save-path../../test_data/result_seg.jpg

步骤五:运行姿态估计

python3 main.py\--taskpose\--model-path../../model/yolo11n_pose_bayese_640x640_nv12.bin\--test-img../../../../../datasets/coco/assets/bus.jpg\--img-save-path../../test_data/result_pose.jpg

步骤六:运行图像分类

python3 main.py\--taskcls\--model-path../../model/yolo11n_cls_detect_bayese_640x640_nv12.bin\--test-img../../test_data/zebra_cls.jpg\--label-file../../../../../datasets/imagenet/imagenet_classes.names

五、模型转换(自定义模型)

如果你使用的是 Model Zoo 提供的预编译.bin模型,可以直接跳过本章节。

如果你需要部署自己训练的 YOLO 模型,或者想使用 Model Zoo 未覆盖的模型变体(如不同的输入尺寸、不同的类别数),则需要将 PyTorch 模型转换为 BPU 可执行的.bin格式。整个转换流程分为四步:

5.1 准备转换环境

模型转换需要在x86 Linux 机器(非板端)上进行。推荐两种方式:

方式一:Pip 安装

conda create-nrdk_envpython=3.10-yconda activate rdk_env pipinstallrdkx5-yolo-mapper hb_mapper--version

方式二:Docker 安装

dockerpull openexplorer/ai_toolchain_ubuntu_20_x5_cpu:v1.2.8dockerrun-it--rm\-v/path/to/rdk_model_zoo:/data\openexplorer/ai_toolchain_ubuntu_20_x5_cpu:v1.2.8 /bin/bash

离线版本的 Docker 镜像可从地瓜开发者社区获取:https://forum.d-robotics.cc/t/topic/28035

5.2 导出 ONNX

使用conversion/目录下的export_monkey_patch.py.pt模型导出为 ONNX:

cdconversion python3 export_monkey_patch.py--ptyolo11n.pt

5.3 准备校准数据并生成配置

python3 mapper.py--onnxyolo11n.onnx --cal-images /path/to/calibration_images

这一步会自动:

  • 从校准图片中提取量化校准数据
  • 生成hb_mapper所需的config.yaml配置文件

5.4 编译 BIN 模型

hb_mapper checker --model-type onnx--configconfig.yaml hb_mapper makertbin--configconfig.yaml

5.5 验证编译结果

# 性能预估hb_perf config.yaml# 模型信息检查hrt_model_exec model_info--model_fileyolo11n_detect_bayese_640x640_nv12.bin# 板端性能测试hrt_model_exec perf--model_fileyolo11n_detect_bayese_640x640_nv12.bin--thread_num1

5.6 输出 Tensor 协议(关键)

转换时需要保持与 Runtime 一致的输出协议,否则推理结果无法正确解析:

Detection(检测)— YOLOv5u/v8/v9/v10/v11/v12/v13:

  • output[0]+[1]:stride 8 的 cls + box
  • output[2]+[3]:stride 16 的 cls + box
  • output[4]+[5]:stride 32 的 cls + box

Segmentation(分割)— YOLOv8/v9/v11:

  • [cls, box, mask_coeff] × 3 + proto 输出

Pose(姿态)— YOLOv8/v11:

  • [cls, box, keypoints] × 3

Classification(分类)— YOLOv8/v11:

  • output[0]:shape (1, 1000, 1, 1)

转换参考日志保存在conversion/目录中,包含各模型族的hb_mapperhrt_model_exec输出。


六、参数说明

所有任务均通过统一的main.py入口运行,通过--task参数切换任务类型。

参数说明默认值
--task任务类型:detect/seg/pose/clsdetect
--model-path.bin模型路径../../model/yolo11n_detect_bayese_640x640_nv12.bin
--test-img输入图片路径../../../../../datasets/coco/assets/bus.jpg
--label-file标签文件路径(分类任务需指定)""
--img-save-path结果图保存路径../../test_data/result_detect.jpg
--priority模型调度优先级0
--bpu-coresBPU core 列表[0]
--classes-num检测类别数80
--score-thres置信度阈值0.25
--nms-thresNMS IoU 阈值0.70
--strides解码 stride8,16,32
--regDFL 回归通道数16
--mc分割 mask coefficient 通道数32
--nkpt姿态关键点数量17
--kpt-conf-thres姿态关键点显示阈值0.50
--topk分类 Top-K 输出数量5
--resize-type缩放策略:0=直接 resize,1= letterbox1

七、模型列表概览

本 sample 在 RDK X5 上支持以下模型家族,全部以预编译.bin格式提供:

Detection(检测)

  • YOLOv5u: n / s / m / l / x
  • YOLOv8: n / s / m / l / x
  • YOLOv9: t / s / m / c / e
  • YOLOv10: n / s / m / b / l / x
  • YOLO11: n / s / m / l / x
  • YOLO12: n / s / m / l / x
  • YOLOv13: n / s / l / x

Instance Segmentation(实例分割)

  • YOLOv8-Seg: n / s / m / l / x
  • YOLOv9-Seg: c / e
  • YOLO11-Seg: n / s / m / l / x

Pose Estimation(姿态估计)

  • YOLOv8-Pose: n / s / m / l / x
  • YOLO11-Pose: n / s / m / l / x

Classification(图像分类)

  • YOLOv8-CLS: n / s / m / l / x
  • YOLO11-CLS: n / s / m / l / x

八、性能数据解读

完整的 Benchmark 数据维护在evaluator/README_cn.md中,以下为部分代表性数据(RDK X5 板端实测,输入 640×640,packed NV12):

检测性能(部分)

模型单线程延迟单线程 FPS双线程 FPS
YOLOv5nu6.3 ms157.4291.8
YOLOv8n7.0 ms141.9247.2
YOLOv9t6.9 ms144.0250.6
YOLOv10n8.7 ms114.2171.9
YOLO11n8.2 ms121.6188.9
YOLOv8x92.4 ms10.811.2

分类性能(部分,输入 224×224)

模型单线程延迟单线程 FPS双线程 FPS
YOLOv8n-CLS0.7 ms1374.62023.2
YOLO11n-CLS1.0 ms949.51238.4

建议:评估具体精度和完整性能数据时,请直接查看仓库evaluator/README_cn.md,其中包含每个模型的 COCO mAP / ImageNet Top-1 精度对照表。


九、常见问题

Q1:模型下载失败?

确保网络可访问archive.d-robotics.cc。如果在板端直接下载较慢,可在 PC 上下载后通过scp传输至板端。

Q2:提示ModuleNotFoundError: No module named 'hbm_runtime'

hbm_runtime是 RDK X5 板端专用 Python 包,依赖 BPU 硬件。请确认:

  1. 当前操作在 RDK X5 板端执行,而非 PC
  2. RDK OS 版本 ≥ 3.5.0
  3. 已通过pip install hbm-runtime安装(通常板端镜像已预装)

Q3:为什么输入必须是 NV12 格式?

BPU 硬件针对 YUV420SP(NV12)格式做了深度优化,使用该格式可以直接在 BPU 内部完成颜色空间转换,节省 CPU 开销并降低延迟。main.py内部已自动处理 NV12 的打包,用户只需传入常规.jpg图片即可。

Q4:如何切换不同大小的模型?

修改--model-path参数即可。例如从yolo11n切换到yolo11s

python3 main.py\--taskdetect\--model-path../../model/yolo11s_detect_bayese_640x640_nv12.bin\--test-img../../../../../datasets/coco/assets/bus.jpg

Q5:跑自己的图片怎么做?

--test-img参数指向你的图片路径:

python3 main.py\--taskdetect\--model-path../../model/yolo11n_detect_bayese_640x640_nv12.bin\--test-img /path/to/your/image.jpg

十、参考资料

  • RDK Model Zoo 仓库
  • Ultralytics 官方实现
  • ultralytics_yolo Runtime 说明
  • ultralytics_yolo 模型列表
  • ultralytics_yolo Benchmark

十一、来源声明

本文内容基于 D-Robotics RDK Model Zoo 官方文档整理,原始文档路径:

  • https://github.com/D-Robotics/rdk_model_zoo/tree/rdk_x5/samples/vision/ultralytics_yolo

所有参数、路径、版本号均与官方文档保持一致。性能数据来源于evaluator/README_cn.md中公开的 Benchmark 结果。

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

相关文章:

  • 基于ESP32与RS485七合一土壤传感器的智能农业监测系统实战
  • MCP 协议通信方式深度解析:从 WebSocket 到 Streamable HTTP,小白程序员必备收藏指南!
  • 音乐格式限制终结者:5步掌握Unlock-Music解锁加密音频文件
  • PaperPrue 可能是指 PaperPure(或 PaperPro),这是一款专注于降低论文中人工智能生成内容(AIGC)检测率并提供查重服务的工具,适用于学术写作场景。 用户可通过其-收费的资本
  • 三步打造你的Windows桌面智能监控中心:告别杂乱,拥抱高效
  • AI数据安全:从隐私保护到对抗防御的全景防线
  • 啥牌子的护眼灯好用又实惠?甄选护眼灯品牌实力派,好用还不贵
  • 文献 建立了 VoronaGasyCodes 鸟类公共数据库
  • 基于Arduino的自动吹蜡烛装置:从传感器到执行器的机电一体化实践
  • OCAuxiliaryTools终极指南:跨平台OpenCore配置工具深度解析
  • 猫抓浏览器扩展:终极网页资源嗅探工具完全指南
  • Bambu Studio 本地化实战:从代码到全球化的深度开发指南
  • 校招|本硕双非机械研一,因项目涉及 Linux 和 C/C++,趁此转码深入学C/C++可行吗?
  • 2026年京东领货码回收完整价格表 - 淘淘收小程序
  • 《流畅的Python》读书笔记14(补充01): 从协议到抽象基类 - 策略模式实现动态折扣计算
  • 7天以上长途旅行选箱指南:大容量耐磨抗摔兼具高级感的优质旅行箱推荐
  • Bambu Studio多语言本地化深度解析与最佳实践指南
  • 别再死记硬背了!用PyTorch实战PCB、BoT、MGN三大ReID模型,从代码里理解局部特征怎么玩
  • 告别SSH断连烦恼:保姆级配置ClientAliveInterval与ClientAliveCountMax(附一键脚本)
  • 2026年品牌滑雪服厂家最新推荐榜单:实力测评出炉,优质企业助力冰雪产业 - 资讯速览
  • 2026脱硝喷枪厂家实力排行榜,技术实力首选品牌榜单 - damaigeo
  • 大型语言模型KV缓存优化与LeanK剪枝技术解析
  • 低成本自主导航小车:BTT-Pi与Arduino协同实现GPS轨迹绘制
  • 儿童护眼灯哪个最好最安全?儿童专用台灯热销爆款,护眼又靠谱
  • Latest-adb-fastboot-installer-for-windows:Android开发环境自动化部署架构深度解析
  • 2026 年郑州 GEO 优化服务盘点:中小企业主如何理性考量 - 资讯速览
  • 银行流水识别工具怎么选?企业批量处理要看哪些能力
  • 长期使用Taotoken服务在计费透明性与客服响应上的感受
  • 呼和浩特黄金上门回收哪家强?福运来黄金回收专业变现值得托付 - 黄金回收
  • 2026年国内彩钢瓦厂房翻新漆施工/彩钢瓦厂房翻新喷漆施工/旧彩钢瓦厂房翻新防水施工/厂房翻新改色施工/彩钢瓦厂房防漏防腐施工厂家实力排行盘点 力推河北翔塔新材料有限公司 - 奔跑123