多目标跟踪数据集概览#
多目标跟踪是视频分析的重要组成部分,它能够识别目标,并在视频帧之间为每个检测到的目标维护唯一 ID。Ultralytics YOLO 提供强大的跟踪能力,可用于监控、体育分析和交通监测等多个领域。
数据集格式#
跟踪模式不会训练跟踪器,也不需要专门针对跟踪器的数据集。使用该任务的标准数据集格式训练检测、分割、姿势或 OBB 模型,然后通过 model.track() 或 yolo track 使用生成的权重。所选跟踪器会在推理时关联模型在不同帧中的预测结果。
可用的跟踪器#
Ultralytics YOLO 支持以下跟踪算法:
- BoT-SORT - 使用
botsort.yaml启用此跟踪器 - ByteTrack - 使用
bytetrack.yaml启用此跟踪器 - OC-SORT - 使用
ocsort.yaml启用此跟踪器 - Deep OC-SORT - 使用
deepocsort.yaml启用此跟踪器 - FastTracker - 使用
fasttrack.yaml启用此跟踪器 - TrackTrack - 使用
tracktrack.yaml启用此跟踪器(默认)
用法#
示例
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
results = model.track(source="https://youtu.be/LNwODJXcvt4", conf=0.1, iou=0.7, show=True)在帧之间持续跟踪#
要在视频帧之间持续跟踪,可以使用 persist=True 参数:
示例
import cv2
from ultralytics import YOLO
# 加载 YOLO 模型
model = YOLO("yolo26n.pt")
# 打开视频文件
cap = cv2.VideoCapture("path/to/video.mp4")
while cap.isOpened():
success, frame = cap.read()
if success:
# 在帧之间持续跟踪
results = model.track(frame, persist=True)
# 可视化结果
annotated_frame = results[0].plot()
cv2.imshow("Tracking", annotated_frame)
if cv2.waitKey(1) & 0xFF == ord("q"):
break
else:
break
cap.release()
cv2.destroyAllWindows()常见问题#
要使用 Ultralytics YOLO 进行多目标跟踪,可以先参考提供的 Python 或 CLI 示例。下面介绍如何开始:
示例from ultralytics import YOLO model = YOLO("yolo26n.pt") # 加载 YOLO26 模型 results = model.track(source="https://youtu.be/LNwODJXcvt4", conf=0.1, iou=0.7, show=True)这些命令会加载 YOLO26 模型,并使用该模型跟踪给定视频源中的目标,同时设置特定的置信度(
conf)和交并比(iou)阈值。更多详情请参阅跟踪模式文档。可以。使用自定义数据集训练检测、分割、姿势或 OBB 模型,然后将模型权重传递给
model.track()。跟踪器会在推理过程中运行,不需要单独的训练数据。使用 Ultralytics YOLO 运行跟踪任务后,结果中会包含多个数据点,例如被跟踪目标的 ID、边界框和置信度分数。以下是这些结果的简要说明:
- 跟踪 ID:系统会为每个目标分配唯一 ID,以便在不同帧中跟踪该目标。
- 边界框:用于指示被跟踪目标在帧中的位置。
- 置信度分数:反映模型对检测到被跟踪目标的置信程度。
有关如何解读和可视化这些结果的详细指南,请参阅结果处理指南。
你可以创建修改后的跟踪器配置文件来自定义跟踪器。从 ultralytics/cfg/trackers 复制现有的跟踪器配置文件,根据需要修改参数,然后在运行跟踪器时指定该文件:
from ultralytics import YOLO model = YOLO("yolo26n.pt") results = model.track(source="video.mp4", tracker="custom_tracker.yaml")