Multi-Object Tracking (MOT)
多目标跟踪 (MOT) 会跟踪视频中的每个对象,并在不同帧之间为每个对象保留一个 ID。了解跟踪器如何关联检测结果、相关指标和代码。
多目标跟踪 (MOT) 是计算机视觉中的一项任务,要求在视频中同时跟踪每个感兴趣的物体,为每个物体分配一个持久 ID,使其在各帧中的位置构成一条轨迹。物体数量未知且不断变化,因为行人或车辆会进入、离开、交错而过,并互相遮挡后消失;因此,跟踪器必须在每一帧中判断哪些检测结果延续现有轨迹、哪些开始新轨迹,以及哪些轨迹已经结束。MOT 是最常见的目标跟踪形式;单目标跟踪 (SOT) 则跟踪在第一帧中选定的一个目标,不受其类别限制。
多目标跟踪的工作原理#
大多数 MOT 系统采用检测式跟踪:一个目标检测模型在每一帧中查找物体,跟踪器则将这些检测结果与已有轨迹关联起来。跟踪器通常使用卡尔曼滤波器等运动模型预测每条轨迹的位置,根据框重叠度(IoU)、运动信息,以及可选的目标重识别 (Re-ID)模型生成的外观嵌入,构建预测轨迹与新检测结果之间的代价矩阵,然后使用匈牙利算法将匹配问题作为线性分配问题求解。匹配成功的轨迹会保留其 ID;置信度足够高但未匹配的检测结果会开始新轨迹;未匹配的轨迹则会在若干帧内标记为“丢失”,以便在遮挡后恢复。
人群场景会增加关联步骤的难度,因为被部分遮挡的人会产生低置信度检测结果,简单的阈值会将这些结果丢弃。ByteTrack会保留这些结果,以便进行第二轮匹配:
跟踪器设计#
- SORT及其后续方法:SORT(2016 年)结合了卡尔曼滤波器、IoU 代价和匈牙利算法。DeepSORT 增加了外观特征,以便在遮挡后恢复身份;ByteTrack 增加了低置信度匹配环节;OC-SORT 提高了运动估计在遮挡情况下的稳健性;BoT-SORT 则为移动摄像头增加了相机运动补偿。
- 联合检测与嵌入 (FairMOT):FairMOT 训练一个网络同时输出检测结果和 Re-ID 嵌入,因此无需额外模型即可获得外观特征。
- 端到端跟踪 (MOTR):MOTR 和 TrackFormer 将 DETR Transformer 扩展为使用跟踪查询,让每个物体的身份在帧与帧之间延续,从而在训练期间学习关联关系。
Ultralytics YOLO 的跟踪模式会对任何 YOLO26检测、分割、姿态或定向框模型执行基于检测的跟踪,并通过 tracker 参数从六种内置跟踪器中选择:TrackTrack(默认)、BoT-SORT、ByteTrack、OC-SORT、Deep OC-SORT 和 FastTracker。此示例会跟踪短片中的人物,并统计每个 ID 持续出现的帧数:
from collections import Counter
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
video = "https://github.com/ultralytics/assets/releases/download/v0.0.0/decelera_portrait_min.mov"
# 跟踪行人(COCO 类别 0),并统计每个跟踪 ID 出现的帧数
frames_per_id = Counter()
for result in model.track(video, stream=True, classes=[0]):
if result.boxes.is_track:
frames_per_id.update(result.boxes.id.int().tolist())
# 最长的五条轨迹,格式为(跟踪 ID,帧数)
print(frames_per_id.most_common(5))每一对数值分别代表一个跟踪 ID 和该 ID 持续存在的帧数,因此持续时间较长的 ID 表示跟踪器在许多帧中持续跟踪同一个人。
衡量跟踪质量#
MOT 的评估会使用 基准测试 等,例如用于密集人群场景的 MOT17、MOT20,以及 DanceTrack;DanceTrack 中的舞者外观相似,动作难以预测。主要有三种指标:
- MOTA:用漏检物体数、误报数和 ID 切换次数之和除以真实物体数,再用 1 减去该值,因此它主要受检测质量影响。
- IDF1:正确识别的检测结果的 F1 分数,用于衡量每个真实物体保持同一 ID 的一致性。
- HOTA:检测准确率与关联准确率的几何平均值,对发现物体和关联物体给予同等权重。
挑战#
- 遮挡:物体被遮挡许多帧后可能会以新 ID 重新出现,除非运动预测或外观匹配能够恢复其身份。
- 人群和相似外观:在人群密集的场景或穿着队服的运动员中,IoU 和外观代价容易产生歧义,导致 ID 互换。
- 相机运动:平移或振动的摄像头会同时移动所有框;如果跟踪器不进行补偿,恒定速度运动模型就会失效。
- 实时性能预算:检测、关联和任何 Re-ID 模型都要占用每帧的时间预算;单独的 Re-ID 模型还需要为每个检测到的物体额外运行一次网络。










