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