使用 Ultralytics YOLO26 进行实例分割与追踪 🚀

什么是实例分割?

实例分割 是一种计算机视觉任务,涉及在像素级别识别并勾勒出图像中的各个对象。与仅按类别对像素进行分类的 语义分割 不同,实例分割会唯一标记并精确描绘每个对象实例,这对于需要详细空间理解的应用(如医学影像、自动驾驶和工业自动化)至关重要。

Ultralytics YOLO26 提供了强大的实例分割功能,能够在保持 YOLO 模型闻名的速度和效率的同时,实现精确的对象边界检测。

Ultralytics 软件包中提供两种类型的实例分割追踪:

  • 基于类对象的实例分割: 每个类别的对象都被分配一种独特的颜色,以便清晰地进行视觉区分。

  • 基于对象追踪的实例分割: 每个追踪路径由一种独特的颜色表示,有助于在视频帧中进行轻松的识别和追踪。



Watch: Instance Segmentation with Object Tracking using Ultralytics YOLO26

样本

实例分割实例分割 + 对象追踪
Ultralytics 实例分割Ultralytics 带有对象追踪的实例分割
Ultralytics 实例分割 😍Ultralytics 带有对象追踪的实例分割 🔥
使用 Ultralytics YOLO 进行实例分割
# Instance segmentation using Ultralytics YOLO26
yolo solutions isegment show=True

# Pass a source video
yolo solutions isegment source="path/to/video.mp4"

# Monitor the specific classes
yolo solutions isegment classes="[0, 5]"

InstanceSegmentation 参数

下表列出了 InstanceSegmentation 的参数:

参数类型默认值描述
modelstrNoneUltralytics YOLO 模型文件的路径。
regionlist'[(20, 400), (1260, 400)]'定义计数区域的点列表。

You can also take advantage of track arguments within the InstanceSegmentation solution:

参数类型默认值描述
trackerstr'botsort.yaml'指定使用的跟踪算法,例如 bytetrack.yamlbotsort.yaml
conffloat0.1设置检测的置信度阈值;较低的值允许跟踪更多对象,但可能会包含误报。
ioufloat0.7设置过滤重叠检测的 Intersection over Union (IoU) 阈值。
classeslistNone按类别索引过滤结果。例如,classes=[0, 2, 3] 将仅跟踪指定的类别。
verboseboolTrue控制跟踪结果的显示,提供跟踪对象的视觉输出。
devicestrNone指定推理设备(例如 cpucuda:00)。允许用户选择 CPU、特定的 GPU 或其他计算设备来执行模型。

此外,还提供了以下可视化参数:

参数类型默认值描述
showboolFalse如果设为 True,则在一个窗口中显示标注后的图像或视频。这对于开发或测试期间的即时视觉反馈非常有用。
line_widthint or NoneNone指定边界框的线宽。如果为 None,线宽将根据图像大小自动调整。提供视觉自定义以提高清晰度。
show_confboolTrue在标签旁边显示每个检测结果的置信度分数。让你可以洞察模型对每个检测的确定性。
show_labelsboolTrue在可视化输出中显示每个检测结果的标签。提供对检测对象的即时了解。

实例分割的应用

YOLO26 的实例分割在各行各业中都有许多实际应用:

废物管理与回收

YOLO26 可用于 废物管理设施 以识别和分类不同类型的材料。该模型能高精度地分割塑料垃圾、纸板、金属及其他可回收物,使自动化分拣系统能够更高效地处理垃圾。考虑到全球产生的 70 亿吨塑料垃圾中只有约 10% 被回收利用,这一点尤为重要。

自动驾驶车辆

自动驾驶汽车 中,实例分割有助于在像素级别识别并追踪行人、车辆、交通标志及其他道路元素。这种对环境的精确理解对于导航和安全决策至关重要。YOLO26 的实时性能使其成为这些时间敏感型应用的理想选择。

医学影像

实例分割可以识别并勾勒出医学扫描中的肿瘤、器官或细胞结构。YOLO26 精确描绘对象边界的能力使其在 医学诊断 和治疗规划方面极具价值。

建筑工地监控

在建筑工地上,实例分割可以追踪重型机械、工人及材料。这有助于通过监控设备位置和检测工人何时进入危险区域来确保安全,同时还能优化工作流程和资源分配。

注意

如有任何疑问,欢迎在 Ultralytics 问题板块 或下方提到的讨论区提问。

常见问题 (FAQ)

我该如何使用 Ultralytics YOLO26 进行实例分割?

要使用 Ultralytics YOLO26 进行实例分割,请初始化 YOLO 模型并使用 YOLO26 的分割版本,然后处理视频帧。这是一个简化的代码示例:

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

# Video writer
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
video_writer = cv2.VideoWriter("instance-segmentation.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Init InstanceSegmentation
isegment = solutions.InstanceSegmentation(
    show=True,  # display the output
    model="yolo26n-seg.pt",  # model="yolo26n-seg.pt" for object segmentation using YOLO26.
)

# Process video
while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or processing is complete.")
        break
    results = isegment(im0)
    video_writer.write(results.plot_im)

cap.release()
video_writer.release()
cv2.destroyAllWindows()

Ultralytics YOLO26 指南 中了解更多关于实例分割的信息。

Ultralytics YOLO26 中的实例分割与对象追踪有什么区别?

实例分割用于识别并勾勒图像中的各个对象,为每个对象提供唯一的标签和遮罩。对象追踪在此基础上通过在视频帧中为对象分配一致的 ID,从而促进对同一对象随时间的持续追踪。当两者结合使用时(如 YOLO26 的实现),你将获得强大的能力来分析视频中的对象移动和行为,同时保持精确的边界信息。

为什么我应该在实例分割和追踪任务中使用 Ultralytics YOLO26,而不是像 Mask R-CNN 或 Faster R-CNN 这样的其他模型?

与其他如 Mask R-CNN 或 Faster R-CNN 等模型相比,Ultralytics YOLO26 提供了实时性能、卓越的 准确性 以及易用性。YOLO26 在单次传递中处理图像(单阶段检测),使其在保持高精度的同时速度显著提升。它还提供了与 Ultralytics 平台 的无缝集成,允许用户高效地管理模型、数据集和训练流程。对于同时需要速度和准确性的应用,YOLO26 提供了最佳的平衡。

是否有 Ultralytics 提供的适用于训练 YOLO26 实例分割和追踪模型的数据集?

是的,Ultralytics 提供了多个适用于训练 YOLO26 实例分割模型的数据集,包括 COCO-SegCOCO8-Seg(一个用于快速测试的小型子集)、Package-SegCrack-Seg。这些数据集带有实例分割任务所需的像素级标注。对于更专业的应用,你也可以按照 Ultralytics 格式创建自定义数据集。完整的数据集信息和使用说明可以在 Ultralytics 数据集文档 中找到。

评论