目录
一、多目标跟踪背景介绍
        1.问题定义
        2.难点
        3.应用场景
二、相关方法
        1.Model free 方法
        2. Tracking by detection 方法
             1)离线方法
              2)在线方法
三、基准

多目标跟踪背景介绍

问题定义

多目标跟踪是将视频中每一帧的物体都赋予一个id,并且得到每个id的行为轨迹,如图1所示。

从代码的层次考虑,其输入为视频序列,输出为物体的行为轨迹和id。从是否有模型上考虑,可以分为model free的方法和tracking by detection的方法,其中后者又可以分为离线学习的方法和在线学习的方法。

有多目标跟踪算法就有单目标跟踪方法,不同之处就在于匹配问题,举例说明,如果在前一帧检测到两个物体a,b,在后一帧检测到两个物体c,d,怎么知道前一帧的a在后一帧所对应的是c或者d的哪一个物体呢?匹配问题在单目标跟踪领域就不存在,因为前后两帧只存在一个目标。

多目标跟踪sort代码讲解 常用的多目标跟踪算法_多目标跟踪sort代码讲解

难点

多目标跟踪的难点在于ID switch, 如图2所示,当骑自行车的人与步行的人相遇的时候,步行的人发生了遮挡,这是对于电脑来说,认为是此id的跟踪已经结束,过了一段时间,步行的人重新出现在了视野,但是电脑会认为是一个新的物体出现,因此赋予一个新的id,这种情况下,就发生了id交换,同理当物体被其他物体例如电线杆遮挡时也是一样。因此针对这种id交换的情况,学术界提出了很多的解决方案,这个我们后面再看。

多目标跟踪sort代码讲解 常用的多目标跟踪算法_多目标跟踪sort代码讲解_02

应用场景

多目标跟踪是一种通用的算法,几乎应用在视觉领域的各个方面,例如安防领域、自动驾驶领域以及医疗领域。如图3,4,5所示,在安防领域,我们通常需要跟踪来得到在特定区域的人数统计。在自动驾驶领域,我们通常需要跟踪来预估行人或者车辆的轨迹。在医疗领域,我们通常需要跟踪来得到细胞的运动情况。

多目标跟踪sort代码讲解 常用的多目标跟踪算法_多目标跟踪_03


多目标跟踪sort代码讲解 常用的多目标跟踪算法_计算机视觉_04


多目标跟踪sort代码讲解 常用的多目标跟踪算法_算法_05

相关方法

多目标的跟踪方法在这里我们分为两类,model-free的方法和tracking by detection的方法。

model-free的方法

model-free的方法核心思想是在第一帧给定初始的检测框,在后续帧中跟踪这些框,这种方法是早期的算法,缺点是如果有些目标在后续帧中才出现,这些目标并不会被跟踪。如图6所示。

多目标跟踪sort代码讲解 常用的多目标跟踪算法_计算机视觉_06

tracking by detection的方法

离线学习

离线学习的方法缺点在于无法实时处理视频,通过比较相邻帧之间的相似度生成短的轨迹,之后再将短的轨迹合成长的轨迹。如图7所示。

多目标跟踪sort代码讲解 常用的多目标跟踪算法_多目标跟踪sort代码讲解_07

在线学习

Learning to Track: Online Multi-Object Tracking by Decision Making (2015,ICCV)

该论文第一次将强化学习加入到跟踪这个领域,将目标的跟踪周期建模成马尔可夫过程进行优化。如图8所示。当物体被检测到之后,被认为是active的状态。在active的状态下如果下一帧也检测到了,状态由active转换为tracked,如果没有检测到,状态转换为inactive状态。在tracked状态下如果如果继续检测到该目标,则持续为tracked状态,如果没检测到,则状态转换为lost。在lost状态下如果被检测到了,则状态恢复为tracked,如果持续没检测到,则还保持lost状态,当lost的时间超过了一定的阈值后,状态切换为inactive,inactive状态下的目标会保持inactive直到视频结束。

多目标跟踪sort代码讲解 常用的多目标跟踪算法_算法_08


Online Multi-Object Tracking via Structural Constraint Event Aggregation (2016,CVPR)

该论文将目标跟踪中的匹配问题加入了结构约束,举个例子,前一帧如果检测到的目标连结起来呈现的是三角形,那么通过速度预测每个目标的位置,从而调整三角形的形态,并且认为后面的帧就是呈现这样的结构。如图9所示

多目标跟踪sort代码讲解 常用的多目标跟踪算法_算法_09


Tracking The Untrackable: Learning to Track Multiple Cues with Long-Term Dependencies (2017, ICCV)

该论文首次将深度学习加入到跟踪中,通过神经网络提取三种特征,外表特征、运动特征、交互特征,将三种特征连接到一起,再经过全连接层,得到相似度分数。相邻帧得到相似分数后,利用匈牙利匹配得到最大匹配。匈牙利匹配的概念见《带你入门多目标跟踪(三)匈牙利算法&KM算法》

多目标跟踪sort代码讲解 常用的多目标跟踪算法_多目标跟踪sort代码讲解_10


Simple Online and Real-time Tracking with a D eep Association Metric

这个系列有两个算法,sort和deep sort,这里先介绍sort。sort的思路很简单,首先通过检测器例如faster rcnn把每一帧的物体检测出来,之后通过卡尔曼滤波器预测物体在下一帧的位置,将预测的位置与下一帧实际检测到的位置做IOU的计算,得到相邻两帧物体的相似度,最后利用匈牙利匹配得到相邻帧的对应id。由于这里只是计算框的重叠面积,因此如果两个物体发生遮挡,会出现id交换的情况,所以作者为了降低id交换,提出了deep sort算法。deep sort之所以可以把id交换降低45%,是因为它将面积匹配修改为了特征匹配。在匹配之前作者利用resnet50先将特征里取出来,由于一般情况下很少会遇到外观特征完全相同的两个物体,因此这种改进是有效的。deep dort由于很简单,因此没有在顶会上发表成功,但是由于其可以保证在高速度的情况下的高准确度,所以广泛应用在了工程实践的过程中。相关的demo

多目标跟踪sort代码讲解 常用的多目标跟踪算法_计算机视觉_11


Chained-Tracker: Chaining Paired Attentive Regression Results for End-to-End Joint Multiple-Object Detection and Tracking

论文有两个贡献1)提出了一种链式跟踪算法,业内首创将相邻两帧输入网络,可以将目标检测、特征提取、数据关联三个模块集成到单个网络中,实现端到端联合检测跟踪。2)相邻帧检测框对回归。论文将数据关联问题转换为相邻帧中检测框对的回归问题。这两个贡献主要是针对现存的两个问题:1)算法不能端到端的优化。2)过度依赖于检测的质量

多目标跟踪sort代码讲解 常用的多目标跟踪算法_算法_12

基准

目前在MOT7数据集上所能达到的效果如下图所示。MOTbenchmark

多目标跟踪sort代码讲解 常用的多目标跟踪算法_计算机视觉_13


参考:高旭 《多目标跟踪》