Multi-target tracking by Lagrangian relaxation to min-cost network flow
Multi-target tracking by Lagrangian relaxation to min-cost network flow
读 “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.一般网络流算法的构图方式如下(这里没有添加源点和汇点)

每条edge的流量是一个二值变量, 网络流显然应该满足流量守恒约束,每条edge上的代价即相连两个不同帧间observations的匹配程度,然后可以使用最小费用流算法求解模型。
上面模型中每条edge上的代价仅仅描述了两帧的相连observations之间的匹配程度,而MTT问题中更高阶的信息往往更加有用。于是作者提出了下面这种构图方式

表示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上了。

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

其中表示边ij的代价,(1)表示最小代价,(2)表示二值约束,(3)表示流量平衡约束,(4)表示附加的用于一一对应的约束。(1)(2)(3)就是一般的网络流算法模型,针对于约束(4),
表示第s个由outgoing和incoming点重合的matches构成的集合,整个序列总共有q个这种集合。
为了求解该模型,将约束(4)通过拉格朗日松弛放到目标式中,然后就可以转换为一般的网络流算法模型进行求解。

其中表示拉格朗日乘子
stopping criteria
因为一些约束可能本身过强,始终不可能满足,所以迭代过程可能一直不收敛,这是采用限制最大迭代次数的方式终止算法。
对迭代得到的结果进一步后处理:
连接选中的matches组成tracks
将存在冲突的track拎出来放到一个“competing tracks”的list中
在conflicted tracks中选择lowest cost的track作为正确的track取出
针对于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的更多相关文章
- min cost max flow算法示例
问题描述 给定g个group,n个id,n<=g.我们将为每个group分配一个id(各个group的id不同).但是每个group分配id需要付出不同的代价cost,需要求解最优的id分配方案 ...
- LeetCode算法题-Min Cost Climbing Stairs(Java实现)
这是悦乐书的第307次更新,第327篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第176题(顺位题号是746).在楼梯上,第i步有一些非负成本成本[i]分配(0索引). ...
- [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 ...
- Geeks面试题:Min Cost Path
Min Cost Path Given a cost matrix cost[][] and a position (m, n) in cost[][], write a function tha ...
- Min Cost Climbing Stairs - LeetCode
目录 题目链接 注意点 解法 小结 题目链接 Min Cost Climbing Stairs - LeetCode 注意点 注意边界条件 解法 解法一:这道题也是一道dp题.dp[i]表示爬到第i层 ...
- Leetcode 746. Min Cost Climbing Stairs 最小成本爬楼梯 (动态规划)
题目翻译 有一个楼梯,第i阶用cost[i](非负)表示成本.现在你需要支付这些成本,可以一次走两阶也可以走一阶. 问从地面或者第一阶出发,怎么走成本最小. 测试样例 Input: cost = [1 ...
- 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 ...
- 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 ...
- LeetCode 746. 使用最小花费爬楼梯(Min Cost Climbing Stairs) 11
746. 使用最小花费爬楼梯 746. Min Cost Climbing Stairs 题目描述 数组的每个索引做为一个阶梯,第 i 个阶梯对应着一个非负数的体力花费值 cost[i].(索引从 0 ...
随机推荐
- CentOS安装mysql并配置远程访问
最近上班挺无聊,每天就是不停的重启重启重启,然后抓log.于是有事儿没事儿的看卡闲书,搞搞其他事情. 但是,公司笔记本装太多乱其八糟的东西也还是不太好. 于是,想到了我那个当VPN server的VP ...
- C语言实现strlen函数的几种方法
原文地址:http://www.51testing.com/html/72/n-221172.html 传说常见的一个笔试题:不使用中间变量求const字符串长度,即实现求字符串长度库函数strlen ...
- Python Web学习笔记之socket套接字
套接字是为特定网络协议(例如TCP/IP,ICMP/IP,UDP/IP等)套件对上的网络应用程序提供者提供当前可移植标准的对象.它们允许程序接受并进行连接,如发送和接受数据.为了建立通信通道,网络通信 ...
- Python入门之面向对象module,library,package之间区别
背景 Python中有一些基本的名词,很多人,尤其是一些初学者,可能听着就很晕. 此处,简单总结一下,module,library,package之间的大概区别. Python中的module的简介 ...
- UVA12558 Egyptian Fractions (HARD version) (埃及分数,迭代加深搜索)
UVA12558 Egyptian Fractions (HARD version) 题解 迭代加深搜索,适用于无上界的搜索.每次在一个限定范围中搜索,如果无解再进一步扩大查找范围. 本题中没有分数个 ...
- MySQL 字符串拼接
MySQL 字符串拼接 在Mysql 数据库中存在两种字符串连接操作.具体操作如下 1. CONCAT(string1,string2,…) 说明 : string1,string2代表字符串,c ...
- html/jquery最实用功能与注意点
获取某元素的父元素 通常用在根据被click的td获取tbody时. parent是指取得一个包含着所有匹配元素的唯一父元素的元素集合.parents则是取得一个包含着所有匹配元素的祖先元素的元素集合 ...
- CentOS 7下搭建配置SVN服务器
CentOS 7下搭建配置SVN服务器 1. 安装 CentOS通过yum安装subversion. $ sudo yum install subversion subversion安装在/bin目录 ...
- 20145317彭垚 MSF基础应用
20145317彭垚 MSF基础应用 基础问题回答 用自己的话解释什么是exploit,payload,encode? exploit就相当于是载具,将真正要负责攻击的代码传送到靶机中,我觉得老师上课 ...
- 什么是BFC?
转载自知乎:https://zhuanlan.zhihu.com/p/25321647 一.常见定位方案 在讲 BFC 之前,我们先来了解一下常见的定位方案,定位方案是控制元素的布局,有三种常见方案: ...