目标跟踪是机器视觉中一类被广为研究的重要问题,分为单目标跟踪与多目标跟踪。前 者跟踪视频画面中的单个目标,后者则同时跟踪视频画面中的多个目标,得到这些目标的运 动轨迹。
基于视觉的目标自动跟踪在智能监控、动作与行为分析、自动驾驶等领域都有重要的应 用。例如,在自动驾驶系统中,目标跟踪算法要对运动的车、行人、其他动物的运动进行跟 踪,对它们在未来的位置、速度等信息作出预判。
目标跟踪算法可以进行轨迹特征的自动分析和提取,以弥补视觉目标检测的不足,有效 的去除错误的检测,增加遗漏的检测,为进一步的行为分析提供基础。相对于多目标跟踪算 法,视觉单目标跟踪算法研究的更为广泛,当前解决的相对更好。典型的如 Mean shift 算法, 用卡尔曼滤波、粒子滤波进行状态预测,TLD 等基于在线学习的跟踪,KCF 等基于相关性滤 波的算法等。
对于单目标跟踪算法的测试视频来说,存在一个先验假设是目标总是在摄像机视场范围 内,因此即使把矩形框固定在初始位置,有时候仍然能得到一个看起来还好的跟踪结果(如 图 1)。
图 1:采用固定矩形框的 0 阶跟踪方案有时候能够得到可接受的跟踪结果。
多目标跟踪问题没有上述的先验假设,一般情况下,多目标跟踪的对象位置变化很大,
跟踪对象可以从场景入口进入,从出口离开,跟踪目标个数不固定。另外,多目标跟踪问题 通常追踪给定类型的多个对象,同类对象具有一定的外观轮廓相似性,如下图跟踪场景:
图 2:CAVIAR 数据中一些行人在商店长廊中经过。
相对来说,多目标跟踪问题更加复杂,除了单目标跟踪中存在的物体形变、背景干扰等
因素。通常还需要解决以下一些问题:
跟踪目标的自动初始化和自动终止,即处理新目标的出现,老目标的消失
跟踪目标的运动预测和相似度判别,即准确的区分每一个目标
跟踪目标之间的交互和遮挡处理
跟丢目标再次出现时,如何进行再识别问题 多目标跟踪任务需要解决比单目标跟踪更多的问题和难点,如何有效地解决这些问题对
多目标跟踪算法有重要意义。在这篇文章中,SIGAI 将和大家一起对一些经典的视觉多目标 跟踪算法进行回顾和归纳,以理解视觉多目标跟踪算法的框架和当前主流算法的框架和基本 原理,如果对本文的观点持有不同的意见,欢迎向我们的公众号发消息一起讨论。
2. 视觉多目标跟踪算法的分类
多目标跟踪问题最早出现在雷达信号中目标运动轨迹的跟踪,如同时跟踪飞过来的多架 敌人的飞机和多枚导弹。这些算法后来被借鉴用于机器视觉领域的多目标跟踪任务,随着计 算机视觉领域的深入研究,近年来研究者对多目标跟踪算法从不同的方面进行了扩展。比如 通过扩展单目标跟踪算法来支持多目标的情况,更多的工作从整个视频场景出发,对所有的 目标轨迹做了统一的考虑。根据不同的分类标准,多目标跟踪算法有不同的分类方法。比如 按照预测校正的跟踪和按照关联方式的跟踪,按照离线方式的关联跟踪和按照在线方式的跟 踪,按照确定性推导的跟踪算法和按照概率统计最大化的跟踪等。
按照轨迹形成的时间顺序,多目标跟踪可以分为在线方式的跟踪算法以及离线形式的跟 踪过程。如果跟踪的顺序是逐帧方式的:即为在线方式的目标跟踪方法。在线多目标跟踪与 人眼实时跟踪目标过程类似,是对每个目标的状态进行估计,然后考虑整体状态的合理性进 行约束。这个过程也可以简化为:获得每帧图像检测结果,把检测结果同已有的跟踪轨迹进 行关联。如果跟踪算法运行是在视频已经获取结束,所有检测结果都已经提前获取情况下, 这种跟踪方法为离线形式的多目标跟踪。离线多目标跟踪算法把检测结果集合作为观察,把 轨迹看作检测集合的一种划分,因此跟踪问题转化为子集优化的过程。
按照跟踪算法形式化表示和优化框架过程,多目标跟踪可以分为确定性推导的跟踪和概 率统计最大化的跟踪算法(如图 3)。
图 3:按照多目标跟踪形式化分为概率统计最大化的多目标跟踪和确定性推导的多目标跟踪。
在确定性推导的多目标跟踪框架中,我们把检测和轨迹和匹配看作为二元变量,通过构 造一个整体的目标函数,我们求变量的最佳值,使得目标函数最优,从而得到检测和轨迹的 最佳匹配。这种整体的目标函数可以构造为二部图匹配的匹配代价,网络流的代价和,或者
直接构造为机器学习中的分类问题进行优化计算。在概率统计最大化的多目标跟踪方法中, 检测和轨迹的关系通过概率模型进行形式化,例如基于贝叶斯推导的卡尔曼滤波和粒子滤波, 基于构造马尔科夫图模型,通过样本构造学习模型参数,在跟踪过程中计算概率最大化的轨 迹结果,而对马尔科夫图模型的一个直接的公式化方法就是构造能量函数,因此能量最小化 也是一些多目标跟踪算法常用的方式。
在一些情况下,这两种方法的区分不是非常明确的。比如机器学习算中,也可以采用统 计学习方法进行建模,而能量最小化过程的推导实际是一个确定性的步骤。
上述对于多目标跟踪算法的分类,对于帮助理解不同的跟踪算法具有重要作用,而真正 决定算法性能的可能并不是这些跟踪算法框架,而是一些更加基础的内容,比如如何构造检 测结果的表观模型才能反应目标的特征,采用什么样的特征才能使得同一个目标更像,不同 目标差异较大。又比如,如何判断检测结果是不是非常准确,如果不准确的话,特征匹配该 如何计算匹配相似度。
对于特征表示的研究,目前广泛采用深度学习的方法,基于深度学习的多目标跟踪算法 我们后续介绍。下面我们对经典的多目标跟踪算法进行概要的介绍。
3. 经典视觉多目标跟踪算法介绍3.1 多假设多目标跟踪算法
多假设跟踪算法(MHT)是非常经典的多目标跟踪算法,由 Reid 在对雷达信号的自动跟踪 研究中提出,本质上是基于 Kalman 滤波跟踪算法在多目标跟踪问题中的扩展。
其中公式右侧第一项表示基于前期假设集合和当前假设的观察似然概率,即在历史关联的基 础上,当关联 θl(k)成立时,表现出当前观测 Z(k)的概率;第二项表示当前假设的似然概率, 即在历史关联的基础上,当前关联假设的概率;第三项表示前期假设集合后验概率。c 是贝 叶斯公式中的分母,对于当前观测已知的条件,可以认为是一个常数。从上式中可以看出, 总体的假设后验概率可以表示为此三项的乘积。而公式第三项表示 k-1 时的后验概率,因此, 只考虑第一项和第二项就可以得到一个递推公式。如何对第一项和第二项进行建模?MHT采用了二个概率模型:1.用均匀分布和高斯分布对关联对应的检测观察建模. 2. 用泊松分布 对当前假设的似然概率建模。前者表示,当观测是来自一个轨迹 T 时,它符合 T 的高斯分布, 否则观测是一个均匀分布的噪声。后者表示,在误检和新对象出现概率确定的情况下,出现 当前关联的可能性可以通过泊松分布和二项分布的乘积表示。在以上假设下,关联假设的后 验分布是历史累计概率密度的连乘,转化为对数形式,可以看出总体后验概率的对数是每一 步观察似然和关联假设似然的求和。因此,选择最佳的关联假设,转化为观察似然和关联假 设似然累计求和的最大化。在进行具体实现和优化的时侯,I.J.Cox 等人提出了一种基于假设 树的优化算法,如图 4 所示。
图 4: 左图为 k-3 时刻三个检测观察和两条轨迹的可能匹配。对于这种匹配关系,可以继续向前预测两帧, 如图右。得到一种三层的假设树结构,对于假设树根枝干的剪枝,得到 k-3 时刻的最终关联结果。
对于 k 时刻的关联对数似然概率,可以认为是 k 时刻之前关联观察似然概率的对数求和, 由于任何时刻都可能存在多种假设关联,因此到 k 时刻的假设构成了一种组合假设树的层次 关系。例如图 4 左边表示的是 2 个轨迹和 3 个观测之间可能形成的关联假设,可能存在的假 设有{观测 23=>轨迹 1,观测 22=>轨迹 2, 观测 21=>新轨迹}或者{观测 22=>轨迹 1,观测 21=>轨迹 2, 观测 23=>新轨迹},因此产生 2 个假设分支。图 4 右侧是从这 2 个关联假设出发的 三层假设树关系,可以看出随着假设层数的增多,关联假设出现组合爆炸的可能。因此进行 必要的剪枝减少假设空间的数目是必须的步骤。那么如何选择最佳的关联呢?I.J.Cox 采用了2 个步骤来实现。首先,限制假设树的层数为 3 层。其次,是对每个分支的叶节点概率对数 进行求和,最大的分支进行保留,即选择边缘概率最大的那个分支假设作为最后选择的关联。 可以把这种选择方法简单的表示为:
采用基于均匀分布、泊松分布以及高斯分布的模型,可以高效快速计算选择 k-3 时优化的假设关联。这种基于似然概率对数累加的方法虽然方便迅速,但是存在一个主要的限制, 即假定观测关联符合高斯模型,并且在每一步选择关联假设之后,需要利用 Kalman 滤波更 新轨迹状态。通过对 MHT 基本公式(3-1)的扩展,可以建立不同的概率模型描述这种多假设 关联的全局概率,例如 Kim 等人在 ICCV2015 和 ECCV2018 通过归一化的最小均方差优化算 法引入表观模型来扩展 MHT 算法,取得不错的多行人跟踪结果[2,3]。
3.2 基于检测可信度的粒子滤波算法
如果不限定检测观测为高斯分布,一种采用概率统计的多目标跟踪框架是基于检测可信 度的粒子滤波算法[4]。
这个算法分为两个步骤:1. 对每一帧的检测结果,利用贪心匹配算法与已有的对象轨迹 进行关联。2. 利用关联结果,计算每个对象的粒子群权重,作为粒子滤波框架中的观察似 然概率。整体的跟踪过程采用粒子滤波框架,如图 5 中所示。
图 5: 基于检测匹配的联合粒子滤波多目标跟踪算法流程。
对于每一帧的检测结果(图左)。可以计算与轨迹 的匹配矩阵,本方法采用结合匹配结果设计粒子滤波算法(图中),计算跟踪结果(图右)。
下面我们详细说明这两步。
第一步:利用贪心匹配算法关联当前帧检测和已有的对象轨迹。匹配亲和度计算如下:
计算出匹配亲和度矩阵之后,可以采用二部图匹配的 Hungarian 算法计算匹配结果。 不过作者采用了近似的贪心匹配算法,即首先找到亲和度最大的那个匹配,然后删除这个亲 和度,寻找下一个匹配,依次类推。贪心匹配算法复杂度是线性,大部分情况下,也能得到 最优匹配结果。
第二步:采用粒子滤波框架,计算每个跟踪对象的粒子权重,计算公式如下:
(3-5)
当轨迹 tr 有检测匹配时,po(tr)为 1;否则,他的附近有轨迹对象匹配成功时,取邻域轨 迹的最大匹配高斯密度;如果附近也没有轨迹对象成功匹配,则 po(tr)为 0。
结合检测可信度的粒子滤波算法对轨迹的初始化采用了感兴趣区域的简单启发式策略。 即,进入图像区域边框时,初始化对象;当连续多帧没有关联到检测时终止跟踪。在一些典 型数据集上,基于检测可信度的粒子滤波算法可以得到不错的结果,如下表:
表 1: 基于检测可信度粒子滤波的跟踪结果,采用 CLEAR MOT 评测标准进行结果评估。3.3 基于最小代价流优化的多目标跟踪算法
上述两个算法是基于贝叶斯概率模型的在线多目标跟踪算法。与他们不同,采用最小代 价流优化的多目标跟踪算法是基于确定性优化的离线多目标跟踪算法[6]。
(3-8)
仔细观察发现,这里所求解的实际上网络流优化问题中满足代价最小的多个流,如图 6。
图 6: 最小代价流描述的检测划分方法,以产生全局最优的多目标跟踪算法。图中表示三帧图像中,分别有2, 4, 3 个检测结果时,所产生的网络最小代价流[6]。
这里还有两个问题,网络流中边的代价怎么计算以及轨迹的数目怎么确定。 第一个问题,边的代价根据跟踪中轨迹生成概率、终止概率、相似概率、误检率计算:
第二个问题,轨迹数目通过迭代比较的方法确定。注意到检测节点代价 Ci 的值是一个 负数,所以轨迹对应的网络流代价也可能小于 0。因此,通过遍历不同轨迹数目,可以确定 一个全局代价最小的解。这种方式带来算法的低效率,后续很多工作做了相关优化[7, 8]。
3.4 基于马尔科夫决策的多目标跟踪算法
不同于之前基于概率模型的在线多目标跟踪算法,Xiang 等人采用了马尔科夫决策过程 来推导每个轨迹的生成,称为 MDP 跟踪算法[9]。这是一种基于机器学习的确定性推导在线 目标跟踪算法。
作者把目标跟踪看作为状态转移的过程,如图 7。转移的过程用马尔科夫决策过程(MDP)建模。一个马尔科夫决策过程包括下面四个元素:(S, A, T(.),R(.))。其中 S 表示状态集合,A 表示动作集合,T 表示状态转移集合,R 表示奖励函数集合。一个决策是指根据状态 s 确
定动作 a, 即 π: S↦A。一个对象的跟踪过程包括如下决策过程:
图 7: 基于马尔科夫决策过程的在线跟踪流程[9]。作者设计了三个奖励函数来对上述三种决策进行建模:
第一个奖励函数是:
即判断新出现的对象是否为真,y(a)=1 时表示转移到跟踪状态,反之转移到终止状态。 这是一个二分类问题,采用 2 类 SVM 模型学习得到。这里用了 5 维特征向量:包括 x-y 坐 标、宽、高和检测的分数。
第二个奖励函数是:
这个函数用来判断跟踪对象下一时刻状态是否是出于继续跟踪,还是处于丢失,即跟踪 失败。这里作者用了 5 个历史模板,每个模板和当前图像块做光流匹配,emedFB 表示光流中 心偏差,Omean 表示平均重合率。e0 和 o0 是阈值。
第三个奖励函数是:
这个函数用来判断丢失对象是否重新跟踪,或者终止,或者保持丢失状态不变。这里当 丢失状态连续保持超过 Tlost(=50)时,则转向终止,其他情况下通过计算 M 个检测匹配,来判断是否存在最优的匹配使上式(3-14)奖励最大,并大于 0。这里涉及两个问题如何设计特 征以及如何学习参数。这里作者构造了 12 维与模板匹配相关的统计值。而参数的学习采用 强化学习过程,主要思想是在犯错时候更新二类分类器值。
表 2 中是本算法和其他算法在 MOT2015 测试数据集中运行结果比较,相对其他经典在 线跟踪算法,MDP 算法具有一定的优势。
表 2: 采用马尔科夫决策过程的多目标在线跟踪算法在 MOT2015 中的评测结果。3.5 基于局部流特征的近似在线多目标跟踪算法
上面介绍的基于马尔科夫决策的在线多目标跟踪是对于当前帧的图像和检测结果,进行 即时的轨迹状态更新。在另一类在线跟踪方法中,跟踪状态的最终结果与当前帧有一个小的 帧差,这种方法称为近似在线多目标跟踪算法,MHT 算法实际就是一种近似在线多目标跟 踪算法。这里介绍的 NOMT 跟踪算法,是采用能量函数最小化设计的近似在线跟踪,对比MHT 算法,没有高斯分布的假设,因此应用范围更广泛一些。
NOMT 算法的主要思想是,对于当前时刻 t,往回看帧,在 t 帧和 t-帧之间构造轨迹小 段组(tracklets),利用这些轨迹小段组和之前的跟踪目标进行匹配关联,由于轨迹小段包含了 比单个检测更加丰富的信息,因此这种关联比目标轨迹直接匹配检测集合更加可靠。同时, 此时的匹配包含了帧信息,因此如果 t 帧之前的匹配存在错误,在后续的关联中具有纠正错误的机会,基本的思想如图 8 中所示。
图 8: 采用近似在线多目标跟踪 NOMT 算法的示意图[10]。对于 t 时刻的关联结果,允许在后续的关联中进 行验证,对于错误的关联可以进行改正,从而增强整体跟踪的准确性。
其中 x 就是要求的假设对应的下标。找到使 3-15 式最小的 x,就完成了 t 帧的推导。如图 9所示是详细的过程。
图 9: 采用条件随机场求解跟踪目标与轨迹小段匹配的示意图[10]。对于 t-帧到 t 时刻生成的轨迹小段 T, 生成与跟踪目标 Am*t-1 匹配的候选集合(b),由随机场推导得到优化的关联结果(c),并生成最终结果(d)。
对应于一般的马尔科夫随机场,公式 3-15 也分为两个部分,第一部分是每个节点自身 的势函数,表示的是一个轨迹小段和跟踪目标匹配的代价,第二部分定义为随机场的边的势 能函数,表示 2 个跟踪目标 m,l 匹配两个轨迹小段时的互斥性。
这里节点势能函数定义为:
这个公式包含三项,分别表示轨迹小段中每个检测与跟踪目标的匹配代价,轨迹小段内部每两个检测的匹配代价,以及轨迹小段和跟踪目标之间的表观距离。这里的匹配代价计算 作者采用了基于局部光流的匹配划分计算方法,称为 ALFD 特征。
边的势能函数定义为:
这里的函数 d(.f)表示 f 时刻的检测,函数 o 表示重叠率,函数 I 是表示是否同一个检测。 参数 α,β 分别是两种互斥性的权重,显然后者的权重要大很多,论文中作者分别设为(0.5, 100)。定义好能量函数,计算每两个检测之间的 ALFD 特征之后,这个函数就可以求解了。 利用概率图模型中的联合树算法可以帮助求解公式 3-15,找出最优的关联假设。
下表是 NOMT 算法在 MOT2015 中的跟踪评测结果:
表 3: 基于近似在线多目标跟踪算法 NOMT 在 MOT2015 上的跟踪结果[10]。相比与过去的传统的在线算法,NOMT 算法的优点是借助了历史信息和时间片段中的轨 迹段信息,因此性能相对较好,但是必须明确的是 NOMT 具有小的时间延迟(=10),但是
在实际应用中,这个延迟几乎是可以忽略的。
4. 视觉多目标跟踪算法在线资源
以上我们讨论了一些非常经典的多目标跟踪算法,这一节我们列举一些开放的多目标跟 踪算法的数据集和资源。相对于单目标跟踪而言,多目标跟踪涉及的问题更多,其数据的标 定和算法评测也更加复杂,因此开放的数据和代码要相对少很多[11]。表 4 列出了多目标跟 踪算法中常见的公共评测数据集和他们的下载地址。
表 4: 多目标跟踪算法中常用的公共评测数据集。
其中 KITTI 是自动驾驶平台上车辆、行人等不同目标类型的数据集,包含了跟踪、检测、 分割等多种任务。MOT2015,MOT2016 及 MOT2017 包含了过去常用的一些视频序列及作者 新增加的一些高清视频,是目前主要的多目标跟踪评测数据集。
表 5 中列出了近年来主要国际会议和期刊论文中开放源码的多目标跟踪算法。需要说明 的是,表 4 和表 5 中只列出了我们所搜集到的资源和代码,未来一定有更多的资源开放出来。 另外其他未引用的常用资源也请读者补充。
5. 视觉多目标跟踪小结
相比单目标跟踪问题,多目标跟踪面临更多的子问题,主要的区别在于跟踪对象不再确 定不变,因此必须考虑对象之间的交互,新对象的进入和离开视场对象的跟踪终止。由于解 决这些问题的角度不同,多目标跟踪算法的形式也是各种各样。尽管算法思路相差较大,但 是主要的算法框架和其中的关键部分基本类似。在线多目标跟踪中,基本的算法流程仍然是 基于状态预测更新的框架;而离线多目标跟踪中,基于图模型的构造和求解是主要的框架。 两种类型中,如何有效的设计和学习检测之间的匹配亲和度,或者轨迹与观测的一致性是非 常关键的步骤。深度学习是解决这个问题的非常有效的工具,在最新的多目标跟踪算法中已 经表现出明显的优势,深度学习的进一步应用是多目标跟踪领域发展的必然趋势,在下一篇 文章中,我们将对此进行介绍。
表 5: 近年来开放代码的多目标跟踪算法及代码地址