回忆:Blob合并/拆分
当两个对象彼此靠近时,它们被检测为单个blob。通常,一个物体会被另一个物体挡住。其中一个具有挑战性的问题是在每一个对象再次分开后保持正确的标记。
数据关联
更一般地,我们寻求在帧之间匹配一组blob,以保持个体的连续性并生成轨迹。
数据关联场景
多帧匹配(将新帧中的观测值匹配到一组跟踪轨迹中)
如何确定哪个观测要添加到哪个轨迹?
跟踪匹配
直觉:预测每个跟踪轨迹上的下一个位置。
直觉:匹配应接近预测位置
直觉:有些匹配是非常不可能的
门控Gating
一种从一开始就不太可能进行几何匹配的修剪方法。允许我们将匹配分解为更小的子问题。
滤波框架
离散时间状态空间滤波
我们希望在每次接收到测量值时递归地估计当前状态。
两步法:
1) 预测:在考虑过程噪声的情况下,及时向前传播状态概率密度函数(平移、变换以及传播概率密度函数)
2) 更新:使用Bayes定理基于当前测量值来修正预测的概率密度函数
预测
卡尔曼滤波是一种常用的方法。
系统模型和测量模型是线性的。
噪声为零均值高斯分布
概率密度函数(pdf)都是高斯函数
1)系统模型
2)测量模型
卡尔曼滤波器
所有的概率密度函数(pdf)都是高斯函数(注:高斯分布的所有边缘分布都是高斯分布)
预测:
更新:
例子
更简单的预测/门限
恒定位置 + 最大帧间运动的限制
恒定位置预测
三帧恒定速度预测
旁白:相机运动
假设:只要我们首先补偿任何背景相机运动的影响,恒定速度目标运动模型就足够了。
将两帧之间一个目标的观测位移分解,分解为仅基于相机运动的分量和仅基于目标运动的分量
相机运动估计
方法:
用Lucas-Kanade算法(KLT)估计稀疏光流
估计场景图像运动的参数化模型(仿射变换)
注:这提供了一个低计算成本的图像变换和帧差分方法。
用于运动预测和变焦检测
目标运动估计
方法:补偿相机运动之后估计恒定速度
全局最近邻(GNN)
评估轨迹门限区域内的每一个观测。
选择 “最佳” 的一个融入轨迹。
a1j=观测 j 与轨迹1匹配的分数
可以基于欧几里德(Euclidean)或马哈拉诺比斯(Mahalanobis)距离预测位置(例如exp{-d2})。也可以基于外观的相似性(例如图像模板互相关性得分)
数据关联
我们好像一直在讨论我们的目标物体是点。(如果我们跟踪的是角点特征或雷达光点的话)。但我们的物体是团块blobs——它们是一个图像区域,并且有一个区域。
恒定速度:假设V(t) = V(t+1)
及时将目标区域向前映射以预测新区域。
数据关联
基于blob之间的特征相似度确定blob在帧间的对应关系。
常用特征:位置、大小/形状、速度、外观
例如:可以根据边界框重叠来测量位置、大小和形状相似性:
外观信息
图像模板的互相关性也是一个明显的选择(在帧之间)
通过颜色直方图的外观
整体的直方图尺寸为
比如,R、G和B通道的4位编码会产生的直方图大小为161616 = 4096
更小的颜色直方图
如果我们愿意接受颜色分辨率的损失,直方图信息可以小得多。
整体的直方图尺寸为
比如,R、G和B通道的4位编码会产生的直方图大小为 3*16 = 48
颜色直方图例子
比较颜色分布
给定n-bucket模型直方图{mi | i=1,…,n}和数据直方图{di | i=1,…,n},我们遵循Comanesciu、Ramesh和Meer*使用距离函数:
为什么用这个?
1) 它与Bayes误差概念共享最优性质
2) 它采用了度量结构
3) 它相对不变的对象大小(像素数)
4) 它适用于任意分布(不只是高斯分布)
Dorin Comanesciu, V. Ramesh and Peter Meer, “Real-time Tracking of Non-Rigid Objects using Mean Shift,” IEEE Conference on Computer Vision and Pattern Recognition, Hilton Head, South Carolina, 2000 (best paper award).
全局最近邻(GNN)
评估轨迹门限区域内的每一个观测。
选择 “最佳” 的一个融入轨迹。
ai1=观测 i 与轨迹1匹配的分数
选择最佳匹配 am1 = max{a11, a21, a31, a41}
数据关联示例 合并和拆分后
全局最近邻(GNN)
问题:如果对每个轨迹单独执行,可能会导致对相同观测值的竞争。
两个轨迹都尝试请求观测 o4
线性分配问题Linear Assignment Problem
我们在前一帧中有 N 个目标,在当前帧中有 M 个目标。我们可以建立一张匹配得分表格 m(i, j),i = 1…N 和 j = 1…M。现在假设M = N。
问题:选择一个 1-1 对应关系,使所有匹配得分之和最大化
分配问题
数学定义:给定 NxN 利益数组{Xai},确定 NxN 置换矩阵(permutation matrix) Mai,使得总分最大化 :
置换矩阵中每一列的和为1,每一行的和为1
置换矩阵确保我们只能从每行和每列中选择一个数字。
例子
5*5 匹配得分矩阵
从左到右操作,从每一列中选择一个数字,确保没有从已经选择了数字的行中选择数字。
我们有多少种方法可以做到这一点?
5 x 4 x 3 x 2 x 1 = 120 (N的阶乘)
贪心策略
流程:
选择最大的值并标记它
i = 1 到 N - 1
在未标记的行/列中选择下一个最大剩余值
结束
不如我们现在最好的猜测(下图)!
一些(可能的)解决方法
这是一个0-1整数线性程序的形式。可以用单纯形法求解。然而,差的(指数的)最坏情况的复杂性(0-1整数规划是NP难的)
一些(可能的)解决方法
在加权二部图中也可以被看作是最大匹配问题,而加权二部图又可以被看作是最大流问题。
回顾:软分配
我们将用一种有效的方法,叫做 软分配 SoftAssign,根据以下的工作:
J. Kosowsky and A. Yuille. The invisible hand algorithm: Solving the assignment problem with statistical physics. Neural Networks, 7:477-490, 1994.
主要概念:
• 将0,1约束放宽为 0<=Mai<=1
• 初始化 Mai=exp(B*score)。这确保了为正,并在(B接近无穷大)时传播分数
• 执行重复的行和列规范化以获得双随机矩阵(行和列总和为1)
在实际应用中,应采用迭代的方法来避免大B的数值问题。
为什么有用?考虑 SoftMax
Softmas是一种类似的算法,但只对单个数字向量进行操作。
exp() 函数的作用是确保所有数字都是正数(甚至负数通过 exp 会映射成正数;
随着B的增加,与最大元素相关联的mi接近1,而所有其他mi值接近0 。
软分配
在本例中,我们可以穷举搜索所有120个分配。
全局最大值确实是4.26
处理丢失的匹配
通常情况下,轨迹的数目与观测值数目不同。有些观测结果可能与任何轨迹都不匹配。有些轨迹可能没有任何观测。
引入一行一列的“松弛变量”以吸收任何外点误匹配。