zoukankan      html  css  js  c++  java
  • 基于张量秩一分解的多目标跟踪方法

    基于张量秩一分解的多目标跟踪方法

    读‘X. Shi, H.Ling, J.Xing, W.Hu, Multi-target Tracking by Rank-1 Tensor Approximation[J],CVPR,2014’笔记

    这篇文章利用了张量的秩一分解建模了多目标跟踪中的data association问题。

    首先我们了解下张量的基本知识

    张量

    张量是向量的推广,阶张量表示为,每一个元素表示为.

    张量的n模积:张量与矩阵的n模积表示为,得到的是新的张量.

    显然,当张量与向量进行n模积时,新的张量的阶数就减少一阶。

    秩一张量:如果一个K阶张量能够表示成K个向量的外积,那么该向量称为秩一张量,即

    张量的近似秩一分解:对于K阶张量,寻找K个单位向量和尺度因子,使重构误差

    最小,则称之为张量近似秩一分解。

    ,那么上述最小化问题转化为

    因为都是单位向量,所以,于是.
    那么等价于

    这里表示点乘.

    所以张量的近似秩一分解问题就转化为下面的最大化问题

    Multi-Dimensioanl Assignment (MDA)

    那么张量和多目标跟踪有毫子关系呢?我们先来看看多维数据关联的目标式

    这里面呢其实是用来给不同的轨迹标号的,表示第一帧中的第个目标在该轨迹上。

    将轨迹线表示成下面的形式更容易理解

    就表示前后两帧中目标的关联,

    考虑到关联匹配中都是非负变量,我们将(2)式写成类似于(1)式的形式

    这里的是对两帧之间的关联进行的重新编号,如下图所示。

    enter description here

    1477145036424.jpg

    所以(3)式和(1)式的不同点就在于约束条件的不同,张量的秩一分解中要求是单位向量,而(3)式中要求得到的满足对应的关联矩阵的每行每列的单位范数。

    文中给出了一种单位范数约束的张量近似迭代算法,如下

    enter description here

    1477145485732.jpg

    并且给出了算法的收敛性证明,我觉得这点很重要~

    enter description here

    1477145603758.jpg

    enter description here

    1477145652159.jpg

    而(3)式中要求的是行列分别单位化,所以这里对算法进行稍微的修改,在每一次更新后对所对应的矩阵进行行列的单位化,下面给出了具体算法,其实能发现算法5和算法4除了归一化方式不一样,其他都一毛一样。

    enter description here

    1477146182293.jpg

    这里对应着第n个关联集合中的第个关联。对应的是,对应的是所对应的关联矩阵。


    基于张量近似的多目标跟踪算法

    在实际应用中,对视频进行分批处理,当然批之间存在部分时间重叠,每一批使用算法5得到轨迹段,然后通过重复的点实现轨迹段的串接,形成更长的轨迹。

    enter description here

    1477146432065.jpg

    张量的构建

    算法已经有了,现在问题就是张量的构建问题了,其元素项表示由连续的两帧轨迹假设组成的全局关联假设所对应的能量。

    文中给了两种组织形式,分别类似于两帧匹配问题和网络流优化问题。

    如果将轨迹的全局能量表示成局部两帧关联的能量之和,那么求解问题就转化为求解K个两帧匹配问题的最优解

    其中表示第i帧中目标的个数。

    如果将轨迹的全局能量表示成局部两帧关联的能量之积,那么求解问题就和网络流的优化形式相似。

    关联假设的产生

    实际应用中相邻帧之间的目标往往距离较近的才可能存在关联关系,所以为了降低张量的大小,可以对关联加上区域约束,即目标仅可能与一定范围内的下帧中目标产生关联。

    对于目标的遮挡、进入和离开问题,论文中引入了虚拟目标的概念。虚拟目标没有实际的物理意义例如位置、表观等,其作用是将孤立的目标引导出去,避免干扰存在真实关联的目标。对每一帧中每个目标的检测,都在相邻帧中设置一个对应的虚拟目标。

    算法的初始和终止

    三种初始方案:

    1. 所有的局部关联均等

    2. 权值初始化,按照关联的强度赋予不同的权重

    3. 决策初始化,先用匈牙利算法进行两帧关联,然后对结果进行扰动(这里要保证, 0-1将使算法陷入静态点)
      初始化之后必须行列规范化

    两种终止方案:

    1. 满足最大迭代次数

    2. 相邻迭代能量变化微小

    后续处理:
    因为最终输出要求是0-1值,所以要对近似张量分解得到的结果进行二值处理,这个时候可以采用匈牙利算法寻找使全局轨迹概率最大的轨迹。

    分析与总结

    论文的主要创新点在于将MDA(multi-dimensional association)问题放到了张量的近似秩一分解的框架中,通过对张量的分解来获得相邻帧之间的关联关系。

    由于标准的张量秩一分解中基向量要求规范化的,而在MDA问题中的约束是对应的关联矩阵行列都是规范化的,所以论文中给出了一种迭代算法,并通过证明算法每一步都能够使目标函数上升推断出算法是收敛的(单调有界)。

    接下来我们来看一看该模型是怎么包括MTT中待解决的几个要素的。

    1. 观测变量与状态变量。该模型直接使用的是观测变量,也就是说仅仅是将检测到的变量进行MDA,并不能保证跟踪结果的光滑等特性

    2. 动态模型。这部分内容主要包括运动的惯性问题,体现在张量的构建中,论文中给出的体现了这部分内容

    其中

    其中分别表示该轨迹上k,k+1帧目标的速度矢量,显然第一项表示速度方向差异,第二项表示速度大小差异。

    1. 表观模型。显然相邻帧中同一目标应该是变化缓慢的,(4)式中则表示的是表观相似性。

    其中第一项计算的是直方图的交,第二项刻画的关联目标的面积大小相似性。

    1. 遮挡

    2. 轨迹开始与终止
      论文中仅仅在两帧关联时添加了一个虚拟节点,用来处理遮挡、轨迹开始和轨迹终止。
      个人觉得这里处理的太粗糙,没有考虑到目标被遮挡程度的问题,也没有说明什么情况下认为是漏检,什么情况下是轨迹终止,更重要的是没有说明什么情况下认为是轨迹的开始,因为不能保证第t帧结束的轨迹与第t+1帧的虚拟目标和第t+1帧新进入的目标谁的关联性更大。

    Note. 论文中的算法可以并行处理。且算法中将的行列规范化松弛成规范化进行软决策,能够减少引入关联误差的风险。

  • 相关阅读:
    Weblogic任意文件上传漏洞(CVE-2018-2894)复现
    Angular动态创建组件之Portals
    nodejs 开发企业微信第三方应用入门教程
    系列文章|OKR与敏捷(三):赋予团队自主权
    Angular开发技巧
    系列文章|OKR与敏捷(二):实现全栈敏捷
    系列文章|OKR与敏捷(一):瀑布式目标与敏捷的冲突
    OKR与Scrum如何强强联手
    Service Worker
    RxJS 实现摩斯密码(Morse) 【内附脑图】
  • 原文地址:https://www.cnblogs.com/YiXiaoZhou/p/5990097.html
Copyright © 2011-2022 走看看