多目标跟踪(Multi-Object Tracking,MOT)是计算机视觉中的一个核心任务,目标是在视频序列中同时检测、跟踪多个目标(如人、车辆、动物等),并为每个目标分配一个持续不变的ID,保持其轨迹连贯。
一、基本流程
视频帧序列 → 目标检测 → 目标匹配/关联 → 分配/更新轨迹ID → 输出跟踪结果
具体流程如下:
-
目标检测(Object Detection)
每帧图像检测出所有目标框(bounding boxes);常用模型:YOLOv5/v8、Faster-RCNN、SSD、Mask-RCNN -
目标关联(Data Association)
将当前帧检测到的目标与前一帧中已跟踪的目标进行匹配;使用距离、特征相似性、IoU等策略 -
轨迹维护(Track Management)
分配ID、新增轨迹、丢失目标删除ID
二、常用多目标跟踪算法分类
1. 基于检测器和关联器(Tracking-by-Detection)
大多数现代方法采用该策略。
代表算法:
算法 | 特点 |
---|---|
SORT | 基于卡尔曼滤波 + IoU 匹配,快速、简单 |
DeepSORT | SORT + 外观特征(CNN),更鲁棒 |
ByteTrack | 弱检测也能有效关联,效果突出 |
StrongSORT | DeepSORT 改进版,更强外观建模 |
FairMOT | 检测和 ReID 同时训练,端到端 |
2. 基于端到端深度学习(Detection-Free)
模型 | 特点 |
---|---|
CenterTrack | 用中心点预测+offset建模运动 |
TrackFormer | 使用 Transformer 建模目标间关系 |
TransTrack | 用 query 跟踪目标,类似 DETR |
三、DeepSORT 结构简要说明
YOLOv5 → 检测框 → 提取外观特征(CNN) → 卡尔曼滤波预测 → 匹配→ ID更新
数据关联:
-
用马氏距离匹配轨迹预测位置
-
若有 ReID 外观特征,再用 cosine 距离辅助匹配
四、实用代码示例:YOLOv5 + DeepSORT
以视频为输入,实现行人跟踪:
from deep_sort_realtime.deepsort_tracker import DeepSort
import cv2
import torch
# 初始化检测器(YOLO)
model = torch.hub.load('ultralytics/yolov5', 'yolov5s', pretrained=True)
model.classes = [0] # 只检测人类(COCO class 0)
# 初始化 DeepSORT
tracker = DeepSort(max_age=30)
# 打开视频
cap = cv2.VideoCapture("people.mp4")
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
results = model(frame)
detections = results.xyxy[0].cpu().numpy()
tracks = []
for *xyxy, conf, cls in detections:
x1, y1, x2, y2 = map(int, xyxy)
tracks.append(([x1, y1, x2 - x1, y2 - y1], conf, 'person'))
tracked_objects = tracker.update_tracks(tracks, frame=frame)
for t in tracked_objects:
if not t.is_confirmed():
continue
x, y, w, h = map(int, t.to_ltrb())
id = t.track_id
cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)
cv2.putText(frame, f"ID {id}", (x, y - 10),
cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 1)
cv2.imshow("Tracking", frame)
if cv2.waitKey(1) & 0xFF == ord("q"):
break
cap.release()
cv2.destroyAllWindows()
五、评估指标
指标 | 含义 |
---|---|
MOTA(多目标准确率) | 综合错误,包括漏检、误检、ID切换 |
IDF1 | ID 匹配的 F1 分数,衡量一致性 |
HOTA | 综合精度与关联质量 |
FPS | 跟踪速度 |
六、常用数据集
-
MOT17 / MOT20:城市街景多行人跟踪
-
HiEve / DanceTrack:人群或群体跟踪
-
UA-DETRAC:车辆多目标跟踪
七、扩展应用
-
行人重识别(ReID)
-
行为识别 + 跟踪
-
交通流分析
-
安全监控系统