主要内容

介绍跟踪指标

虽然设计多目标跟踪系统,有必要设计一个方法来评估其性能对可用的地面实况。这地面真理通常可以从一个模拟真实环境或使用技术提取使用手动或自动标签上记录数据。虽然可以定性评估跟踪算法使用可视化工具,通常不是可伸缩的方法。这个示例介绍了不同的定量分析工具在传感器融合和跟踪工具箱™评估跟踪器的性能。你也会使用一些常见的事件像假追踪,追踪互换等遇到同时跟踪多个对象来了解这些工具的优势和局限性。

赋值和误差指标

评估一个多目标跟踪器的通用工作流地面真理的存在可以分为两个主要步骤。首先,使用一种分配算法跟踪被分配到的真理。第二,使用赋值作为输入,计算每个跟踪计算状态估计精度。在每个步骤中,可以获得一些关键指标跟踪器的性能。在传感器融合和跟踪工具箱™,相对应的指标称为这两个步骤任务指标误差指标分别。

任务指标评估的特征跟踪器产生的由于错误的传感器数据分配给跟踪由于歧义,错过了目标或假警报。错误分配的传感器之间的数据交换等可能导致事件跟踪目标,创建冗余跟踪目标,放弃一个真正的目标跟踪和创建一个错误的追踪。另一方面,在状态估计误差度量提供了一个评估或对象级跟踪的准确性。即使任务跟踪器很好地,错误跟踪水平可能发生由于测量噪声以及不准确建模目标的运动模型和传感器测量模型。

跟踪和真理的定义

任务指标使用封闭的贪婪的加权方法,允许多对一的跟踪任务,这意味着多个追踪可以分配给相同的真理。在每一步,指标旨在追踪分配给真理而会计作业在前面的时间步。这有助于作业指标进行分类跟踪到特定类别根据当前和以前的作业。使用的类别分配指标跟踪图像中描述如下。

作业指标也代表真理不同类别的“目标”从跟踪器的角度来看。这有助于任务指标记录等事件跟踪机构和目标分解。建立和破坏事件下图所示。

通过跟踪和真理为多个类别,分类任务指标输出一个累积分析跟踪器的性能。指标还提供详细信息分配信息为每个真理和跟踪。此外,任务指标的分配结果每一步也可以用来评估误差指标。跟踪器的误差度量标准输出一个累积分析在状态估计的精度。类似的任务指标,误差指标还提供了详细的信息为每个跟踪和真理。

接下来,您将学习如何使用MATLAB的赋值和误差指标。

计算和分析指标

使用您创建的任务指标,trackAssignmentMetric系统对象™。你也使用名称-值对指定对象的属性为不同的应用程序配置指标。在本例中,您指定的任务和散度距离之间的绝对误差的位置跟踪和真理。你也为任务指定的距离阈值和跟踪的散度。

assignmentMetrics = trackAssignmentMetrics (“AssignmentDistance”,“posabserr”,“DivergenceDistance”,“posabserr”,“DivergenceThreshold”,1“AssignmentThreshold”,0.85)
assignmentMetrics = trackAssignmentMetrics属性:DistanceFunctionFormat:“内置”MotionModel:“constvel”AssignmentThreshold: 0.8500 DivergenceThreshold: 1 AssignmentDistance:“posabserr”DivergenceDistance:“posabserr”

使用误差度量标准,您创建的trackErrorMetrics系统对象。因为没有提供名称-值对,使用默认值。在这个例子中,目标是假定为跟踪使用常速模型。

errorMetrics = trackErrorMetrics
errorMetrics = trackErrorMetrics属性:ErrorFunctionFormat:“内置”MotionModel:“constvel”

赋值和误差指标是由模拟跟踪和真理通过使用一个辅助类,helperMetricEvaluationScenarios。这个类的一个对象输出跟踪列表和真理在每个时间步。

trackTruthSimulator = helperMetricEvaluationScenarios;

你也想象的结果赋值和误差指标使用一个辅助类命名helperMetricEvaluationDisplay。这些助手类中包含的示例相同的工作文件夹这个脚本。

显示= helperMetricEvaluationDisplay (“PlotTrackClassification”,真的,“PlotTruthClassification”,真的,“PlotTrackErrors”假的,“PlotTruthErrors”假的,“PlotAssignments”,真的,“RecordGIF”,真的,“ErrorToPlot”,“posRMS”);

生成的列表跟踪和真理在每个时间和运行作业和错误使用以下工作流度量。

%更新时间戳的指标时间戳= 0:0.1:10;n =元素个数(时间戳);%记录变量的初始化posRMSE = 0 (n, 1);velRMSE = 0 (n, 1);posANEES = 0 (n, 1);velANEES = 0 (n, 1);truthError =细胞(n, 1);trackError =细胞(n, 1);%循环时间戳i = 1: n%当前时间时间=时间戳(我);%使用模拟生成跟踪和真理(追踪,真理)= trackTruthSimulator(时间);%你提供跟踪和真理作为作业的输入指标。%这个输出累积总结所有的追踪和真理。[trackAssignmentSummary(我),truthAssignmentSummary (i)) = assignmentMetrics(痕迹,真理);% #好< SAGROW >%的详细分配每个跟踪的信息,您可以使用% trackMetricsTable方法。trackTable = trackMetricsTable (assignmentMetrics);%同样,详细的分配每个真实的信息,你%使用truthMetricsTable方法。truthTable = truthMetricsTable (assignmentMetrics);%为运行错误指标,您获得的当前任务%跟踪使用currentAssignment真理的方法。[assignedTrackIDs, assignedTruthIDs] = currentAssignment (assignmentMetrics);%当前任务信息以及歌曲的列表%的真理在当前时间可以作为输入传递到%误差度量。[posRMSE(我),velRMSE(我),posANEES(我),velANEES (i)) = errorMetrics(跟踪、assignedTrackIDs真理,assignedTruthIDs);%关于真理和跟踪每个记录的详细的错误信息,你%使用累积度量方法的误差度量。trackError{我}= cumulativeTrackMetrics (errorMetrics);truthError{我}= cumulativeTruthMetrics (errorMetrics);显示器(跟踪、真理assignedTrackIDs、assignedTruthIDs trackTable, truthTable);结束

分析任务指标

下面的动画显示的可视化表示的任务指标。在一开始,P1和P2没有任何相关跟踪由于建立延迟。因此,他们都归类为错过了目标。X = 5米左右,P1不是跟踪几次步骤。注意分配指标输出P2作为目标在此期间下降。当跟踪交换在P1和P2之间,他们最初宣布发散搬出散度阈值。几个时间的步骤后,跟踪达到作业门相关的新的真理,成为新的真理。

度规的可视化为每个跟踪和不同事件的真相可以帮助更容易理解。然而,它可以成为大量的跟踪和压倒性的真理。另一种方法是使用总结输出的任务指标。这些输出提供了一个全面的总结当前时间步任务指标。的字段和值分配指标在仿真结束时总结如下所示。

disp (trackAssignmentSummary(结束));
TotalNumTracks: 5 NumFalseTracks: 1 MaxSwapCount: 1 TotalSwapCount: 2 MaxDivergenceCount: 1 TotalDivergenceCount: 3 MaxDivergenceLength: 7 TotalDivergenceLength: 17 MaxRedundancyCount: 1 TotalRedundancyCount: 1 MaxRedundancyLength: 34 TotalRedundancyLength: 34
disp (truthAssignmentSummary(结束));
TotalNumTruths: 2 NumMissingTruths: 0 MaxEstablishmentLength: 5 TotalEstablishmentLength: 10 MaxBreakCount: 2 TotalBreakCount: 4 MaxBreakLength: 9 TotalBreakLength: 9

通过捕获任务总结每一步,你也可以画出累积分析。下面的情节显示字段的子集为跟踪和真理的任务总结。

helperPlotStructArray(显示、trackAssignmentSummary);

图包含一个坐标轴对象。坐标轴对象与任务指标跟踪,包含时间步包含6行类型的对象。这些对象代表TotalNumTracks, TotalSwapCount、TotalDivergenceCount TotalDivergenceLength, TotalRedundancyCount TotalRedundancyLength。

helperPlotStructArray(显示、truthAssignmentSummary);

图包含一个坐标轴对象。坐标轴对象为真理与标题的任务指标,包含时间步包含4线类型的对象。这些对象代表TotalNumTruths、TotalEstablishmentLength TotalBreakCount TotalBreakLength。

分析误差指标

类似的任务指标,误差指标也可以计算和可视化跟踪和真理。估计误差的字段为每个跟踪和真理的模拟如下所示。每个这些字段代表累积误差的跟踪和真理。

为每个跟踪估计误差

disp (trackError{结束});
TrackID posRMS velRMS posANEES velANEES ____ ____说_____ 2 1 0.72278 0.87884 0.52241 0.77236 0.16032 0.083823 0.025702 0.0070263 - 3 4 0.74411 2.112 0.55369 4.4604 0.52898 1.3192 0.27982 1.7403

估计误差为每一个真理

disp (truthError{结束});
TruthID posRMS velRMS posANEES velANEES ____ ____ ______说2 1 0.52259 1.3918 0.2731 1.9372 0.58988 1.259 0.34795 1.5851

通过记录错误在每个时间步,你也可以画出错误和时间为每个跟踪和真理。下面的情节展示位置的均方根误差为每个跟踪和真理。记录被删除后,错误的估计保持不变。注意,在上半场的模拟,T3的错误估计是高于T4因为T3的轨迹不匹配P2完美的轨迹。还要注意误差估计的T3的下降在上半场慢慢聚集到真正的位置。在track-swap事件。T3和T4的估计误差增加,直到他们的作业了。

%一个实用工具来绘制表数组。“posRMS”是场阴谋helperPlotTableArray(显示、trackError“posRMS”);

图包含一个坐标轴对象。坐标轴对象与标题为每个跟踪估计误差,包含时间步,ylabel均方根误差的位置包含4线类型的对象。这些对象代表T1、T2、T3、T4。

每个真理的错误估计是估计误差的累积的痕迹分配到它。当P2被分配一个冗余跟踪约8日时间步的仿真,其估计误差吓了一跳。冗余追踪接近P2,误差减少,但增加当相关跟踪分化。

helperPlotTableArray(显示、truthError“posRMS”);

图包含一个坐标轴对象。坐标轴对象与标题估计误差为每一个真理,包含时间步,ylabel均方根误差的位置包含2线类型的对象。这些对象代表P1, P2。

大量的跟踪和真理,您还可以使用累积误差指标所有分配在其生命周期。注意增加错误当轨道交换(第80步附近)。还要注意周围的小峰25日时间步当T1转移从真理超越了P2和冗余分配跟踪T3。

图(f =“单位”,“归一化”,“位置”(0.1 - 0.1 0.6 - 0.6));ax =轴(f);次要情节(2 2 1)情节(posRMSE,“线宽”2);包含(“时间步”);ylabel (位置的均方根误差(m)的);网格(“上”);次要情节(2,2,2)情节(velRMSE,“线宽”2);包含(“时间步”);ylabel (均方根误差的速度(米/秒));网格(“上”);次要情节(2,2,3)情节(posANEES,“线宽”2);包含(“时间步”);ylabel (“平均归一化误差的位置”);网格(“上”);次要情节(2,2,4)情节(velANEES,“线宽”2);包含(“时间步”);ylabel (“平均归一化误差速度”);网格(“上”);sgtitle (“累积所有跟踪错误”,“FontWeight”,“大胆”);

图包含4轴subplottext类型的对象和另一个对象。坐标轴对象1包含时间步骤,ylabel均方根误差的位置(m)包含一个类型的对象。坐标轴对象2包含时间步骤,ylabel均方根误差在速度(米/秒)包含一个类型的对象。坐标轴对象3包含时间步,ylabel平均归一化误差的位置包含一个类型的对象。4轴对象包含时间步,ylabel平均归一化误差量包含一个类型的对象。

总结指标作为评分

一个常见的用例来评估性能的多目标跟踪器来优化其参数。这通常是通过结合指标为单个成本价值,可以作为一个函数的优化算法。赋值和误差指标提供几种不同措施的有效性(西红柿),可以合并,首先选择最相关的指标,然后进行加权组合取决于应用程序。正确的选择西红柿以及它们的组合成一个单一的分数可能是一个挑战。这种方法作为一种替代方法,您可以使用的最佳子模式分配(OSPA)[1]矩阵和广义优化子模式分配(GOSPA)[2]的量度。OSPA和GOSPA指标评估多目标跟踪器的性能通过结合两个赋值以及状态估计精度成一个单一的成本价值。接下来,您将了解OSPA和GOSPA度量和工作流在MATLAB计算这些指标。

OSPA规

OSPA度量可以被认为是一个统计距离多个轨道和真理。计算OSPA度规,该算法首先分配现有的跟踪和真理使用全局最近邻(GNN)算法。一旦计算任务,指标总体距离分为两个子组件——本地化和cardinality-mismatch。定位组件捕获错误产生的状态估计精度,而cardinality-mismatch组件捕获冗余跟踪的影响,错误的追踪,错过了真理。传统OSPA指标没有考虑时间的历史轨迹即从上一步作业不影响当前步骤的度量。因此,影响像track-switches不是传统OSPA度量中捕获。为了绕过这个问题,引入了一个新的子组件OSPA称为“标签”组件[3]。结合传统OSPA“标签”组件是有时被称为“跟踪OSPA”(OSPA-T)或Labelled-OSPA (LOSPA) [4]。

使用MATLAB中的OSPA度量,您可以使用trackOSPAMetric系统对象。您可以切换从OSPA Labelled-OSPA通过提供一个非零值LabelingError财产。理解每个子组件是如何计算,请参考“算法”的部分trackOSPAMetric

ospaMetric = trackOSPAMetric (“距离”,“posabserr”,“CutoffDistance”,1“LabelingError”,0.25);

接下来,运行相同的场景和在每个时间步长计算OSPA度量。

时间戳= 0:0.1:10;n =元素个数(时间戳);%的场景模拟trackTruthSimulator = helperMetricEvaluationScenarios;%初始化变量ospa = 0 (n, 1);locComponent = 0 (n, 1);cardComponent = 0 (n, 1);labelingComponent = 0 (n, 1);%循环时间戳i = 1:元素个数(时间戳)时间=时间戳(我);%跟踪和真理(追踪,真理)= trackTruthSimulator(时间);%调用系统对象作为函数和记录OSPA 3组件[ospa(我),locComponent(我),cardComponent(我),labelingComponent (i)) = ospaMetric(痕迹,真理);结束

分析OSPA规

图(“单位”,“归一化”,“位置”(0.1 - 0.1 0.6 - 0.6));次要情节(2,1,1);情节(ospa“线宽”2);包含(“时间步”);ylabel (“成本”);标题(“OSPA”);网格(“上”);次要情节(2,1,2);情节([locComponent cardComponent labelingComponent),“线宽”2);包含(“时间步”);ylabel (组件成本的);标题(“OSPA组件”);传奇(“定位”,“Cardinality-mismatch”,“标签”);网格(“上”);

图包含2轴对象。与标题OSPA坐标轴对象1,包含时间步,ylabel成本包含一个类型的对象。坐标轴对象2与标题OSPA组件,包含时间步,ylabel组件成本包含3线类型的对象。这些对象代表本地化,Cardinality-mismatch,标签。

注意OSPA指标之间的相关性,不同事件的场景。因为建立延迟最初OSPA高。建立后,OSPA仍保持相对较高的由于存在冗余。冗余记录被删除后,OSPA降至一个较低的值。大约50时间步OSPA获得价值真理P1掉了。注意,虽然OSPA度量正确捕获所有这些事件通过提供更高的价值,它不提供关于每个真相和细节跟踪和估计的准确性。从OSPA唯一可用的信息是通过它的组件。更高的本地化组件表明分配跟踪不估计的状态正确的真理。这个定位组件使用相同类型的距离作为计算任务。高基数组件表示错过目标和虚假或冗余的存在痕迹。 A higher labeling error indicates that the tracks are not labelled correctly, which indicates that the tracks are associated to their closest available truths.

GOSPA规

该方法用于计算GOSPA OSPA度量相似。使用稍微不同的数学公式,另外GOSPA度量计算子组件,如“错过目标组件”和“假追踪组件”。类似传统OSPA GOSPA也没有考虑时间的历史痕迹。然而,类似Labelled-OSPA的度量可以通过添加一个开关组件[5]。开关组件捕获真理之间切换任务的影响。每个任务改变事实是被归类为后期或full-switch后处罚。后期是指真理交换机分配时的事件从跟踪未派职务的,反之亦然。full-switch指真理时的事件开关从一个轨道到另一个任务。

使用MATLAB中的GOSPA度量,你创建的trackGOSPAMetric系统对象。track-switching占,你提供一个积极的价值SwitchingPenalty

gospaMetric = trackGOSPAMetric (“距离”,“posabserr”,“CutoffDistance”,1“SwitchingPenalty”,0.25);

接下来,运行相同的场景和在每个时间步长计算GOSPA度量。

时间戳= 0:0.1:10;n =元素个数(时间戳);trackTruthSimulator = helperMetricEvaluationScenarios;%初始化变量labeledGospa = 0 (n, 1);traditionalGospa = 0 (n, 1);locComponent = 0 (n, 1);missedTargetComponent = 0 (n, 1);falseTrackComponent = 0 (n, 1);switchingComponent = 0 (n, 1);%循环时间戳i = 1:元素个数(时间戳)时间=时间戳(我);%跟踪和真理(追踪,真理)= trackTruthSimulator(时间);%调用系统对象作为函数和得到所有4组件[labeledGospa(我),traditionalGospa(我),switchingComponent(我),locComponent(我),missedTargetComponent(我),falseTrackComponent (i)) = gospaMetric(痕迹,真理);结束

分析结果

图(“单位”,“归一化”,“位置”(0.1 - 0.1 0.6 - 0.6));次要情节(2,1,1);情节(labeledGospa“线宽”2);包含(“时间步”);ylabel (“成本”);标题(“GOSPA”);网格(“上”);次要情节(2,1,2);情节([locComponent missedTargetComponent falseTrackComponent switchingComponent),“线宽”2);包含(“时间步”);ylabel (组件成本的);标题(“GOSPA组件”);传奇(“定位”,“错过了目标”,“虚假跟踪”,“切换”);网格(“上”);

图包含2轴对象。与标题GOSPA坐标轴对象1,包含时间步,ylabel成本包含一个类型的对象。坐标轴对象2与标题GOSPA组件,包含时间步,ylabel组件成本包含4线类型的对象。这些对象代表本地化,错过了目标,错误的轨道,切换。

注意到GOSPA指标也在场景中捕捉不同事件的影响类似于OSPA度量。OSPA相比,它还提供了信息,如果指标高是由于错误的轨道或错过了目标。注意到峰值错过目标组件在50时间步。这个峰值表示事件P1时错过了几个步骤。高峰在80时间步错过目标组件表示跟踪交换时的事件。散度和重新分配导致错过了目标之间的延迟以及一个错误的跟踪组件。

跟踪开关组件的峰值表示不同的事件。第一个峰占真理开关未赋值的分配。第二个峰值跟踪的开关占P2。第三和第四峰了,真理P1未赋值的,然后分别分配给另一个轨道。最后两个山峰占真理unassignment然后重新分配。

类似于OSPA, GOSPA也没有提供详细的信息关于每个跟踪和真理。从GOSPA可通过其组件的信息。如同它的名字,错过了更高目标组件表示不被跟踪目标和更高的错误跟踪组件表示的存在错误的轨道。更高的开关等处罚表示事件建立、跟踪互换和下降轨道。组件包含了目标的细分和虚假跟踪协助修改正确的跟踪器的参数。例如,如果要创建错误的轨道,一个典型的解决方案是,试图增加track-confirmation的门槛。

总结

在这个示例中,您了解了三种不同的工具来分析多目标跟踪系统的性能。你也了解了工作流在MATLAB使用这些度量。你还靠他们提供的信息的类型以及如何进行分析。描述的工具在这个例子中是灵活的,可以定制为不同的应用程序和用例。有“内置”选项上可用的所有工具指定一个要使用不同类型的距离度量。例如,绝对误差在位置或速度或标准化的错误位置或速度。您还可以指定三个不同的运动模型的跟踪:恒定速度,不断的周转周期和恒定的加速度。这些“内置”功能支持在形式的跟踪金宝appobjectTrack和真理所产生的场景模拟trackingScenario。如果跟踪的格式和真理为您的应用程序是不同的,可以将它们进行预处理。这允许您使用所有的“内置”功能指标。此外,您可以指定一个自定义函数跟踪和真理之间的距离。这允许您控制的距离以及每个记录的格式和真理。为OSPA定制和内置功能之间切换,GOSPA度规,指定距离“custom”。定制和内置的功能之间切换任务和错误指标,改变DistanceFunctionFormatErrorFunctionFormat自定义”分别赋值和误差指标。

引用

[1]Schuhmacher,多米尼克,旁白,Ba-Ngu Ba-Tuong签证官。“一个一致的绩效评价指标的多目标过滤器。”IEEE信号处理56.8 (2008):3447 - 3457。

[2]Rahmathullah,阿布Sajana天使f . Garcia-Fernandez Lennart斯文森。“广义最优分配指标子。”2017年20国际会议信息融合(融合)。IEEE 2017。

[3]Ristic、布等。“绩效评估指标的多目标跟踪算法。”IEEE信号处理59.7 (2011):3452 - 3457。

[4]马勒,罗纳德·p。进展统计multisource-multitarget信息融合。Artech房子,2014。

[5]Garcia-Fernandez,天使F。,et al. “A Metric on the Space of Finite Sets of Trajectories for Evaluation of Multi-Target Tracking Algorithms.”IEEE信号处理68卷,2020年,页3917 - 28。