【进迭时空 K1 MUSE Pi Pro】YOLO26 部署测试

原创2026-07-29 14:27:50浏览53
53
Star

【进迭时空 K1 MUSE Pi Pro】YOLO26 部署测试

本文介绍了进迭时空 K1 MUSE Pi Pro 开发板结合 OpenCV 和 Ultralytics 库实现 YOLO26 板端部署,并实现目标识别、姿态估计、图像分割、图像分类、旋转框检测的项目设计,包括环境部署、模型获取、关键代码、效果演示等。

项目介绍

  • 准备工作:OpenCV 安装、Ultralytics 软件包安装、YOLO26 预训练模型获取等;

  • YOLO26:目标检测、实例分割、深度估计、语义分割、图像分类、姿态估计、旋转目标检测等。

YOLO26

Ultralytics YOLO26 是一个统一的实时视觉模型系列,它引入了原生端到端推理、更轻量的检测头、更新的训练方案,以及针对检测、分割、姿态估计、分类和定向检测的特定任务头。

  • 在五个检测尺度上,YOLO26 在 COCO 上达到了 40.9-57.5 mAP,且 T4 TensorRT 延迟仅为 1.7-11.8 毫秒。

  • 与 YOLO11n 相比,YOLO26n 在 CPU ONNX 推理速度提升了高达 43% 。

详见: Ultralytics YOLO26 .

硬件连接

  • 使用 HDMI 数据线连接显示屏或 SSH 远程登录;

  • USB 接口连接鼠标键盘;

  • 连接 LAN 有线网或连接 Wi-Fi 无线网;

  • 使用 5V 直流电源 Type-C 供电;

若 CPU 温度过高,需安装散热片、风扇等主动制冷装置;

环境搭建

  • 终端执行如下指令,搭建虚拟环境并安装所需软件包

sudo apt update
sudo apt install python3-venv # 安装虚拟环境软件包
python3 -m venv .venv # 创建虚拟环境
pip config set global.extra-index-url https://git.spacemit.com/api/v4/projects/33/packages/pypi/simple # 更改pip镜像源
source .venv/bin/activate # 激活虚拟环境
pip install opencv-python # 安装 opencv
pip install pillow opencv-python numpy matplotlib tqdm requests psutil pyparsing
pip install torch torchvision ultralytics
  • 安装完成后,执行下列指令进行验证

python3 -c "import ultralytics, sys, torch; print('ultralytics', ultralytics.__version__, '| torch', torch.__version__, '| Python', sys.version.split()[0])"
  • 输出 ultralytics 版本号

模型获取

下载所需模型文件

wget https://github.com/ultralytics/assets/releases/download/v8.4.0/yolo26n.pt
wget https://github.com/ultralytics/assets/releases/download/v8.4.0/yolo26n-seg.pt
wget https://github.com/ultralytics/assets/releases/download/v8.4.0/yolo26n-cls.pt
wget https://github.com/ultralytics/assets/releases/download/v8.4.0/yolo26n-pose.pt
wget https://github.com/ultralytics/assets/releases/download/v8.4.0/yolo26n-obb.pt
wget https://github.com/ultralytics/assets/releases/download/v8.4.0/yolo26n-sem.pt
wget https://github.com/ultralytics/assets/releases/download/v8.4.0/yolo26n-depth.pt

将文件存放在 ./model 路径。

文件树

(.venv) ljl@ljl:~/ai_vision/yolo26$ tree
.
├── img
│   ├── bus.jpg
│   ├── ...
│   └── road.jpg
├── model
│   ├── yolo26n-cls.pt
│   ├── yolo26n-depth.pt
│   ├── yolo26n-obb.pt
│   ├── yolo26n-pose.pt
│   ├── yolo26n.pt
│   ├── yolo26n-seg.pt
│   └── yolo26n-sem.pt
├── or.py
├── depth.py
├── sem.py
└── test.py

流程图

目标检测

目标检测 (Detection) 是一项涉及识别图像或视频流中对象位置和类别的任务。

  • 目标检测器的输出是一组包围图像中对象的边界框,以及每个框的类别标签和置信度分数。

  • 当你需要在场景中识别感兴趣的对象,但不需要知道对象的精确位置或确切形状时,目标检测是一个很好的选择。

  • YOLO26 能够以高 准确率 和速度在单张图像或视频帧中检测多个物体,这使其成为 监控系统自动驾驶车辆 等实时应用的理想选择。

详见:目标检测 | Ultralytics .

代码

终端执行 touch or.py 创建文件,添加如下代码

import cv2
from ultralytics import YOLO

# 加载YOLO26模型
model = YOLO('./model/yolo26n.pt')

# 读取图片
img = cv2.imread('./img/bus.jpg')
# 增加图片读取异常判断,避免文件不存在黑屏崩溃
if img is None:
    print("错误:图片 ./img/road.jpg 读取失败,请检查路径/文件名")
else:
    # 推理:输入图片、分辨率640、置信度阈值0.25
    results = model(img, imgsz=640, conf=0.25)

    # 绘制检测框、类别、置信度
    annotated = results[0].plot()

    # OpenCV 弹窗展示结果
    cv2.namedWindow("YOLO26 Detection", cv2.WINDOW_NORMAL)
    cv2.imshow("YOLO26 Detection", annotated)
    print("弹窗已打开,按任意按键关闭窗口")
    # 等待按键输入
    cv2.waitKey(0)
    # 关闭窗口释放资源
    cv2.destroyAllWindows()

保存代码。

效果

  • 终端执行 python or.py 运行程序;

  • 弹窗显示结果;

实例分割

实例分割 (Segment) 比目标检测更进一步,它不仅能识别图像中的单个对象,还能将它们从图像的其余部分中分割出来。

  • 实例分割模型的输出是一组勾勒出图像中每个对象轮廓的掩码或轮廓,以及每个对象的类标签和置信度分数。当你不仅需要知道对象在图像中的位置,还需要知道它们的精确形状时,实例分割非常有用。

  • 图像分割通过为每个对象生成像素级掩码,将对象检测提升到了新的高度。这种精度对于 医学成像农业分析制造质量控制 等应用非常有用。

代码

终端执行 touch seg.py 创建文件,添加如下代码

import cv2
from ultralytics import YOLO

# 加载分割模型
model = YOLO("./model/yolo26n-seg.pt")
# 读取图片
img = cv2.imread("./img/laptop.jpg")

if img is None:
    print("图片文件不存在")
else:
    results = model(img, imgsz=640, conf=0.25)
    # 绘制原图+分割掩码+检测框
    show_img = results[0].plot()

    # 创建可缩放窗口
    cv2.namedWindow("YOLO Segmentation Result", cv2.WINDOW_NORMAL)
    cv2.imshow("YOLO Segmentation Result", show_img)
    print("窗口已打开,按任意按键关闭")
    cv2.waitKey(0)
    cv2.destroyAllWindows()

保存代码。

效果

  • 终端执行 python seg.py 运行程序;

  • 弹窗显示结果;

深度估计

单目深度估计 (Depth Estimation) 从单张 RGB 图像预测逐像素深度图。每个输出像素包含一个以米为单位的深度值,表示从相机到该表面点的估计距离。

  • 深度模型的输出是一个与输入图像对齐的形状为 (H, W) 的稠密浮点图。

  • 这种逐像素表示使得单目深度估计适合用于 3D 场景重建、机器人导航、AR/VR 内容创作以及任何需要从单相机获取空间布局的应用。

代码

终端执行 touch depth.py 创建文件,添加如下代码

import cv2
from ultralytics import YOLO

# 加载模型:yolo26n-depth.pt
model = YOLO('./model/yolo26n-depth.pt')
img = cv2.imread('./img/road.jpg')

if img is None:
    print("图片读取失败,请检查路径")
else:
    # 深度模型推理参数通用,conf/imgsz 正常使用
    results = model(img, imgsz=640, conf=0.25)   
    annotated = results[0].plot()  # 自动绘制检测框 + 深度热力上色

    cv2.namedWindow("YOLO Depth Detection", cv2.WINDOW_NORMAL)
    cv2.imshow("YOLO Depth Detection", annotated)   
    cv2.waitKey(0)
    cv2.destroyAllWindows()

保存代码。

效果

  • 终端执行 python depth.py 运行程序;

  • 弹窗显示结果;

语义分割

语义分割 (Semantic Segmentation) 为图像中的每个像素分配一个类标签,从而生成覆盖整个场景的密集类映射。

  • 与区分单个对象的 实例分割 不同,语义分割将同一类的所有像素组合在一起,而不管存在多少个不同的对象。

  • 语义分割模型的输出是一个单一的宽高类映射,其中每个像素值对应一个预测的类 ID。

  • 语义分割非常适合场景解析任务,如 自动驾驶场景解析 和土地覆盖映射,在这些应用中,理解完整的空间布局比识别单个物体更为重要。

代码

终端执行 touch sem.py 创建文件,添加如下代码

import cv2
from ultralytics import YOLO

# 加载模型文件 yolo26n-sem.pt
model = YOLO('./model/yolo26n-sem.pt')
img = cv2.imread('./img/desktop.jpg')

if img is None:
    print("图片路径错误")
else:
    # 语义分割推理通用参数
    results = model(img, imgsz=640, conf=0.25)
    # 自动绘制:原图+分割掩码、类别标签
    seg_img = results[0].plot()

    # 可自由缩放窗口
    cv2.namedWindow("YOLO Semantic Segmentation", cv2.WINDOW_NORMAL)
    cv2.imshow("YOLO Semantic Segmentation", seg_img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

保存代码。

效果

  • 终端执行 python sem.py 运行程序;

  • 弹窗显示结果;

图像分类

图像分类 (Classification) 是所支持的任务中最简单的一种,它涉及将整张图像分类为预定义类别集合中的某一个类别。

  • 图像分类器的输出是一个单一的类别标签和一个置信度分数。当你只需要知道图像属于哪个类别,而不需要知道该类别的对象位于何处或其确切形状时,图像分类非常有用。

  • 图像分类涉及根据内容对整个图像进行归类。此任务对于电子商务中的 产品分类内容审核野生动物监测 等应用至关重要。

代码

终端执行 touch cls.py 创建文件,添加如下代码

import cv2
from ultralytics import YOLO

model = YOLO('./model/yolo26n-cls.pt') # 加载模型
img = cv2.imread('./img/pc.jpg')       # 加载图片

results = model(img, imgsz=640, conf=0.25)   # 返回 Boxes
annotated = results[0].plot(font_size=30)    # 画框和标签

cv2.imshow("YOLO-Classify", annotated)   # 弹窗显示
cv2.waitKey(0)
cv2.destroyAllWindows()

保存代码。

效果

  • 终端执行 python cls.py 运行程序;

  • 弹窗显示结果;

姿态估计

姿态估计 (Pose) 是一项涉及识别图像中特定点(通常称为关键点)位置的任务。关键点可以表示对象的各个部分,例如关节、地标或其他显著特征。关键点的位置通常表示为一组 2D [x, y] 坐标,并可选择包含一个可见性标志 [x, y, visible]

  • 姿态估计模型的输出是一组代表图像中对象关键点的点,通常还包含每个点的置信度分数。当你需要识别场景中对象的特定部分及其相对于彼此的位置时,姿态估计是一个很好的选择。

  • YOLO26 在关键点检测方面表现出色,具有高精度和高速度,使其在 健身应用体育分析人机交互 中极具价值。

代码

终端执行 touch pos.py 创建文件,添加如下代码

import cv2
from ultralytics import YOLO

# 加载模型
model = YOLO("./model/yolo26n-pose.pt")
# 读取图片
img = cv2.imread("./img/dance.jpg")

if img is None:
    print("图片路径有误")
else:
    # 姿态推理
    results = model(img, imgsz=640, conf=0.25)
    # 自动绘制人体框+全身骨骼关键点连线
    render_img = results[0].plot()

    # 缩放窗口
    cv2.namedWindow("YOLO Pose 人体关键点检测", cv2.WINDOW_NORMAL)
    cv2.imshow("YOLO Pose 人体关键点检测", render_img)
    print("弹窗已打开,按任意键盘按键关闭窗口")
    cv2.waitKey(0)
    cv2.destroyAllWindows()

保存代码。

效果

  • 终端执行 python pos.py 运行程序;

  • 弹窗显示结果;

旋转目标检测

旋转目标检测 (OBB) 比标准目标检测更进一步,它引入了一个额外的角度,以便更精确地定位图像中的物体。

  • 旋转目标检测器的输出是一组旋转的边框,它们能够精确地包围图像中的物体,并附带每个边框的类别标签和置信度分数。当物体以各种角度出现时,旋转边框特别有用,因为传统的轴对齐边框可能会包含不必要的背景信息。

  • 此功能对于物体以各种角度出现的 航空影像分析文档处理工业应用 尤为重要。YOLO26 为在多种场景下检测旋转对象提供了高精度和高速度。

代码

终端执行 touch obb.py 创建文件,添加如下代码

import cv2
from ultralytics import YOLO

# 加载模型
model = YOLO("./model/yolo26n-obb.pt")
# 读取图片
img = cv2.imread("./img/boats.jpg")

if img is None:
    print("图片路径错误")
else:
    # 推理
    results = model(img, imgsz=640, conf=0.25)
    # 绘制旋转矩形框、类别、置信度
    show_img = results[0].plot()

    # 缩放窗口
    cv2.namedWindow("YOLO OBB 旋转框检测", cv2.WINDOW_NORMAL)
    cv2.imshow("YOLO OBB 旋转框检测", show_img)
    print("弹窗打开,按任意按键关闭窗口")
    cv2.waitKey(0)
    cv2.destroyAllWindows()

保存代码。

效果

  • 终端执行 python obb.py 运行程序;

  • 弹窗显示结果;

总结

本文介绍了进迭时空 K1 MUSE Pi Pro 开发板结合 OpenCV 和 Ultralytics 库实现 YOLO26 板端部署,并实现目标识别、姿态估计、图像分割、图像分类、旋转框检测的项目设计,包括环境部署、模型获取、关键代码、效果演示等,为相关产品在边缘 AI 领域的快速开发和应用设计提供了参考。