这篇论文是我觉得目前在多目标跟踪领域效果最好的,能够有SOTA级MOTA以及很高的推理速度,最快能够达到60FPS.
解决的核心问题:如何在匹配过程中充分利用从高分到低分的检测框
具体思路:保留了几乎所有的检测框,并将它们分为高分检测框和低分检测框。我们首先将高分检测框与tracklet相关联。有些轨迹无法匹配,因为它们与高分检测框不匹配,这通常发生在发生遮挡、运动模糊或大小变化时。然后,将低分数检测框和这些不匹配的轨迹关联起来,以恢复低分数检测框中的对象,同时过滤掉背景。
如上图所示,其中图a列出了每一帧中的所有检测框(即不使用阈值过滤),但是这样会发生误检;图b仅列出了高分检测框(使用阈值过滤),所以当目标发生遮挡的时候会丢失其轨迹,容易发生ID切换;对于图c,在跟踪过程中,使用卡尔曼滤波预测下一帧的轨迹,并且保留下一帧的低分检测框,因为它可能与预测的轨迹相匹配,从而不丢失目标。
算法流程
- 输入是一段视频序列及目标检测器Det,并设置检测阈值q,然后依次遍历每个帧,使用检测器检测,是得出的预测框及分数的集合。
- 根据检测阈值q将划分为高分检测框和低分检测框。
- 对上一帧的轨迹集合T采用卡尔曼滤波来预测T中每个轨迹在当前帧中的位置。
- 在高分检测框与T(包括丢失的轨迹)执行第一次关联。可以通过IOU或ID特征来计算它们之间的相似性,然后使用匈牙利算法完成基于相似度的匹配。将未完成匹配的高分检测框保留在中,未匹配的轨迹保留在中。
- 第二次关联在低分检测框和第一个关联后的剩余轨迹之间执行。然后将未匹配的轨迹保留在中,未匹配的低分检测框则直接删除(即将它们看作背景)。
- 在第二次关联之后,将放入中。对于中的每个轨迹,只有当它存在超过一定数量的帧(即30帧)时,才会将其从轨迹T中删除。否则,将保留T中丢失的轨迹。最后,在第一次关联之后,从未匹配的高分检测框中初始化新轨迹。每个帧的输出是当前帧中轨迹T的边界框和标识。
在第二个关联中单独使用IoU作为相似度很重要,因为低分数检测框通常包含严重的遮挡或运动模糊,所以外观特征不可靠。
附:
卡尔曼滤波:【小白学习笔记】(二)目标跟踪-卡尔曼滤波 - 知乎
匈牙利匹配:【小白学习笔记】(一)目标跟踪-匈牙利匹配 - 知乎
稀有目标跟踪数据集地址:非机动车检测数据集(百度网盘提取,永久有效)-深度学习文档类资源-CSDN文库