1. 课程导论与目标设定:多目标跟踪(MOT)概述、SORT与DeepSORT的定位、课程所需知识储备与学习路径规划
1.1 什么是多目标跟踪?
多目标跟踪,简称 MOT。说白了,就是让计算机在一段视频里,同时盯住多个目标,并且给每个目标一个唯一的 ID。
你想想看,一个监控画面里同时走过 10 个人。计算机不仅要认出每个人,还要知道「这个人」从画面左边走到右边,中间被挡住了又出现,还是同一个人。这就是 MOT 要干的事。
我刚开始接触这个领域时,觉得这跟目标检测差不多嘛。后来踩了坑才明白——检测只是「找出来」,跟踪要解决的是「谁是谁」的问题。这个区别,决定了整个算法的设计思路。
1.2 为什么需要 SORT 和 DeepSORT?
多目标跟踪的方法很多。但 SORT 和 DeepSORT 是其中最经典、最实用的两个。
SORT 全称是 Simple Online and Realtime Tracking。你看这个名字——Simple、Online、Realtime。它追求的就是简单、在线、实时。我当年第一次跑通 SORT 时,心里就一个感觉:原来跟踪可以这么直接。
DeepSORT 则是 SORT 的升级版。它加入了深度学习提取的外观特征。说白了,就是让算法不光看目标的位置,还看目标「长什么样」。这样即使目标短暂消失再出现,也能认出它来。
我在项目中遇到过这样一个场景:一个行人被卡车挡住 3 秒钟,SORT 直接丢了 ID,DeepSORT 却能重新接上。嗯,这就是外观特征的威力。
核心定位:
- SORT:轻量、快速、适合实时场景
- DeepSORT:更鲁棒、适合遮挡频繁的复杂场景
- 两者都是「在线跟踪器」——只依赖当前帧和过去几帧的信息
1.3 课程需要哪些知识储备?
说实话,学这个课程不需要你什么都会。但有些基础,我建议你先准备好。
| 知识领域 | 需要掌握的程度 | 我的建议 |
|---|---|---|
| Python 基础 | 能写类、函数、列表推导式 | 如果你只会写 for 循环,先补一下 |
| NumPy 基础 | 数组操作、矩阵运算 | 这个必须会,SORT 全靠矩阵算 |
| 目标检测 | 了解 YOLO、Faster R-CNN 的基本原理 | 不需要会手写,但要知道检测框是什么 |
| 卡尔曼滤波 | 了解基本概念即可 | 课程里会详细讲,别怕 |
| 深度学习基础 | 了解 CNN、特征提取 | DeepSORT 部分会用到 |
我曾经带过一个学员,他连 NumPy 都不太熟,硬着头皮学 SORT。结果光看矩阵运算就花了三天。所以我的建议是:先把上面表格里的基础过一遍,再来啃这个课程,效率会高很多。
1.4 学习路径规划
这个课程一共 30 章。我把它分成了四个阶段,你跟着走就行。
- 基础篇(第 1-5 章):MOT 概念、评价指标、数据集。这部分是地基,别跳。
- SORT 核心篇(第 6-12 章):卡尔曼滤波、匈牙利算法、SORT 源码逐行解析。这是硬骨头,啃下来就成功了一半。
- DeepSORT 进阶篇(第 13-22 章):外观特征提取、级联匹配、ReID 网络。这部分我建议你边看代码边跑实验。
- 实战部署篇(第 23-30 章):模型优化、ONNX 导出、TensorRT 加速、工程落地。嗯,这才是真正能用到项目里的东西。
我的个人习惯:每学完一章,我都会在笔记本上画一个流程图。把输入、输出、关键步骤画清楚。这个方法我用了十年,比光看代码效果好得多。建议你也试试。
1.5 避坑指南
我曾经犯过一个低级错误:在 SORT 里直接用检测框的中心点做跟踪,忽略了框的大小变化。结果目标靠近摄像头时,ID 疯狂切换。后来才发现,卡尔曼滤波的状态向量里必须包含框的宽高信息。
所以这里给你三个提醒:
- 别迷信默认参数:SORT 的很多参数(比如 IoU 阈值)需要根据你的场景调
- 检测器质量决定上限:跟踪做得再好,检测器漏检了也没用
- ID Switch 不可避免:别追求 100% 的 ID 稳定,这不现实
1.6 本章小结
这一章我们聊了:
- 多目标跟踪到底在解决什么问题
- SORT 和 DeepSORT 各自的定位和适用场景
- 你需要提前准备的知识储备
- 30 章课程的学习路径规划
下一章,我们会直接进入 MOT 的评价指标。说白了,就是怎么衡量你的跟踪器到底好不好。这个很重要——没有标准,你都不知道自己做得对不对。
准备好了吗?我们开始吧。