Multi-target tracking by Lagrangian relaxation to min-cost network flow

high-order constraints
min-cost network flow
multi-target tracking

读 “Multi-target tracking by lagrangian relaxation to min-cost network flow, CVPR,2013”小结。

昨晚老板让看一下这篇文章写几句总结给他,所以就看了看,今天顺便简单总结一下这篇文章。

这篇文章模型的核心依然是网络流算法,但和一般网络流算法不同点在于:一般方法在构建图时直接将每一个observation作为node,而observation之间的相互关系使用edge表示,这样每个edge表示的时相连node之间的相似度或者关联程度;而这篇文章所提模型中,在构建图时使用的是candidate pair作为node,然后pair of candidate pairs之间存在这edge,通过这种方式,能够将连续三帧之间的高阶信息,比如连续三帧之间速度近似恒定,融入到模型中。而正是由于不同的构图方式,导致必须引入一些附加的约束以满足多目标跟踪中 track-detection之间的一对一关系。对于提出的模型,通过适当的拉格朗日松弛可以转化为一般的网络流算法有效求解。

illustrative overview of proposed graph representation

使用一个简单的例子清楚的阐述了模型的构图方式。

假设现在有连续的三帧图像的observations。第一帧有3个表示为1,2,3,第二帧有两个表示为4,5,第三帧3个表示为6,7,8.一般网络流算法的构图方式如下(这里没有添加源点和汇点)

Fig1.jpg

每条edge的流量是一个二值变量, 网络流显然应该满足流量守恒约束,每条edge上的代价即相连两个不同帧间observations的匹配程度,然后可以使用最小费用流算法求解模型。

上面模型中每条edge上的代价仅仅描述了两帧的相连observations之间的匹配程度,而MTT问题中更高阶的信息往往更加有用。于是作者提出了下面这种构图方式

Fig2.jpg

表示observations i 和j之间的连接关系,比如表示observations 1和4之间的连接关系。将连续两帧之间可能存在的匹配作为nodes,比如1,2两帧和2,3两帧的可能匹配都抽象为nodes,然后不同帧间的匹配如果存在公共点,则两个匹配之间存在edge,比如1,2两帧之间的匹配和2,3帧之间的匹配之间就存在edge。这样每个edge的cost就是两个匹配之间的相似度,匹配的信息可以包括连接的observations的相对速度和表观差异,这样edge的cost就可以包含相连三帧之间的observations的高阶信息。

MTT中一般假设(当然现在好多方法去掉了这个约束):一条轨迹在任一帧中只能匹配一个observation,同样一个observation只能对应一条轨迹。所以提出的模型中就要对nodes添加额外约束以解决nodes之间的耦合关系,即上图中彩色连线连接的nodes,只能多选一,比如,由于两个都经过observation 1,为了满足一一对应约束,必须只能二选一。

problem formulation

形式化表述模型。

现有长度为的图像序列,第帧中有个observations,其集合表示为, 表示第k帧的第i个目标。

相邻帧之间可能的匹配对是一个二元组,表示为,这些可能的匹配可以由表观相似度,距离相似度等获得。 帧k与k+1之间所有可能的匹配个数表示为,其集合表示为。 那么整个序列中nodes个数为,其总的集合表示为.

由图2进一步细化的图如下:G=(V,E),其中V包含源点s和汇点t,以及每一个match链接的两个observations,称为incoming node和outgoing node。.

将每个match表示成两个nodes有两个好处:

1.由于每条边的流量最大为1和流量平衡约束,那么离开outgoing点的流量最多只能为1,因为只有一条进入的link

2.这么做可以将一般网络流算法中unary和binary约束直接添加到match内部的link上,而高阶信息都放在了match与match之间deges上了。

Fig3.jpg

注意这里一直在说连续3帧图像,起始强调3帧只是为了融合高阶信息。像遮挡这种问题就不一定非要是连续帧,通过非连续帧构造类似的图一样可以求解。

整个模型表示如下

其中表示边ij的代价,(1)表示最小代价,(2)表示二值约束,(3)表示流量平衡约束,(4)表示附加的用于一一对应的约束。(1)(2)(3)就是一般的网络流算法模型,针对于约束(4),表示第s个由outgoing和incoming点重合的matches构成的集合,整个序列总共有q个这种集合。

为了求解该模型,将约束(4)通过拉格朗日松弛放到目标式中,然后就可以转换为一般的网络流算法模型进行求解。

其中表示拉格朗日乘子

stopping criteria

因为一些约束可能本身过强,始终不可能满足,所以迭代过程可能一直不收敛,这是采用限制最大迭代次数的方式终止算法。

对迭代得到的结果进一步后处理:

  1. 连接选中的matches组成tracks

  2. 将存在冲突的track拎出来放到一个“competing tracks”的list中

  3. 在conflicted tracks中选择lowest cost的track作为正确的track取出

  4. 针对于conflicted tracks剩下的tracks,剔除冲突的match看其是否依然能够满足轨迹的条件,比如前后光滑,长度等,满足则创建新的轨迹,不满足就扔掉。

Experiments

文中分别在psu,TUD和ETHMS数据库上进行了实验,具体实验结果参见论文。

conclusion

1.该模型相对于一般的网络流算法使用了更高阶的信息

2.但这里的更高阶也仅仅是3阶的信息,现在有一些利用更高阶信息的方法提出,比基于如张量秩一近似的多目标跟踪。

3.模型通过拉格朗日松弛可以有效的转化为一般的网络流算法求解。

4.针对于算法不收敛的情形,采用了一种贪婪算法作为强制算法结束的补

Multi-target tracking by Lagrangian relaxation to min-cost network flow的更多相关文章

  1. min cost max flow算法示例

    问题描述 给定g个group,n个id,n<=g.我们将为每个group分配一个id(各个group的id不同).但是每个group分配id需要付出不同的代价cost,需要求解最优的id分配方案 ...

  2. LeetCode算法题-Min Cost Climbing Stairs(Java实现)

    这是悦乐书的第307次更新,第327篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第176题(顺位题号是746).在楼梯上,第i步有一些非负成本成本[i]分配(0索引). ...

  3. [Swift]LeetCode746. 使用最小花费爬楼梯 | Min Cost Climbing Stairs

    On a staircase, the i-th step has some non-negative cost cost[i] assigned (0 indexed). Once you pay ...

  4. Geeks面试题:Min Cost Path

    Min Cost Path   Given a cost matrix cost[][] and a position (m, n) in cost[][], write a function tha ...

  5. Min Cost Climbing Stairs - LeetCode

    目录 题目链接 注意点 解法 小结 题目链接 Min Cost Climbing Stairs - LeetCode 注意点 注意边界条件 解法 解法一:这道题也是一道dp题.dp[i]表示爬到第i层 ...

  6. Leetcode 746. Min Cost Climbing Stairs 最小成本爬楼梯 (动态规划)

    题目翻译 有一个楼梯,第i阶用cost[i](非负)表示成本.现在你需要支付这些成本,可以一次走两阶也可以走一阶. 问从地面或者第一阶出发,怎么走成本最小. 测试样例 Input: cost = [1 ...

  7. 746. Min Cost Climbing Stairs@python

    On a staircase, the i-th step has some non-negative cost cost[i] assigned (0 indexed). Once you pay ...

  8. LN : leetcode 746 Min Cost Climbing Stairs

    lc 746 Min Cost Climbing Stairs 746 Min Cost Climbing Stairs On a staircase, the i-th step has some ...

  9. LeetCode 746. 使用最小花费爬楼梯(Min Cost Climbing Stairs) 11

    746. 使用最小花费爬楼梯 746. Min Cost Climbing Stairs 题目描述 数组的每个索引做为一个阶梯,第 i 个阶梯对应着一个非负数的体力花费值 cost[i].(索引从 0 ...

随机推荐

  1. jquery一句话实现快速搜索功能

    jquery一句话实现快速搜索功能 //快捷搜索公共方法,其中obj为显示行的子节点function filter(obj, filterNameValue){ $(obj).hide().filte ...

  2. 汽车变智能只靠ADAS?麦克风也是主角

    在先进驾驶辅助系统(ADAS)中,结合视觉处理器的CMOS影像感测器已在协助汽车辨识与分类方面发挥关键作用.至于其“听觉”呢? 麦克风也能扮演像摄影机般重要的角色,为自动驾驶车增添更多“智慧”功能吗? ...

  3. Docker 的 Web 管理工具 DockerFly

    Dockerfly是基于 Docker1.12+ (Docker API 1.24+) 开发出Docker 管理工具,提供里最基本的基于 Docker 的管理功能,目的是能够方便广大Docker初学者 ...

  4. 干货:Java并发编程系列之volatile(二)

    接上一篇<Java并发编程系列之synchronized(一)>,这是第二篇,说的是关于并发编程的volatile元素. Java语言规范第三版中对volatile的定义如下:Java编程 ...

  5. gcc5.2版本安装详解

    gcc5.2版本安装详解 1.下载gcc-5.2安装包 gcc各版本浏览地址:http://ftp.gnu.org/gnu/gcc/gcc-5.2浏览地址:http://ftp.gnu.org/gnu ...

  6. 20145317彭垚《网络对抗》Exp7 网络欺诈技术防范

    20145317彭垚<网络对抗>Exp7 网络欺诈技术防范 基础问题回答 通常在什么场景下容易受到DNS spoof攻击? 在同一局域网下比较容易受到DNS spoof攻击,攻击者可以冒充 ...

  7. AS语法

    SELECT COUNT(*) AS NumberOfOrders FROM Orders 含义:将选出的数据作为一列显示,列名为NumberOfOrders

  8. topcoder srm 620 div1

    problem1 link 分别计算可以得到(a,b)的有哪些二元组,以及可以得到(c,d)的有哪些二元组.然后在公共的二元组中找到和最大的即可. problem2 link 设最后的排序为$r=[2 ...

  9. Python3基础 list 查看filter()返回的对象

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  10. Linux必备知识

    一.Linux命令行常用快捷键 在企业工作中,管理Linux时—般不会直接采用键盘.显示器登录系统,而是会通过网络在远程进行管理,因此,需要通过远程连接具连接到Linux系统中.目前最常用的Linux ...