一句话定义:目标跟踪(Object Tracking)是指在视频序列中,在首帧(或任意一帧)由人划出或由画面里的检测器给出某个目标后,让算法在后续每一帧里持续定位这个目标,并且保证“认的是同一个”。
它到底在解决什么
很多人以为跟踪就是“每帧跑一遍目标检测”。其实不一样。检测器每帧独立工作,它对“这一帧里有没有人”负责,但对“这一帧的人是不是上一帧那个人”完全不负责。跟踪要额外做一件事:数据关联(data association),把当前帧的框和上一帧的身份对应起来。
打个比方:你在商场里盯住穿红衣服的朋友。人挤人、他一会儿被货架挡住、一会儿背对着你,你不会每秒重新问“这层楼有几个红衣服的人”,而是带着“他刚才在哪个方向、走多快、大概多大个”去比对候选,判断哪个是同一个。这就是跟踪:记忆 + 预测 + 匹配。
技术上的两大流派
按目标数量分,有单目标跟踪(Single Object Tracking,SOT)和多目标跟踪(Multi-Object Tracking,MOT)。
- SOT:框只给一个,重点在“跟住”。主流做法是判别式与孪生网络(Siamese network)思路,把模板帧和当前帧做特征匹配,找响应最大的位置;早期有相关滤波(correlation filter)方法。
- MOT:重点在“数清楚 + 分得清”。今天工程上最常见的是检测跟踪范式(tracking-by-detection):先用检测器(detector)找出所有目标,再用运动模型(如卡尔曼滤波 Kalman filter,配合匈牙利算法做匹配)和外观特征(ReID 嵌入)决定“谁是谁”。所以 MOT 的质量上限很大程度由检测器决定,跟踪器本身往往很轻量。
和相邻概念的区别
| 概念 | 处理单位 | 是否有跨帧身份 |
|---|---|---|
| 图像分类(classification) | 一张图 | 无 |
| 目标检测(detection) | 一帧,多个框 | 无 |
| 目标跟踪(tracking) | 一段视频 | 有,且要求前后一致 |
| 重识别(Re-Identification,ReID) | 跨摄像头或跨时段的图库检索 | 有,通常作为跟踪的组件 |
| 视频目标分割(VOS) | 逐像素 | 有,比框更精细 |
所以一句话区分:检测回答“在哪”,ReID 回答“是不是他”,跟踪回答“他一直是什么状态、去了哪”。
难点与易踩的坑
最常见的失败不是丢失目标,而是 ID 切换(ID switch):两个相似的人交叉走过,身份互换。遮挡、尺度剧烈变化、快速运动而导致的运动模糊、目标出画再回来、背景里有长得很像的干扰物,都会显著增加 ID 切换的发生概率。评估跟踪器时,MOTA、IDF1、HOTA 等指标都在这份“身份一致性”上做文章(具体口径以各数据集官方页面为准)。
对从业者的实际意义
如果你在做视频类产品,一个朴素但有效的经验是:不要每帧都跑全量高精度检测。用检测器隔几帧校正一次,中间由跟踪器做低成本外推,算力能省下不少,对于视频监控、自动驾驶感知、体育赛事分析、细胞显微成像、AR 这些场景都是常用套路。选型时先想清楚你要的是“单目标钉死”(选 SOT)还是“全场每个人各给一个稳定编号”(选 MOT),两者的评价方式和实现复杂度差得很远。
