多目标跟踪方法 NOMT 学习与总结

原文链接: http://www.cnblogs.com/YiXiaoZhou/p/6798860.html

多目标跟踪方法 NOMT 学习与总结

读 ‘W. Choi, Near-Online Multi-target Tracking with Aggregated Local Flow Descriptor, ICCV,2015’笔记

NOMT这个方法在MOTChallenge2015,MOTChallenge2016库上的结果都算比较好的了,虽然方法比较老了。另外一个显著的特点就是该方法的各种tricks实在是太多,虽没有找到源码,但对作者还真是佩服。

概述

这篇文章涉及到了多目标跟踪中的两个关键方面: 相似性的度量和目标块之间的匹配。
相似性度量方面,提出了一种Aggregate Local Flow Descriptor (ALFD)的描述子用于描述patch块之间的相对运动信息。
目标匹配的过程中利用了ALFD信息,表观相似度,运动特征和轨迹的平滑性等
该方法属于tracking by detection的一种,在KITTI和MOT库上的结果都比较好

先避开细节不谈,看看NOMT的总的流程

多目标跟踪方法 NOMT 学习与总结_第1张图片

1493710326456.jpg

  1. 为什么称为Near-Online方法?对于第t帧,之前t-1帧中的detections都已经串成不同的轨迹了,但是在t-1帧中只有1027162-20170502223027664-232795102.png之前的轨迹串才保持不变,称为'Clean Targets',1027162-20170502223028226-139997808.png是时间窗,那么在t时刻需要处理的不仅仅是第t帧的detections还包括1027162-20170502223028586-593182207.png帧间的所有detections,即时间窗内的匹配结果是可以改变的,所以称为Near-Online方法,如上图中(a), 1027162-20170502223028882-846735404.png之前的是固定不变的跟踪结果,后面的则可能会随着第t帧处理结果发生改变

  2. 整个跟踪过程采用的是‘hypothesis generation and selection scheme’。意味着每一个时刻现在时间窗内生成许多hypothesis,然后为每一个轨迹选择一个hypothesis。但是时间窗内完备的假设集往往是相当庞大的,比如时间窗为5,每帧有5个detections,那么长度为5的tracklet假设就有1027162-20170502223029632-719139902.png种,再考虑轨迹起点、终点或者遮挡产生的假设,那就会爆炸。所以NOMT在Hypotheses Generation中通过距离约束首先产生了一些可能的tracklets,然后再将这些tracklets分配到不同的子集中,每个子集对应着可能匹配的一个已有轨迹。不同的子集中可能存在交集,这种交集包括 存在相同的tracklets(比如图b中1027162-20170502223029961-1447649837.png)或者 tracklets之间存在交集(比如图b中蓝色子集中1027162-20170502223030304-103128406.png与黄色子集中1027162-20170502223030586-133538744.png)

  3. 正是由于2中不同子集之间存在这相互关系,所以假设与轨迹之间的匹配采用了Conditional Random Field完成

  4. 将匹配假设中的tracklet加到对应的轨迹中,处理下一帧

无论是tracklets的生成还是hypothses的分配都需要刻画相似度,而NOMT使用了多种相似度的融合。先来看一看文中提出的ALFD描述子

Aggregated Local Flow Descriptor (ALFD)

这个方法的根本思想是利用关键点(interest points)的光流来刻画boxes之间的相对运动信息,从而判断两个boxes的相似度。比如在box1中的一个关键点是鼻尖,然后该关键点依据该点的光流可以推测在下一帧的位置,如果预测位置刚好在下一帧某个box2中的鼻尖处,那么box1与box2之间的匹配置信度显然要提高一点,那么统计所有的关键点就可以统计boxes之间的相似度。
但是呢,人体是非刚体,同一部位的关键点不同boxes中的位置很可能不同,而且光流本身就存在误差,所以使用直方图的统计特征比逐点匹配更加靠谱

那么是如何使用直方图统计该特征的呢?我们借下图分析下

多目标跟踪方法 NOMT 学习与总结_第2张图片

1493712399664.jpg

对于box1和box2,分别计算box1中关键点在box2中的投影点分布,和box2中关键点在box1中投影点分布,然后将两个分布结合起来就组成了整体的alfd特征。以box1投影到box2为例
首先将box1划分成n*n的网格,示例中n=2,实验中n=4,然后将box2以box2为基础划分1027162-20170502223032054-967856990.png个bins,具体而言就是将box2分成1027162-20170502223032461-1548366396.png个网格,然后box2周围1027162-20170502223032789-992167343.png之内的区域归为一个bin,之外的 区域归为一个bin。那么对于box1中的某一个关键点的相对运动信息就应该这么刻画:该点属于box1的哪个网格中,投影点落到box2的哪个bin中,于是直方图的长度为1027162-20170502223033320-2022771689.png,示例中为288维

将box1投影到box2的相对运动信息表示为1027162-20170502223033789-1493981547.png,那么两个boxes之间总的alfd特征为1027162-20170502223034226-1693089352.png,其中1027162-20170502223034586-1868548150.png是两个boxes中总的关键点的个数,1027162-20170502223034867-2075441693.png是一个正则项,用来约束关键点个数的影响:如果两个boxes中的关键点很少,那么他俩的匹配对整个跟踪过程中匹配的影响就很小。文中1027162-20170502223035523-1224562410.png

论文方法使用FAST 方法提取interest points,且任意两个points之间距离要 1027162-20170502223035820-680342155.png, 光流法使用的时Farneback光流法,当光流的大小1027162-20170502223036492-1254090172.png时该轨迹终止

如何将描述子向量转化为相似性度量?
显然alfd直方图的每个bin对相似性的贡献是不一样的,比如上面的Fig3中,包含红色矩形框的bins值越大,两个patch的匹配程度就越高,而如果最外面两个bins的值越大那么相似度就越小,所以文中将描述子向量的每个元素进行加权求和作为相似性的度量
1027162-20170502223036867-783164213.png
而对于权重向量是在训练集中统计出来的,这里我更偏向于使用统计而不是训练。

  1. 首先对训练集中的detections进行筛选(存在gt与之IoU>0.5的认为是positive detections)

  2. 在positive detections中计算任意两个时间间隔在1027162-20170502223037179-1089044861.png内的pair的margin
    如果两个detection是同一个目标 1027162-20170502223037554-1051652167.png,否则 1027162-20170502223037945-831816113.png
    然后权重向量就可以如下获得:

1027162-20170502223038898-697817697.png

其中 1027162-20170502223039820-367454188.png是表示所有detections中与真实gt的最大IoU大于0.5的detections,1027162-20170502223040461-1806439490.png是指与detection i时间差在1027162-20170502223040726-1653841466.png之内的detection。 详细的符号意义参见论文

其实这个权重计算式相当于强化了那些对分类(相似与不相似)起重要作用的特征,最终可以通过判断1027162-20170502223041054-1298179107.png的符号判断相不相似,想起来线性分类器1027162-20170502223041695-2083908583.png

然后我们来看看论文中另一个主要贡献点NOMT

NOMT

首先声明一些变量
1027162-20170502223041961-555029687.png表示clean targets at frame t,啥意思呢?就是t时刻已经跟踪到的轨迹1027162-20170502223042289-1226295019.png1027162-20170502223042539-1512301157.png之前的轨迹部分,这部分被认为是准确无误的,不在更改,所以称为clean targets。
Hypotheses 1027162-20170502223043164-1248906817.png表示的是可能分配给轨迹1027162-20170502223043648-1667841231.png的假设集,1027162-20170502223044007-281974790.png表示tracklet,空集表示轨迹结束,另外注意空集也可能对应一个假设集,表示新产生的轨迹。

Model Representation

模型可以形式化表示为1027162-20170502223044507-534473846.png,x是一个对应着1027162-20170502223045054-977090016.png的指示向量,整型数据,表示对应的轨迹匹配的Hypothesis标号,1027162-20170502223045586-2095892104.png表示x选中的Hypotheses,1027162-20170502223046007-1269701454.png表示时间窗内的detections,1027162-20170502223046554-615238393.png表示帧图像。
能量函数1027162-20170502223047117-508837023.png
显然第一项表示将假设分配给轨迹的代价,第二项表示分配的假设之间的相互关系

Single Targt Consistency

也就是上面的第一项,它由三部分组成,Hypothesis中的detections与轨迹的相似度、Hypothesis本身的一致性(可以理解为hypothesis本身的可靠程度)、将假设分配给该轨迹后的整体运动平滑性以及表观一致性,注意目标函数是最小化,有些式子里面包含的负号

1027162-20170502223047539-1713751842.png

其中第一项称为Unary potential,融合了alfd相似度和使用运动估计得到的相似度。这里为什么使用到运动估计,是因为alfd对于遮挡或者光流估计误差较大的情况匹配精度不好,这时候可以将运动估计作为补充

1027162-20170502223048867-1942168741.png

其中1027162-20170502223049211-1261878524.png表示时间窗,1027162-20170502223049726-767634315.png表示预定义的近邻帧,文中取{1,2,5,10,20},1027162-20170502223050148-2103591099.png表示轨迹在1027162-20170502223050476-77393477.png帧对应的关联detection,但是对于有可能不存在关联detection的帧怎么处理文中没说,我觉得就是直接跳过,求和项不加那一项

1027162-20170502223050789-1836702499.png

其中1027162-20170502223051586-154810562.png表示对轨迹使用最小二乘估计拟合曲线在时刻1027162-20170502223051898-327832139.png的位置和大小,拟合的曲线阶数在不同数据集上不同,MOT数据集上采用的是一阶,即直线,KITTI上采用的是二阶。 1027162-20170502223052304-1451552080.png表示两个detections的IoU,1027162-20170502223052742-1649600688.png是衰退因子(0.98),表示相同IoU条件下,随着帧间间隔增大相似度降低。

1027162-20170502223053148-1613846412.png

1027162-20170502223053617-1210845534.png表示detection的置信度,显然上式表示alfd和运动估计特征,谁可靠取谁,如果1027162-20170502223053898-1889537274.png,表示可能是一个新轨迹起点,那么就看detection的置信度1027162-20170502223054179-771842112.png


针对于第二项刻画Hypothesis本身的一致性,就使用了alfd相似度

1027162-20170502223054414-1639701883.png

第三项刻画了加入hypothesis之后整条轨迹的平滑性,使用了运动估计特征和表观特征。

1027162-20170502223054695-725309740.png

其中1027162-20170502223055023-1585281449.png均为标量参数,实验中取(20,0.4,0.8),1027162-20170502223055273-256283582.png表示两个detections之间的(x,y,height)的距离的平方,那么式子的前一项就是预测的detection与检测到的detection之间的差异(有点类似于Kalman滤波思想),注意这里的height是经过归一化,1027162-20170502223055570-434368771.png刻画了两个detection的表观相似度,使用颜色直方图表示patch块,具体而言就是每个patch块在LAB空间内将AB通道分别划分4个bins,然后每个采用金字塔形式统计直方图分布,金字塔的第一层1个,第2层分解成1027162-20170502223055804-2105864020.png 的网格,总体的bins就是1027162-20170502223056664-744256971.png,然后计算两个直方图的intersection得到K


上面仅考虑单独的轨迹怎么分配hypothsis,其实不同的轨迹分配不同的hypotheses,相互之间往往是相互影响的,也就是总能量表达式的第二项

Mutual Exclusion
1027162-20170502223057054-1548142875.png

其中1027162-20170502223057648-622996919.png表示假设1027162-20170502223058601-621294645.png在时刻f的detections,前一项表示两个假设存在重叠的程度,1027162-20170502223059382-1527037589.png,1027162-20170502223059757-566582748.png表示1027162-20170502223100132-1552192609.png是同一个目标,1027162-20170502223100679-732747404.png分别表示惩罚系数,论文中1027162-20170502223101023-1605349072.png,显然对分配假设中存在相同detection的情形零容忍。

上面讲NOMT的模型总是提到Hypotheses集1027162-20170502223101492-937715795.png,那么假设是怎么生成的呢?

Hypothesis Generation

在生成假设的过程中,NOMT就是在时间窗内生成一些tracklets作为假设,而tracklets包括两种形式,一种就是由1027162-20170502223102023-1944189299.png在时间窗内的部分生成,另一部分则是使用alfd度量相似度生成的,有点类似于聚类。
Starting from a detection 1027162-20170502223102304-1776426319.png然后在剩下不在该tracklet中的detections中选取最相似的放进去,直到tracklet中个数等于窗口长度或者tracklet内部detections与外部detections之间最好的相似度都小于0.4时终止。

这样生成的tracklets依然有许多是没有用的,所以采用了门限策略进一步筛选这些hypotheses。具体而言利用最小均方误差估计轨迹模型,通过判断预测box与tracklet中box的IoU值来筛选tracklets,实验中门限阈值设为0.1,这么小的原因是为了产生较多的tracklets。另外对于一段时间内没有匹配到detections的轨迹认为已经终止,论文中这个时间阈值为1s

关于新轨迹的产生,对于没有匹配的tracklets,采用non-maximum suppression的方式规避重复的目标。

目标函数现在已经给出来了,那么如何求解呢?

Inference with Dynamic Graphical Model

如图2所示,首先将每个轨迹1027162-20170502223102945-77648129.png可能分配的假设集1027162-20170502223103242-550844972.png分出来,表示一个节点,而里面具体的假设表示状态,就构成了一个undirected graphical model。对于这个图模型划分不同的独立的子图,不同结构的子图采用不同的方式进行求解
如果子图中包含多个node,那么采用CRF模型进行处理,如果仅含有1个节点,就选择集合中最好的假设分配给节点,这个时候就不用考虑Mutual Exclusion哪项势函数了。
关于CRF模型,待补充

实验

论文中验证了ALFD的表征能力,并分别在KITTI的部分子集和MOT2015数据集上做了实验验证了NOMT相对于当时已有方法的优势,这个优势还是相当明显的。具体数值结果见论文和相关网站

总结

  1. 该文章提出了一种基于光流的特征描述子ALFD,描述了patch块之间的相对运动关系,其实仔细想想这个描述子不仅包含了运动信息,还包含了纹理信息,比如关键点的选取,因为是相对关系,所以和patch之间的距离,即空间关系也有关,所以该描述子有效还是很好解释的

  2. NOMT方法采用的是一种滑动时间窗的更新方式,这种方式允许前若干时刻的分配结果随着新detections的到来而发生更改,这样跟踪效果显然会好一些,毕竟利用了前后帧的关系

  3. 方法中用到了好多tricks,比如使用最小平方误差算法构建轨迹预测器,使用运动特征去处理遮挡问题,使用运动特征和表观特征正则化假设集的分配,等等,且方法中给定了许多参数1027162-20170502223103711-1181838921.png

  4. 在使用ALFD计算相似度时,使用的时统计得来的权重向量,起始可以由训练得到。

  5. 这个假设分配的过程或许并非一定要通过CRF这么计算`

转载于:https://www.cnblogs.com/YiXiaoZhou/p/6798860.html

你可能感兴趣的:(多目标跟踪方法 NOMT 学习与总结)