多目标跟踪
此目录提供了构建和推断多目标跟踪系统的示例和最佳实践。我们的目标是使用户能够轻松地使用自己的数据集并训练出高精度的跟踪模型。虽然有许多开源跟踪器可用,但我们已将 FairMOT 跟踪器集成到此存储库中。FairMOT 算法在最近的 MOT 基准测试挑战中表现出具有竞争力的跟踪性能,同时还具有可观的推理速度。
设置
由于 FairMOT 存储库引入的限制,此文件夹中的跟踪示例只能在 Linux 计算目标上运行。
在运行提供的笔记本之前,需要在 cv
conda 环境中安装以下库
activate cv
conda install -c conda-forge opencv yacs lap progress
pip install cython_bbox motmetrics
此外,FairMOT 的 DCNv2 库需要通过此步骤进行编译
cd utils_cv/tracking/references/fairmot/models/networks/DCNv2
sh make.sh
为什么选择 FairMOT?
FairMOT 是一个 开源、一阶段在线跟踪算法,在快速推理速度下,在 最近的 MOT 基准测试挑战中表现出具有竞争力的性能。
典型的跟踪算法在不同的连续步骤中处理检测和特征提取过程。最近的研究——(Voigtlaender 等,2019)、(Wang 等,2019)、(Zhang 等,2020)——已转向将检测和特征嵌入过程结合起来,使其在共享模型(单个网络)中学习,特别是当两个步骤都涉及深度学习模型时。这种框架被称为单阶段或一阶段,并已在最近的高性能模型中流行起来,例如 FairMOT (Zhang 等,2020)、JDE (Wang 等,2019) 和 TrackRCNN (Voigtlaender 等,2019)。此类单阶段模型比典型的跟踪-检测模型更高效,并且由于检测和特征嵌入的单个网络表示共享计算,因此显示出更快的推理速度。在 MOT16 挑战数据集上,FAIRMOT 和 JDE 分别实现了 25.8 帧/秒 (fps) 和 18.5 fps,而 DeepSORT_2(一个跟踪-检测跟踪器)实现了 17.4 fps。
如下表所示,与标准 MOT 跟踪器相比,FairMOT 模型具有更高的跟踪性能(有关性能指标的更多详细信息,请参阅下文)。FairMOT 所基于的 JDE 模型的 ID 切换次数要差得多 (Zhang 等,2020)。JDE 模型使用典型的基于锚点的对象检测器网络进行特征嵌入,并使用下采样特征图。这导致锚点与对象中心之间存在错位,从而导致重新识别问题。FairMOT 通过估计对象中心而不是锚点、使用更高分辨率的特征图进行对象检测和特征嵌入,以及通过聚合高层和低层特征来处理不同大小对象的尺度变化,从而解决了这些问题。
技术
由于其在自动驾驶、交通监控等方面的应用,多目标跟踪 (MOT) 是计算机视觉领域一个流行且不断增长的研究领域。MOT 以目标检测技术为基础,用于在动态场景中随时间检测和跟踪目标。正确推断连续图像帧中的目标轨迹仍然具有挑战性。例如,遮挡可能导致目标数量和外观发生变化,从而使 MOT 算法复杂化。与旨在在目标周围输出矩形边界框的目标检测算法相比,MOT 算法还为每个框关联一个 ID 号,以在图像帧中识别该特定目标。
如下图所示 (Ciaparrone, 2019),典型的多目标跟踪算法执行部分或全部以下步骤
- 检测:给定输入的原始图像帧(步骤 1),检测器将每个图像帧中的对象识别为边界框(步骤 2)。
- 特征提取/运动预测:对于每个检测到的对象,提取视觉外观和运动特征(步骤 3)。偶尔还会添加运动预测器(例如卡尔曼滤波器)来预测每个跟踪目标的下一个位置。
- 亲和力:特征和运动预测用于计算成对检测和/或轨迹之间的相似性/距离得分,或检测属于给定目标或轨迹的概率(步骤 4)。
- 关联:根据这些得分/概率,为每个检测到的对象分配一个特定的数字 ID,以便在连续图像帧中对其进行跟踪(步骤 5)。
Notebook
我们提供了几个笔记本,展示了如何设计和评估多目标跟踪算法
Notebook 名称 | 描述 |
---|---|
01_training_introduction.ipynb | 解释模型训练、推理和评估的基本概念的笔记本,使用典型的跟踪性能指标。 |
02_mot_challenge.ipynb | 在常用 MOT Challenge 数据集上运行模型推理的笔记本。 |
常见问题
有关常见问题的答案,例如“该技术如何工作?”或“需要什么数据格式?”,请参阅此文件夹中的 常见问题解答。有关一般性问题,例如“我需要多少训练示例?”或“如何在训练期间监控 GPU 使用情况?”,请参阅分类文件夹中的 FAQ.md。
贡献指南
请参阅根文件夹中的贡献指南。