Reference:
1.matlab关于多目标追踪的讨论:
https://www.mathworks.com/help/fusion/ug/introduction-to-multiple-target-tracking.html
1.多目标追踪做了什么?
多目标追踪可分为三步:检测、匹配、更新。
1)检测指使用一个或多个传感器从多个目标生成多个观测值。
2)匹配指如何将多个观测值分配给目标。
3)更新指使用观测值更新目标状态。
2.对于目标应该考虑什么?
考虑其数目与状态,所谓状态是指运动学相关的参数或属性,如速度、位置、航向角等。在参考资料里面常将目标表述为tracks,翻译一下就是轨迹,我在这里有一个疑问,就是为什么要用tracks来表征目标target?比如一个目标可能有大小,颜色,位置等特征值,为什么不选择这些呢?仔细一想,发现可以从静态和动态的角度来考虑,比如说大小和颜色等特征都是静态的,不需要进行更新,因而可以主要用于关联匹配阶段。而速度、位置、航向角这些特征值是动态的,是需要通过观测值进行更新的,并且当你有了轨迹的数据以后,这些动态参数都可以推算出来。因此当你主要关注于动态数据的变化时,就可以用tracks来表示target。
3.单目标追踪(Single Target Tracking,STT)与多目标追踪(Multi Target Tracking,MTT)的关系?
单目标追踪是多目标追踪的特例,因为只有一个目标,所以直接将检测值用于目标状态估计而无需进行关联匹配。
4.多目标追踪的挑战(有哪些难点)?
1)观测值和目标的关联匹配问题。当目标稀疏时,将观测值与目标匹配相对比较容易,但是当目标比较密集甚至有重合的时候呢,这时候如何匹配?
2)传感器漏检。如果目标没被传感器检测出来应该怎么处理?抢占其它目标的观测值吗?
3)传感器误检。
4)计算量问题。随着目标和观测值的增加,分配的计算量会指数增长。
5.MTT系统结构?
结构如上图所示,在解释之前,先做一个假设,即对于任意目标,系统都已经根据之前的观测维护了相应的轨迹,这个轨迹根据置信度可分为确定性的或临时的。现在,系统考虑如何进行分配及更新,具体步骤如下:
1)检测产生多个观测值。
2)使用滤波器(如EKF、PF等)根据之前的轨迹预测目标的当前位置,生成一个估计值。
3)利用估计值和协方差生成一个有效门限(或者说设置一个阈值,目标只可能落在阈值内)。
4)保留落在门限内的有效值,剔除无效的关联。
5)使用分配算法(常分为硬判决和软判决,前者只选其中一个,后者加权求和)进行关联匹配。
6)基于分配的观测值,进行目标轨迹的维护,即初始化(未被分配的观测值成为新的临时轨迹)、确认(如果轨迹满足条件,则将临时轨迹转为确定性轨迹)、轨迹删除(当轨迹不满足条件时进行删除)。
重复上述步骤。
6.检测?
检测是指利用传感器生成观测值的过程。观测值主要包括运动学描述的变量如位置、速度、航向角等,此外还包括目标的属性,如类型、ID、外观等。观测的时刻也是观测值的一部分。
对于可将目标抽象为一个点的情况(点目标追踪)而言,通常基于如下假设:即单一传感器的单次检测最多产生目标的一个观测值(位置)。这个假设可以极大地简化分配问题。
然而当目标包含多个维度的数据时(多维目标追踪),高分辨率的传感器可能产生多个观测值(位置,外观等),这时,需要将这些观测值结构化以供后续的分配算法使用。
7.门限(gating)设置和观测值的分配?
有关这一问题的更详细的介绍可以参考
https://www.mathworks.com/help/fusion/ug/introduction-to-assignment-methods-in-tracking-systems.html 在这里只简单做一个总结。正如上文提到的,门限用于筛选哪些观测值相对于某个轨迹来说是有效的,这样可以减少不必要的计算量。一个有效的门限常根据目标状态的估计和相应的协方差来设置,这种设置方式意味着落在门限内的观测值与目标匹配的概率更高,并且只有在门限内的观测值才会被视为可能的有效观测值。
常用的分配方法有GNN(Global Nearest Neighbor)、JPDA(Joint Probability Data Association)、TOMHT(Track-Oriented Multiple Hypothesis Tracking)等,进一步的讨论可参见上面的链接,实例可参考https://www.mathworks.com/help/fusion/ug/tracking-closely-spaced-targets-under-ambiguity.html
8.轨迹更新
轨迹可分为临时的和确定性的。临时轨迹指不确定是否是真实存在的轨迹,它可能由误检产生。确定性轨迹指真实存在的目标所形成的轨迹。
轨迹更新主要包含三个部分:初始化、确认、删除。
1)初始化:指构造一条新的临时轨迹。在GNN中,初始化的条件是观测没有被分配给已有的轨迹。在JPDA中,初始化条件为观测的关联概率低于某个阈值。在TOMHT中,初始化的条件是观测值与现有轨迹的距离大于某个阈值。
2)确认:指通过确认机制将临时轨迹转换为确定性轨迹,目前有三种常用的确认机制(历史机制,得分机制,联合概率机制)。
历史机制(History Logic):指在过去N次更新中,轨迹至少有M次被分配了观测值,M和N可自由设定。该机制被用于GNN和JPDA中。
得分机制(Track Score Logic):分数指轨迹来自真实目标与轨迹来自误检的概率比,当分数高于阈值时进行确认。该机制被用于GNN和TOMHT中。
联合概率机制(Integrated Logic):如果轨迹的联合概率高于阈值则确认。该机制被用于JPDA中。
3)删除:机制与确认相同,共有三种(历史机制,得分机制,联合概率机制)。
历史机制(History Logic):指在过去N次更新中,轨迹至少有P次没被分配观测值,P和N可自由设定。该机制被用于GNN和JPDA中。
得分机制(Track Score Logic):分数指轨迹来自真实目标与轨迹来自误检的概率比,当分数低于阈值时进行删除。该机制被用于GNN和TOMHT中。
联合概率机制(Integrated Logic):如果轨迹的联合概率低于阈值则删除。该机制被用于JPDA中。
更多细节可参考https://www.mathworks.com/help/fusion/ug/introduction-to-track-logic.html
9.滤波器的作用?
1)预测目标当前时刻的状态。
2)计算预测值与观测值的误差,门限和分配方法基于该误差进行筛选和分配。
3)利用分配的观测值矫正预测值。
有关滤波器的详细讨论参见https://www.mathworks.com/help/fusion/ug/introduction-to-estimation-filters.html
10.判断跟踪好坏的指标?
占个坑,这里我会另写一篇。
11.其他的多目标追踪方法
随机有限集(Random Finite Set, RFS)。GNN、JPDA、TOMHT都是基于轨迹与检测匹配的方式,而随机有限集不是。