《Online Multi-Target Tracking Using Recurrent Neural Networks》阅读笔记及理解
《Online Multi-Target Tracking Using Recurrent Neural Networks》2017 AAAI
阿德莱德大学和ETH
这篇文章是首次用RNN实现端到端的追踪。(2016年的AAAI是第一篇用RNN作追踪的文章,尽管效果很好,但是它用的是几乎完美的传感器数据,目标数目已知,且运动平滑、线性。)
本文应该是目前网上能搜到这篇文章最全面的阅读笔记了,文末有自己的理解。

摘要:
我们提出了一个基于RNN的在线多目标追踪方法,在线追踪有许多挑战:目标数未知;对目标的连续状态估计;数据关联的方法。我们的解决方案以原则性的方式解决上述所有问题。
第一章 介绍
- 我们的贡献如下:
(1)受贝叶斯滤波思想的启发,我们提出了一种能够在统一的网络结构中完成预测、数据关联、状态更新以及目标起始和终止等多目标跟踪任务的循环神经网络。这种方法的主要优点之一是model-free,即不需要任何关于目标动力学、杂波分布等的先验知识。因此,它可以捕捉线性(卡尔曼滤波)、非线性(粒子滤波)和高阶相关性。
(2)我们展示了包括目标的初始化和结束的数据关联问题可以完全从数据中学到。这种时变基数分量证明了利用RNNs不仅可以预测具有固定大小的输入和输出向量的序列,而且事实上还可以推断具有未知基数的无序集(即人数不确定)。
(3)我们提出了一种从生成模型中取样生成任意数量训练数据的方法
(4)模拟和实际数据的定性和定量结果显示了令人鼓舞的结果,证实了该方法的潜力我们坚信,这将激励其他研究人员提出扩展的想法,并进一步提高性能。
第三章 背景知识
- (这里只补充一下贝叶斯滤波)
在Bayseian滤波中,目标是从噪声测量z估计真实状态x。在马尔可夫假设下,时刻t的状态分布包含了之前的测量值,可以被递归表示为:

其中,∝表示“正比于”。
表示t时刻的观测概率,
是状态转移概率。
公式(2)分两步评估:**评估状态的预测步骤和基于当前测量值修正状态概率的更新步骤 。**解上述方程最常用的两种方法是卡尔曼滤波(Kalman 1960)和粒子滤波。前者在状态和测量模型的线性和高斯假设下进行精确的状态估计,而后者采用序贯重要性抽样近似任意分布。在处理多个目标时,其中一个面临另外两个挑战。1)在执行状态更新之前,确定哪些测量与哪些目标相关至关重要。已经提出了许多算法来解决这个数据关联问题,包括简单的贪婪技术和复杂的概率方法,如JPDA。2)为了允许目标的时变数量,有必要提供一种机制来生成进入场景的新目标,并移除不确定地消失的现有目标。与数据关联一样,这项任务也很重要,因为每个未分配的度量值都可能是新轨迹的开始或是错误警报。相反,对某个目标缺少测量可能意味着目标出现消失,或者检测器出错。为了应对这一挑战,在线跟踪方法通常根据考虑连续测量误差数量的启发式方法来决定轨迹的出生和死亡。
第四章 我们的方法
序言和符号
(这部分公式符号很多,插入太麻烦,直接截图了)

RNN的多目标追踪
如上所述,我们将问题分解为两个主要模块:一方面是状态预测和更新,还有跟踪管理,另一方面是数据关联。
2.1 Target Motion
让我们首先讨论状态预测和更新我们依靠图2(左)所示的时间RNN来学习目标的时间动态模型以及确定目标的出生和死亡的指标。在t时刻,RNN为下一时刻输出4个值:


这个构建块有三个主要目标:
预测:学习在没有测量的情况下预测目标运动的复杂动态模型。(先验)
更新:学习修正状态分布,给目标分配观测值。(后验,给目标分配轨迹ID)
初始化/消亡:学习根据状态、测量和数据关联来识别跟踪的起始和终止。
下图是最关键的一张图了。

整个过程就如上图所示,上面是输入,下面是输出。
2.2损失函数
设计一个MOT损失函数远非易事,它跟具体的MOT应用场景有关。例如,在自动驾驶领域,保持高准确和高recall很重要;在体育分析领域,避免ID交换更重要,MOTA不错,但是它不可微分,没法用于网络中。因此,我们设计了下面的损失函数:

符号上带波浪线的都是真实值,不带的是预测值。为了更好叙述,我们忽略了时间下标。实际上,一个训练样本的损失是在序列中的所有帧上平均的。
损失函数分为四个部分,我们先看前两个部分。假设目标数目是固定的,我们的目的是学习一个网络可以预测轨迹,并且要尽可能的接近真实轨迹。那么,它既可以在没有观测值的情况下预测轨迹,也可以根据新的观测值修正轨迹。为此,我们用MSE(均方误差)来最小化状态预测、更新与真实轨迹的误差。
2.3 初始和终止
为了表述轨迹的初始和终止,我们定义了变量
来在每一时刻表述随时间变化的目标是否存在的概率,1表示存在,0表示不存在。在测试过程中,我们会丢弃小于阈值的目标。(我们实验中设为0.6)
2.4 损失函数
公式(3)损失函数的后面两部分用来学习预测在给定时刻上目标是否存在。这对于目标的启动和终止是必要的。这里我们使用二元交叉熵损失:


Data Association with LSTMs
关于数据关联问题,贪婪算法是有效的,但通常不会产生好的结果,特别是在有杂波和遮挡的拥挤场景中。像JPDA这样的方法考虑所有可能的分配假设,这导致了一个NP难的组合问题。因此,在实践中,必须使用有效的近似。
在本节中,我们将描述一个基于LSTM的体系结构,该体系结构能够完全从训练数据中学习解决此任务。这多少有些令人惊讶,原因有很多。首先,联合数据关联通常是一个高度复杂的离散组合问题。其次,输出空间中的大多数解只是输入特征的相互置换。最后,任何可能的赋值都应满足一对一约束,以防止将同一度量赋值给多个目标。我们认为,LSTM的非线性变换及其强大的记忆成分是有效学习所有这些挑战的主要驱动力。为了支持这一观点,我们以复制线性指派问题为例,证明了基于LSTM的数据关联的能力
其主要思想是利用LSTM的时间分步功能来预测每个目标的分配。在每个步骤i中,隐藏状态hi和单元状态ci旁边的输入是整个特征向量。(这几句不知怎么翻译)

输出结果包含A矩阵,Ai,即A的第i行,表示第i个目标和所有可能的观测值的关联性。
3.1 损失函数
为了度量误分配成本,我们使用了常见的负对数似然损失

其中带波浪线的是真实的分配。Aij表示目标i分配给观测值j的可能性。
训练数据
MOT的数据很少。为此,我们首先从每个训练序列中学习一个轨迹模型。为了简单起见,我们只估计两个特征的均值和方差:起始位置x1和该序列中所有标注轨迹的平均速度v。
(实验,训练过程略,看图4就够了)
总结
提出了一种在神经网络环境下解决数据关联和轨迹估计问题的方法。据我们所知,这是第一种采用递归神经网络来解决在线多目标跟踪问题的方法我们证明了基于RNN的方法可以用来学习现实环境中的复杂运动模型。第二个有点令人惊讶的发现是,LSTM网络能够学习一对一的分配,对于这样的架构来说,这是一项非常重要的任务我们坚信,通过合并外观和学习一个更健壮的关联策略,可以显著提高结果。
以下是自己第一遍阅读论文时的疑问与第二遍的解答,帮助理解贝叶斯滤波思想在本文的应用。
问题一:
X _表示预测值,z表示观测值,即目标检测的检测框位置,那么x表示什么?
答:我想x是表示一种状态,抽象的状态我也说不出是什么,总之按照贝叶斯滤波的逻辑,先由上一帧的状态x得到下一帧的预测值x_t+1,这一步是由先验知识得到的,称为预测;然后在经过目标检测器得到zt+1,即这一帧的观测值。
注意,X的维度是N _D,其中D是表示四个坐标值,N表示已有的轨迹数目。
而Z的维度M_D,M是每一帧的最大检测Bbox数目。
那么,A矩阵的维度就可以解释了
,即对每一条轨迹,分配给它的当前帧的所有Bbox(观测值)对应的概率。(+1的意思我猜是不匹配任何Bbox),然后对一条轨迹,这一行的所有分配概率和应该是1.
那么,我们根据论文内容可以猜测,target意思应该是代表“轨迹”。
的意思也可以得到解释,即代表每条轨迹是否还存在(初始或消亡),维度是N(轨迹数目)。
问题二:
怎么初始化一条轨迹?N是规定值吗?
答:文中没说
问题三:
LSTM的作用?
答:LSTM的输入是C矩阵,这是一个距离矩阵,
,即更新后的状态值与观测值之间的欧氏距离。根据这个距离矩阵得到最终的分配矩阵,即对每一轨迹分配当前帧的Bbox。
对每一条轨迹都使用一个LSTM,LSTM是沿着时间维度,沿着视频帧向前更新的。
对每一帧使用RNN,RNN也是沿着时间维度,但它是以一帧为一个单位,与LSTM以轨迹为单元不同。
参考文献:
