结构性约束事件聚合下的在线多目标跟踪方法

结构性约束事件聚合下的在线多目标跟踪方法

读‘J.H. Yoon, C.R. LEE, et.al., Online Multi-Object Tracking via Structural Constraint Event Aggregation [C], CVPR2016’笔记。

对我而言,这篇文章的主要贡献点在于提出一种结构性约束事件聚合的方法用于data association和mis-detection 的recovery。

Structural Constraint

object的状态表示:1027162-20161130104132927-2067045163.png分别表示t帧中第i个目标的location,velocity,size。这里表示速度的符号和我们常用的不大一样,为了更好的理解全文,我们沿用文中的符号。 那么t帧中所有的目标状态集为1027162-20161130104133459-125364721.png,1027162-20161130104133693-535415444.png,1027162-20161130104134037-656063345.png是目标的个数。

任意两个目标之间的结构信息使用相对位置和相对速度来表示 1027162-20161130104134396-1525312727.png
1027162-20161130104134990-1184118812.png

损失函数
关联矩阵1027162-20161130104135287-1334640537.png,1027162-20161130104135693-1963232553.png分别表示目标和检测的个数,t时刻检测量的状态表示为1027162-20161130104135974-913664178.png,1027162-20161130104136224-915801419.png表示所有的检测量,那么数据关联问题可形式化如下:

1027162-20161130104136537-1689009248.png

显然约束的第一项保证每一个观测量最多只对应一个object,第二项保证任一个目标要么对应唯一一个观测量,要么mis-detected,最后一项显然最差情况下目标都被漏检。

为了适应相机发生较大移动的情形,文中认为在连续帧图像中目标之间的相互结构关系不会发生太大变化,于是就将结构信息加入到了数据关联的损失函数中了,希望assignment能够保持结构信息。在assignment过程中,先匹配一对目标与观测量,称为锚点,锚点对齐之后利用结构信息匹配剩余的目标和观测量,这样最终计算出损失。使损失最小的assignment就是得到的关联矩阵了。

1027162-20161130104136927-1577466658.png

这个式子我觉得理解的有问题,我认为1027162-20161130104137271-1621633034.png应该是一个集合,是所有可能的assignment的loss的集合,然后寻找最小loss对应的assignment。所以不应该有前面的求和符号吧,而应该补充1027162-20161130104137584-407490699.png
式子中第一项1027162-20161130104137896-1623514955.png表示对应的锚点1027162-20161130104138209-2027054156.png,其相异性1027162-20161130104138552-1252357246.png分别表示size和appearance上的相异性

1027162-20161130104138927-83677261.png

计算size相异性,1027162-20161130104139209-457362106.png分别对应目标和observation的高和宽,计算表观的非相似性时使用的是巴氏距离,根号里面表示直方图分布。

1027162-20161130104139490-1289487902.png表示锚点1027162-20161130104139802-108330754.png匹配后,1027162-20161130104140131-1525104421.png之间的相异性。

1027162-20161130104140615-1677060283.png

上面1027162-20161130104141146-1164643974.png下的第三项就是添加结构约束下位置的相异性

1027162-20161130104141490-1287996928.png

上面1027162-20161130104141849-1177273363.png是将1027162-20161130104142302-407690432.png1027162-20161130104142677-271706386.png间的相对关系转移到以1027162-20161130104143052-938723629.png对齐1027162-20161130104143443-1882632156.png的空间上,然后计算1027162-20161130104143724-1738069262.png和待匹配的1027162-20161130104143959-1984200882.png之间的非相似性,相似性使用的是overlap ratio。1027162-20161130104144209-1135813114.png是指box bounding。

Event Aggregation

使用上面的loss function能够找到最终的assignment,但是需要注意的是对于同一个assignment,如果选择不同的锚点对,那么得到的损失值也是不相同的。比如目标(a,b,c)和观测(1,2,3),对于同一个匹配(a,1),(b,2),(c,3),我们在对齐(a,1)时不能保证后两对对齐,同样的对其其他对时也不能保证剩余的对对齐。为了更加客观公正的评价assignment,文中将属于同一个assignment的不同锚点对条件下的损失聚合起来,然后使用均值后的损失评价该assignment的损失

对于某个Assignment,

1027162-20161130104144537-237500501.png

注意这个式子和(2)是不一样,前面求和下有1027162-20161130104144818-1030825316.png的约束表示该assignment对齐1027162-20161130104145099-980920109.png

1027162-20161130104145349-332623508.png

这里使用匹配的点对数计算均值,以方便进行对比。

上面两个过程可以通过下图来理解

enter description here

1480427585856.jpg

看到前面的时候我就疑惑,遍历所有的assignments应该是NP-hard问题吧,不可能实现啊?!所以文章中给出了一种简单有效的event initialization and reduction方法。

首先采用门限策略,限制能够匹配的点对

1027162-20161130104147849-1351259929.png

不符合条件的点对保持1027162-20161130104148302-1063585082.png,这样就会剔除好多assignments。
进一步对点进行划分成较小区域,使得区域之间不可能存在关联,那么只需要遍历小区域内的assignments,找到最优的assignments之后在组合起来形成大的assignment,当然在partition的过程中,structural constraint也被划分。文中将每一个划分中目标的个数限制在5以内,那么最多的assignments应该是5!(不考虑mis-detected),划分的方法可以采用基于距离的Kmeans方法。

initialization and reduction过程如下图所示

enter description here

1480428292502.jpg

Event Aggregate算法如下

enter description here

1480428341815.jpg

Two-Step Online MOT

假设: Since the structural constraints of objects tracked in the previous frame have been also updated with their corresponding detections, their constraints are more robust robust than mis-detected objects. 所以使用structural constraints 能够在一定程度上缓解mis-detected的误差。

所以文中方法将MOT分为两个步骤:数据关联和恢复mis-detected objects。其过程见算法2

enter description here

1480469315393.jpg

数据关联使用的是前面提到的event aggregate的方法,现在来说说漏检的目标怎么恢复的。

什么叫做漏检目标恢复?如果有一个目标在t-1时刻检测到了,t时刻没有检测到,而t+1时刻又检测到了,我们称该目标t时刻漏检,t+1时刻恢复。这么看来,对于之前检测到的目标,而当前没有检测到的目标都应该保存其状态,以备下次恢复,这就会导致大量内存的占用,所以文中限定了漏检帧的帧数,超过一定阈值就认为对应轨迹终止,后面会讲到。这里先来看如何恢复漏检目标。

在前一帧中检测到的目标记为1027162-20161130104150881-2108116654.png,没有找到对应匹配的目标集1027162-20161130104151177-846192230.png,1027162-20161130104151443-841952368.png中对应的structural constraint表示为1027162-20161130104151771-1360313817.png,匹配的目标集和未匹配样本的structural constraint记为1027162-20161130104152256-746813508.png,当前的检测集为1027162-20161130104152521-1600076377.png.
首先可以使用前面提到的structural constraint event aggregate(SCEA)对1027162-20161130104152865-1417651750.png1027162-20161130104153146-1528312174.png进行关联,记录下关联的点,更新目标状态1027162-20161130104153396-615425703.png,(我觉得size同样应该保存)。那些没有关联的观测量以及虚点1027162-20161130104153599-1797019573.png的集合记为1027162-20161130104153834-296554651.png.mis-detected objects的恢复就是指通过结构约束和已经匹配的点1027162-20161130104154084-186391192.png找到1027162-20161130104154349-1728440452.png1027162-20161130104158162-1791700070.png中的匹配关系。
理一理时序关系:1027162-20161130104158506-1004245245.png是t-1时刻的量,1027162-20161130104158849-1089868233.png是t时刻的量,1027162-20161130104159209-1285737595.png是t+1时刻的量。所以1027162-20161130104159412-1280570609.png在t-1时刻漏检了。

1027162-20161130104159662-975884170.png

其中1027162-20161130104159881-1594777657.png分别对应1027162-20161130104200177-683176023.png的基数

1027162-20161130104200396-576330324.png

发现(12)式和(3)式的不同点在于(12)式没有指定锚点,这是因为匹配misdetected objects是在已经获得一定量的关联点条件下进行的,所以所谓的锚点存在于1027162-20161130104200709-707009914.png1027162-20161130104200927-1820546211.png中。

前两项分别是size和appearance的相异性,不赘述了。看看structural constraint怎么嵌入进去的

1027162-20161130104201177-859734376.png

这个式子我们能够看到1027162-20161130104201459-1101156363.png其实是和1027162-20161130104202052-412508933.png相对变化最小的以匹配成功的目标,以1027162-20161130104202271-1579225359.png为锚点的情形下计算1027162-20161130104202490-799643638.png的相异性。

对C的可以使用匈牙利算法求解
1027162-20161130104202740-1437025109.png其中1027162-20161130104202974-1772304767.png分别对应匹配点的相异性和漏检的相异性。

综上,当前时刻的关联关系为1027162-20161130104203381-463717284.png. 得到匹配后的点之后,为了轨迹的光滑,可以使用kalman filter对每一个轨迹进行滤波操作。

同样的此时可以使用kalman 滤波对当前objects 的structural constraint进行滤波,以备下一帧使用。

轨迹的起始和终止,任何一个MOT方法都应该能够处理新轨迹的诞生和轨迹的终止。在本文方法中:
轨迹诞生:如果当前未匹配的detections和过去几帧中的所有未匹配点的距离(size和appearance)都大于一个阈值,就认为这个detection是新出现的点,为其分配存储位置以及对应的structural constraint
轨迹终止:如果一个目标连续两帧没有关联到detections,就认为其代表的轨迹终止

Experiments

enter description here

1480472630478.jpg

AR: average rank

TC_ODAL: Robust online multi-object tracking based on tracklet confidence and online discriminative appearance learning, CVPR2014
RMOT: Bayesian multi-object tracking using motion context from multiple objects, WACV2015
NOMT-HM: Near-online multi-target tracking with aggregated local flow descriptor, ICCV2015
ODAMOT: Online Domain Adaptation for multi-object tracking, BMVC2015.
MDP: Learning to track: Online multi-object tracking by decision making, ICCV2015

代码正在获取中。。。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值