Ultralytics YOLO27:
Get Started

使用 Ultralytics YOLO26 进行实例分割和跟踪#

什么是实例分割?#

实例分割是一种计算机视觉任务,用于在像素级别识别并勾勒图像中的单个对象。与仅按类别对像素进行分类的语义分割不同,实例分割会为每个对象实例赋予唯一标签并精确勾勒其边界,因此对于医学成像、自动驾驶和工业自动化等需要深入空间理解的应用至关重要。

Ultralytics YOLO26具备强大的实例分割能力,能够精确检测对象边界,同时保持 YOLO 模型一贯的速度和效率。

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

  • 使用类别对象进行实例分割:每个类别对象都会被分配一种独特的颜色,以便清晰区分。

  • 使用对象轨迹进行实例分割:每条轨迹都以不同的颜色表示,方便在视频帧中识别和跟踪对象。



观看: 使用 Ultralytics YOLO26 进行实例分割和目标跟踪

样本#

实例分割实例分割 + 对象跟踪
Ultralytics 实例分割Ultralytics 实例分割与对象跟踪
Ultralytics 实例分割 😍Ultralytics 实例分割与对象跟踪 🔥

使用 YOLO26 进行分割和跟踪#

InstanceSegmentation 解决方案会在每一帧上运行 YOLO26 分割模型,绘制各对象的掩码,并为每个实例单独着色,让你能够在视频中跟踪各个对象。加载 -seg 模型,然后使用 Python API 或 CLI 处理你的数据源。

使用 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 模型文件的路径。
line_widthint2解决方案绘制的框、关键点和计数的线条粗细。
verboseboolTrue启用逐帧日志,记录输入形状、类别计数和处理速度。跟踪调用本身始终不会输出日志。

你也可以在 InstanceSegmentation 解决方案中使用 track 参数:

参数类型默认值说明
trackerstr'tracktrack.yaml'指定要使用的跟踪算法。内置选项:botsort.yaml、bytetrack.yaml、ocsort.yaml、deepocsort.yaml、fasttrack.yaml、tracktrack.yaml。
conffloat0.25设置检测的置信度阈值;较低的值允许跟踪更多物体,但可能会包含误检。
ioufloat0.7设置用于筛除重叠检测结果的交并比 (IoU) 阈值。
classeslistNone按类别索引筛选结果。例如,classes=[0, 2, 3] 只跟踪指定类别。
devicestrNone指定推理设备(例如 cpu、cuda:0 或 0)。用户可以选择 CPU、特定 GPU 或其他计算设备来运行模型。
imgszint or tuple640目标推理图像尺寸:正方形图像使用整数,或使用 (height, width) 对。图像尺寸会调整为模型步幅的整数倍。
max_detint300跟踪前每帧保留的最大检测数量,用于限制解决方案在密集场景中处理的物体数量。
quantizeint or strNone推理精度:对于 PyTorch 和 TorchScript 模型,使用 16 (FP16) 或 32/未设置 (FP32);其他格式则采用其模型文件和运行时选择的精度。替代已弃用的 half 标志。

此外,还可以使用以下可视化参数:

参数类型默认值说明
showboolFalse如果 True,则在窗口中显示带标注的图像或视频。适用于在开发或测试期间即时查看结果。
show_confboolTrue在每个检测结果的标签旁显示置信度分数,帮助了解模型对该检测结果的确信程度。
show_labelsboolTrue在可视化输出中显示每个检测结果的标签,便于立即了解检测到的对象。
show_boxesboolTrue在检测到的对象周围绘制边界框,便于在图像或视频帧中直观识别和定位对象。

实例分割的应用#

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

废弃物管理与回收#

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

自动驾驶汽车#

在自动驾驶汽车中,实例分割有助于在像素级别识别和跟踪行人、车辆、交通标志及其他道路元素。要做出导航和安全决策,精确理解周围环境至关重要。YOLO26 的实时性能使其非常适合这类对时效性要求较高的应用。

医学成像#

实例分割可在医学扫描图像中识别并勾勒肿瘤、器官或细胞结构。YOLO26 能够精确勾勒对象边界,因此可用于医学诊断和治疗规划。

建筑工地监控#

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

常见问题#

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

    import cv2
    
    from ultralytics import solutions
    
    cap = cv2.VideoCapture("path/to/video.mp4")
    assert cap.isOpened(), "Error reading video file"
    
    # 视频写入器
    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))
    
    # 初始化实例分割
    isegment = solutions.InstanceSegmentation(
        show=True,  # 显示输出
        model="yolo26n-seg.pt",  # model="yolo26n-seg.pt" 用于使用 YOLO26 进行对象分割。
    )
    
    # 处理视频
    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 指南中了解有关实例分割的更多信息。

  • 实例分割会识别并勾勒图像中的各个对象,为每个对象赋予唯一标签和掩码。对象跟踪则进一步为视频帧中的对象分配一致的 ID,从而持续跟踪同一对象随时间的变化。结合使用时,例如 YOLO26 的实现,你可以在保留精确边界信息的同时,强大地分析视频中对象的移动和行为。

  • 与 Mask R-CNN 或 Faster R-CNN 等其他模型相比,Ultralytics YOLO26 具有实时性能、更高的准确率并且易于使用。YOLO26 采用单次处理图像的方式(单阶段检测),在保持高精度的同时显著提升速度。它还与 Ultralytics Platform 无缝集成,方便用户高效管理模型、数据集和训练流程。对于同时要求速度和准确率的应用,YOLO26 能够提供理想的平衡。

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

评论