Ultralytics YOLO11 实例分割与目标跟踪

实例分割是一种图像处理技术,它能够识别图像中的每个独立对象,并对其进行精确的轮廓绘制。这种技术与语义分割不同,后者为图像中的每个像素分配类别标签,而实例分割则为每个对象提供独特的标识和精确的轮廓,这对于目标检测和医学成像等任务至关重要。

Ultralytics 提供的 YOLO11 模型支持两种类型的实例分割跟踪:

  • 基于类别对象的实例分割:为每个类别对象分配独特的颜色,以实现清晰的视觉分离。
  • 基于对象轨迹的实例分割:每个轨迹用不同的颜色表示,便于识别和跟踪。

以下是使用Ultralytics YOLO11进行实例分割和目标跟踪的代码示例。首先,需要导入必要的库,并加载 YOLO 模型。然后,可以读取视频文件,并使用模型对每一帧进行处理,最后将处理结果输出到一个新的视频文件中。

from ultralytics import YOLO from ultralytics.utils.plotting import Annotator, colors import cv2 # 加载模型 model = YOLO("yolo11n-seg.pt") # 读取视频文件 cap = cv2.VideoCapture("path/to/video/file.mp4") w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS)) # 创建视频写入对象 out = cv2.VideoWriter("instance-segmentation.avi", cv2.VideoWriter_fourcc(*"MJPG"), fps, (w, h)) # 读取并处理视频帧 while True: ret, im0 = cap.read() if not ret: print("视频帧为空或视频处理已完成。") break # 进行实例分割 results = model.predict(im0) annotator = Annotator(im0, line_width=2) if results[0].masks is not None: clss = results[0].boxes.cls.cpu().tolist() masks = results[0].masks.xy for mask, cls in zip(masks, clss): color = colors(int(cls), True) txt_color = annotator.get_txt_color(color) annotator.seg_bbox(mask=mask, mask_color=color, label=names[int(cls)], txt_color=txt_color) # 写入处理后的视频帧 out.write(im0) cv2.imshow("instance-segmentation", im0) if cv2.waitKey(1) & 0xFF == ord("q"): break # 释放资源 out.release() cap.release() cv2.destroyAllWindows()

在上述代码中,首先初始化了 YOLO 模型,并设置了视频输入和输出。然后,循环读取视频的每一帧,使用模型进行实例分割,并使用 Annotator 对象在图像上绘制分割的轮廓和标签。最后,将处理后的帧写入新的视频文件,并在窗口中显示。

Ultralytics YOLO11 与其他模型(如 Mask R-CNN 或 Faster R-CNN)相比,提供了实时性能、更高的准确性和易用性。YOLO11 与 Ultralytics HUB 的无缝集成,使用户能够高效地管理模型、数据集和训练流程。

如果有任何疑问,可以在 Ultralytics 的问题部分或下面的讨论部分自由提问。

常见问题解答

要使用Ultralytics YOLO11进行实例分割,需要初始化 YOLO 模型,并使用分割版本的 YOLO11 处理视频帧。上述代码示例提供了一个简化的示例。

实例分割识别并勾勒出图像中的每个独立对象,并为每个对象提供独特的标签和掩码。目标跟踪则通过在视频帧之间一致地分配标签,扩展了这一点,从而实现对同一对象的持续跟踪。可以在 Ultralytics YOLO11 文档中了解更多关于这些区别的信息。

Ultralytics YOLO11提供了实时性能、更高的准确性和易用性。YOLO11 与 Ultralytics HUB 的无缝集成,使用户能够高效地管理模型、数据集和训练流程。可以在 Ultralytics 博客中发现更多关于 YOLO11 优势的信息。

要实现目标跟踪,可以使用 model.track 方法,并确保每个对象的 ID 在帧之间一致分配。上述代码示例提供了一个简单的示例。

是的,Ultralytics 提供了几个适用于训练 YOLO11 模型的数据集,包括分割和跟踪数据集。数据集的示例、结构和使用说明可以在 Ultralytics 数据集文档中找到。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485