Multiple Object Tracking
多目标跟踪(Multi-Object Tracking),指在一段视频中同时跟踪多个目标或物体。MOT主要应用场景是安防监控和自动驾驶等,这些场景中我们往往需要对众多目标同时进行追踪。这仅仅用目标检测算法或单目标跟踪算法都无法做到的,渐渐地多目标跟踪算法就引起了研究学者的兴趣。

单目标跟踪与多目标跟踪的区别在于新目标的进入与旧目标的消失问题。在单目标中,常用的方法是使用给定的初始框,在后续视频帧中对初始框内的物体进行位置预测。而大多数的多目标跟踪算法是不需要考虑初始框的,原因也是新目标的进入与旧目标的消失。取而代之,在多目标跟踪领域常用的策略是Tracking-by-Detection。即在每一帧进行目标检测,再利用目标检测的结果来进行目标跟踪,目标跟踪的过程一般称为数据关联(Data Assoiation)。
TBD(Tracking-by-Detection)与DFT(Detection-Free Tracking),即基于检测的多目标跟踪与基于初始框无需检测器的多目标跟踪。TBD是目前主流的研究方向。但是目前transformer的火热,目标跟踪也出现了Joint-detection-tracking的新方法。

另一种多目标跟踪算法的分类方法。上文提到我们往往会使用数据关联来进行多目标跟踪,跟数据关联的效果与能使用的数据是有直接关系的:
- Online跟踪,我们只能使用当前帧以及之前帧的信息来进行行当前帧的跟踪,Online跟踪是不允许修改以往的跟踪结果的,因为可以修改的话就相当于利用未来帧进行当前帧的跟踪
- Offline跟踪,对于每一帧的预测,都可以使用整个视频的信息,这更容易获得一个全局最优解,Offline算法的效果一般会优于Online算法,速度也相对较慢。
- Near-Online跟踪,可以利用部分未来帧的信息进行目标的关联。
一些常用术语:
Trajectory ,一条轨迹对应这一个目标在一个时间段内的位置序列
Tracklet ,形成Trajectory过程中的轨迹片段。完整的Trajectory是由属于同一物理目标的Tracklets构成。
ID-switch ,对于同一个目标,由于跟踪算法误判,导致其ID发生切换的次数称为ID switch。跟踪算法中理想的ID switch应该为 0。
* 当两个或多个对象在彼此靠近时交换
* 对象在视频中消失又重新出现,对象用不同的轨迹ID重新初始化
* 
Miss ,count all objects for which no hypothesis was output,没有预测的轨迹与真实的轨迹对应匹配上
False positive ,count all tracker hypotheses for which no real object exists ,预测出来的轨迹匹配不上GT轨迹,相当于跟踪了个寂寞

评价指标:
| Measure | Better | Perfect | Description | 描述 |
|---|---|---|---|---|
| ID Sw. | lower | 0 | the total number of identity switches. | 在视频序列的跟踪过程中,所有跟踪目标身份交换的次数。指前一帧和后一帧中对于相同GT轨迹的预测轨迹ID发生切换,跟丢的情况不计算在ID切换中 |
| FPS | higher | - | Frames Per Second | 多目标跟踪器的跟踪速度 |
| FP | lower | 0 | the total number of false positives | 在视频序列中不能与真实轨迹的边界框 相匹配的假设边界框 被称为假阳性,即本来是假的,被预测为真的(误报) |
| FN | lower | 0 | the total number of false negatives(missed targets). | 在视频序列中不能与假设边界框 相匹配的真实轨迹的边界框 被称为假阴性,即本来是真的,被预测为假的(漏报) |
| MT | higher | 100% | Mostly tracked targets. The ratio of ground-truth trajectories that are covered by a track hypothesis for at least 80% of their respective life span. | 在跟踪过程中各个目标至少有80%的视频帧都能被正确地跟踪的跟踪轨迹数量 |
| ML | lower | 0% | Mostly lost targets. the ratio of ground-truth trajectories that are covered by a track hypothesis for at most 20% of their respective life span. | 在跟踪过程中各个目标至多有20%的视频帧都能被正确地跟踪的跟踪轨迹数量 |
| Frag | lower | 0 | the total number of times a trajectory if fragmented(i.e. interrupted during tracking) | 真实跟踪根轨迹由于某种原因发生中断并在后来又继续被准确跟踪上被称为跟踪碎片。Frag 表示整个视频序列中碎片总数 |
| MOTA | higher | 100% | Multiple Object Tracking Accuracy | MOTA除了误报、丢失目标、ID切换情况之外的正确预测样本所占所有样本的比率MOTA = 1-\frac{\sum_t(m_t+fp_t+mme_t)}{\sum_t g_t},g_t表示整个视频序列中真实目标的数量,由于IDSW的存在,MOTA最小可以为负无穷 |
| MOTP | higher | 100% | Multiple Object Tracking Precision. The misalignment between the annotated and predicted bounding boxes. | 标注和预测的bbox之间的不匹配程度。MOTP = \frac{\sum_{t,i}d_{t,i}}{\sum_tc_t}。c_t表示第t帧中预测轨迹和GT轨迹成功匹配上的数目,d_{t,i}表示第t帧中第i个匹配对的距离,这个距离可以用IOU或欧氏距离来度量,IOU大于某个阈值或者欧氏距离小于某阈值视为匹配上了。MOTP这个指标相比于评估跟踪效果,更注重检测质量。对于使用欧氏距离进行度量的就是MOTP越小越好,这主要取决于度量距离d的定义方式 |
| False Alarm | lower | 0 | False Trajectory | 预测出来的轨迹匹配不上GT轨迹,相当于跟踪了个寂寞 |

有如上三个跟踪器,对于GT轨迹A的跟踪效果如图显示。在(a)中有2个fragments,在(b)©中有8个。在(a)(b)中预测轨迹1占据了4/6的帧数,而在©中占据了5/6的帧数。由于©的IDSW会更多,它的MOTA指标会更低。但©中匹配时间要更长一些,如果我们关注跟踪时长的话,显然©这个跟踪器会更好一些,于是ID scores就被提出来了。总之,MOTA的主要问题是它考虑了跟踪器做出错误决定的次数,比如IDSW。而在某些情况下不想丢失跟踪对象的位置,我们更关心这个跟踪器跟踪某个对象的时间长短 。
但目前的问题是如何将GT和预测出来的轨迹匹配上,比如(a)中为何不将GT与预测轨迹2匹配来算出正确跟踪时间是2/6 ?因此,我们希望将每一个GT与一个计算轨迹匹配起来,并最小化所有GT轨迹和计算轨迹的不匹配帧数(FP+FN的数量),可以建立一个二分匹配问题来解决。然后ID scores相关指标都基于匹配的结果来进行计算。具体的二分匹配问题如下
数据集
MOT16
专门用来衡量多目标跟踪检测和检测标准的数据集,可以专门用于行人跟踪。
总共有14个视频,训练集和测试集各7个。
这些测试集有的是固定摄像机拍摄的,有的是移动摄像机拍摄的,而且拍摄角度不一样(中、高、低角度进行拍摄)
其他拍摄条件(不同天气,白天或者夜晚,人群密度等等)
使用的是DPM检测器,这个检测器在检测"人"这个类别的时候具有很好的性能
视频主要信息:FPS、分辨率、视频时长、轨迹数、目标数、密度、静止或移动拍摄、低中高角度拍摄、拍摄天气条件等等
MOT17
det # 7
* 每行包含一个物体参量`(frame、id、bb_left、bb_top、bb_width、bb_height、conf、x、y、z)`
* `id`表示轨迹编号
* 世界坐标系`x,y,z`对于2D挑战而言可以被忽略填充为-1。相似的,边界框会被3D挑战赛忽略,但是每一行必须有10个值存在
* 所有的帧编号,目标IDs以及边框号都是从1开始编号的
gt # 9
每行包含一个物体参量(frame、id、bb_left、bb_top、bb_width、bb_height、sign、class label、visibity ratio)
frame代表第几帧
id表示轨迹编号
sign表示目标轨迹是否进入考虑范围内的标志,0表示忽略,1表示激活
class label表示该轨迹对应的目标种类,如下表所示
visibility ratio 表示目标运动时被其他目标box包含、覆盖或者目标之间box边缘裁剪情况
| Label | id |
|---|---|
| pedestrian | 1 |
| Person on vehicle | 2 |
| car | 3 |
| bicycle | 4 |
| motorbike | 5 |
| Non motorized vehicle | 6 |
| static person | 7 |
| Distractor | 8 |
| Occluder | 9 |
| Occluder on the ground | 10 |
| Occluder full | 11 |
| Reflection | 12 |
seqinfo.ini文件
* 主要介绍视频的帧率、分辨率等基本信息
常用数据集
- CustomDataSet
- COCO
- KITTI
- COCOHP
- MOT
- nuScenes
- CrowdHuman
- KITTITracking
5. DeepSort
-
SORT算法利用卡尔曼滤波算法预测检测框在下一帧的状态,将该状态与下一帧的检测结果进行匹配,实现车辆的追踪。一旦物体受到遮挡或者其他原因没有被检测到,卡尔曼滤波预测的状态信息将无法和检测结果进行匹配,该追踪片段将会提前结束。遮挡结束后,物体可能会被重新检测到,SORT会给该物体分配一个新的ID编号,代表一个新的追踪片段的开始。所以SORT的缺点是受遮挡等情况影响较大,会有大量的ID切换 。
者其他原因没有被检测到,卡尔曼滤波预测的状态信息将无法和检测结果进行匹配,该追踪片段将会提前结束。遮挡结束后,物体可能会被重新检测到,SORT会给该物体分配一个新的ID编号,代表一个新的追踪片段的开始。所以SORT的缺点是受遮挡等情况影响较大,会有大量的ID切换 。 -
如何解决SORT算法中出现过多的ID切换?online tracking不能利用全局的视频帧的检测框数据,想要缓解拥堵造成的ID切换需要利用到前面已经检测到的物体的外观特征,当物体受到遮挡后到遮挡结束,利用之前保存的外观特征分配该物体受遮挡前的ID编号,降低ID切换。
