使用 Ultralytics YOLO26 进行实例分割和跟踪#
什么是实例分割?#
实例分割是一种计算机视觉任务,用于在像素级别识别并勾勒图像中的单个对象。与仅按类别对像素进行分类的语义分割不同,实例分割会为每个对象实例赋予唯一标签并精确勾勒其边界,因此对于医学成像、自动驾驶和工业自动化等需要深入空间理解的应用至关重要。
Ultralytics YOLO26具备强大的实例分割能力,能够精确检测对象边界,同时保持 YOLO 模型一贯的速度和效率。
Ultralytics 软件包提供两种实例分割跟踪类型:
-
使用类别对象进行实例分割:每个类别对象都会被分配一种独特的颜色,以便清晰区分。
-
使用对象轨迹进行实例分割:每条轨迹都以不同的颜色表示,方便在视频帧中识别和跟踪对象。
观看: 使用 Ultralytics YOLO26 进行实例分割和目标跟踪
样本#
| 实例分割 | 实例分割 + 对象跟踪 |
|---|---|
![]() | ![]() |
| Ultralytics 实例分割 😍 | Ultralytics 实例分割与对象跟踪 🔥 |
使用 YOLO26 进行分割和跟踪#
InstanceSegmentation 解决方案会在每一帧上运行 YOLO26 分割模型,绘制各对象的掩码,并为每个实例单独着色,让你能够在视频中跟踪各个对象。加载 -seg 模型,然后使用 Python API 或 CLI 处理你的数据源。
# 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 参数表:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
model | str | None | Ultralytics YOLO 模型文件的路径。 |
line_width | int | 2 | 解决方案绘制的框、关键点和计数的线条粗细。 |
verbose | bool | True | 启用逐帧日志,记录输入形状、类别计数和处理速度。跟踪调用本身始终不会输出日志。 |
你也可以在 InstanceSegmentation 解决方案中使用 track 参数:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
tracker | str | 'tracktrack.yaml' | 指定要使用的跟踪算法。内置选项:botsort.yaml、bytetrack.yaml、ocsort.yaml、deepocsort.yaml、fasttrack.yaml、tracktrack.yaml。 |
conf | float | 0.25 | 设置检测的置信度阈值;较低的值允许跟踪更多物体,但可能会包含误检。 |
iou | float | 0.7 | 设置用于筛除重叠检测结果的交并比 (IoU) 阈值。 |
classes | list | None | 按类别索引筛选结果。例如,classes=[0, 2, 3] 只跟踪指定类别。 |
device | str | None | 指定推理设备(例如 cpu、cuda:0 或 0)。用户可以选择 CPU、特定 GPU 或其他计算设备来运行模型。 |
imgsz | int or tuple | 640 | 目标推理图像尺寸:正方形图像使用整数,或使用 (height, width) 对。图像尺寸会调整为模型步幅的整数倍。 |
max_det | int | 300 | 跟踪前每帧保留的最大检测数量,用于限制解决方案在密集场景中处理的物体数量。 |
quantize | int or str | None | 推理精度:对于 PyTorch 和 TorchScript 模型,使用 16 (FP16) 或 32/未设置 (FP32);其他格式则采用其模型文件和运行时选择的精度。替代已弃用的 half 标志。 |
此外,还可以使用以下可视化参数:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
show | bool | False | 如果 True,则在窗口中显示带标注的图像或视频。适用于在开发或测试期间即时查看结果。 |
show_conf | bool | True | 在每个检测结果的标签旁显示置信度分数,帮助了解模型对该检测结果的确信程度。 |
show_labels | bool | True | 在可视化输出中显示每个检测结果的标签,便于立即了解检测到的对象。 |
show_boxes | bool | True | 在检测到的对象周围绘制边界框,便于在图像或视频帧中直观识别和定位对象。 |
实例分割的应用#
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 数据集文档。

