理解传感器融合和跟踪,第5部分:如何同时跟踪多个对象
从系列中:理解传感器融合和跟踪
布莱恩•道格拉斯
本视频介绍跟踪多个对象时出现的两个常见问题:数据关联和跟踪维护。我们介绍了一些解决这些问题的方法,并提供了一种处理所有多目标跟踪问题的通用方法。
我们介绍了数据关联算法,如全局最近邻(GNN)和联合概率数据关联(JPDA),并研究了删除和创建航迹的标准。我们讨论了限制观测,这样我们就不会浪费计算资源。在视频的最后,我们展示了GNN和JPDA算法在两个近距离物体上操作的示例。
在这个视频中,我们将把我们学过的跟踪单个对象的知识扩展到同时跟踪多个对象。乍一看,这个问题似乎并不比跟踪单个物体难多少。举个例子,我们能不能把跟踪算法像上个视频中的IMM一样应用到每个对象上,就可以了?好吧,根据我问这个问题的方式,你可能会想到,答案是否定的,不是真的。至少,在多目标跟踪中我们还需要考虑一些其他的事情这也是我们这集视频要讨论的。所以我希望你们能坚持下去。我是Brian,欢迎来到MATLAB技术讲座。
现在,我将强调一个大致的大纲,这样你就会知道这些问题是如何解决的,但我绝不希望你认为只有一种方法或一种算法可以完成这项工作。每个问题都是不同的,因为它们有不同数量的对象,或者你可以访问不同的测量数据和信息,或者对对象之间的距离有不同的期望,你可以使用不同的计算资源,或者对你需要的精度有不同的要求,等等。在某种程度上,弄清楚如何解决你的特定问题更像是一门艺术,而不是一门硬科学。所以我希望你们从这个视频中学到的是理解在选择或开发自己的多目标跟踪算法时应该注意的事情类型,而不一定是如何解决你的确切问题。好了,免责声明说够了。让我们开始吧。
首先,让我们讨论多目标跟踪的困难之处,然后我们将绕回来讨论如何解决这些问题。
我们将遇到的所有问题都源于我们的不确定性。这是对物体的观察或探测的不确定性以及我们对物体运动路径的预测的不确定性。记得在上个视频中,像卡尔曼滤波器这样的估计滤波器通过混合不确定测量和不确定预测来工作。我们研究了用雷达站跟踪飞机。我们预测了飞机未来的位置,并用噪声雷达测量对其进行了修正。但我们有很多物体,而不是单个物体,每个物体都有自己的不确定预测,我们需要用相应的不确定测量来纠正。
那么,我们已经来到了第一个问题。我们不想用对一个物体的测量来修正对另一个物体的预测。但如果探测中没有识别信息,比如飞机尾号或其他一些独特的签名,我们怎么知道我们刚刚探测到的是哪个物体呢?例如,如果我们跟踪的所有飞机都有相似的雷达截面,而这是我们可以访问的所有信息,我们如何将任意ping与适当的跟踪对象匹配?
如果所有的天体都是稀疏分布的,而且观测结果相对可靠,这就不是太大的问题。这将是一个简单的事情,声称观测是对它最近的物体。在这种情况下,我们只需将测量值分配给最近的对象,并像跟踪单个对象一样为其运行估计过滤器。
然而,棘手的部分是,当物体彼此足够接近时,或者我们的不确定性足够大,以至于测量的对象可能不止一个。现在我们要搞清楚了。这就是数据关联问题。我们必须将探测到的物体与正确的物体联系起来。
这是一个问题。我们需要考虑的另一件事是被跟踪的对象的数量不是固定的。有时需要根据我们观察到的情况来创建或删除轨迹。当一架飞机飞进雷达范围时,我们可以添加一条新的航迹,同样,当一架飞机飞出雷达范围时,我们可以删除一条航迹。这个创建和删除不仅仅发生在传感器的视场边缘。我们可能需要在任何地方创建和删除音轨。例如,一架飞机可能在雷达范围内降落或起飞。或者,再举一个例子,如果一辆自动驾驶汽车在繁忙的街道上行驶时跟踪行人,它必须意识到新的人群,并在他们进入汽车前面的视野时跟踪他们的行走方向,它不再需要关心已经超过的行人。
因此,我们需要考虑创建和删除对象轨迹的标准。处理这个问题的基本方法是,每当检测到与现有对象不匹配时,就添加一个轨道,如果没有检测到现有对象,就删除一个轨道。更复杂的是,有时传感器会有假阳性的测量结果。他们发现了一些并不存在的东西。有时,传感器会连续几次失败,无法探测到实际存在的物体。所以我们在这里需要小心,这样我们就不会过早地创建轨道,这会混淆我们对实际存在的东西的看法,我们也不会过早地删除轨道,这在一开始就降低了跟踪的有效性。这是轨道维护的问题。
这就是我们接下来要讲的内容。当跟踪多个对象时,我们有哪些方法可以实现数据关联,以及有哪些方法可以解决跟踪维护问题?
这就回到了我在视频开始时简要展示的流程图。虽然您的特定方法可能不会产生与此完全相同的功能结构,但它将为我提供一种方便的方式来讨论每个部分。让我们来回顾一下。
从观察开始。对一个物体的观测可能包含测量的量,如距离、距离率或视线。这些是表示物体运动性质的量。但是观测也可以包含测量的属性,如目标类型、id号和物体形状。这就是我之前所暗示的,当我说你可以通过观察得到飞机的尾号或其他识别信息。获取尾号对于数据关联来说是非常明确的,但是其他类型的属性可能仍然需要一些解释。例如,你可以收集微多普勒雷达波动,从中可以确定你正在跟踪的飞机的类型。观测的不确定性取决于两个物体之间的分离程度。直升机可能看起来完全不同于喷气式飞机,因为它有巨大的旋转螺旋桨,而鸟类和四轴飞行器可能有相似的多普勒信号。
观测中需要考虑的其他事情是,如果被跟踪的物体是一个点目标,那么观测最多包含一个检测。所以我们必须把一个探测和一个物体联系起来。但如果目标物体很大,传感器有足够的分辨率,例如激光雷达,每个目标可能有多个检测,我们在决定如何处理关联数据时需要考虑这一点。此外,如果传感器的分辨率较低,则有可能在一次检测中存在两个物体。在这种情况下,两个物体都被观测到了,所以我们不想停止跟踪它们中的任何一个,但它们只显示为一次探测。我们的轨道删除算法将不得不处理这些情况。
接下来在这个视频中,我们只讨论对每个被跟踪对象进行一次检测的情况,这是在赋值步骤中处理的,也就是下一个。
赋值是将观察结果与跟踪对象匹配的过程,如果你喜欢简洁的东西,也可以将其与跟踪对象匹配。可能最简单的分配算法是GNN,全局最近邻。这只是将一个轨道分配给最近的观测。但有趣的是,它不一定是最近的欧几里得距离或几何距离,而是最近的概率距离就像马氏距离一样。这是为什么。
对于概率分布,就像我们的预测和测量一样,最低的欧几里得距离并不总是表明预测和测量是最合适的。这是因为我们对低标准差方向的预测和测量更有信心。例如,在这张简单的图像中,我们对两个不同物体的位置进行了预测,并在它们之间进行了单一检测。如果我们使用欧几里得距离,我们会假设探测到的是物体2,因为它更近。但是如果我们看一下这两个预测的概率分布,我们可以看到更有可能检测到的是物体1。这就是马氏距离的作用。它是用标准差归一化的距离。
现在,GNN对稀疏分布的对象工作得很好,但对于杂乱的对象,另一种分配算法,如JPDA或联合概率数据关联算法将更好。JPDA并没有在一次观测和一次轨道之间做出艰难的分配。相反,它将所有邻近的观测值进行加权组合,较近的观测值的权重高于较远的观测值。这是对GNN的一个改进,因为如果有两个观测结果可能是目标,JPDA不会完全专注于一个,可能是错误的一个。因此,如果被跟踪的物体彼此聚集在一起,并且观测结果也都聚集在它们附近,这个算法可以通过将其中一些物体混合在一起来处理,而不是在错误和正确的检测之间跳跃。
还有更多的分配算法,您可以根据跟踪情况创建自己的分配算法。但最重要的是,你要弄清楚如何将观测结果与轨迹联系起来。
不是所有的观测都被分配,也不是所有的轨道都有观测。这就是轨道维护以删除和创建轨道的形式出现的地方。但就像我之前说的,我们必须小心谨慎,不要过早地做任何事情。让我们以一种保守的方式开始删除音轨。而不是说一个对象消失了,只要我们错过了一个单一的观察,我们可以删除轨道,只有一个轨道没有被分配到一个检测在最近的R更新至少P次。在本例中,P和R是可以根据实际情况进行调优的参数。因此,如果在最近六次更新中至少四次没有检测到一个轨道,您可能会说删除它。
现在,创建一个跟踪有点棘手,因为你不知道一个单独的未分配的观察是否是一个新的对象,但你仍然需要关注它,这样你就可以随着时间的推移弄清楚它是否值得跟踪。处理这个问题的一种方法是创建一个试探性的轨道——一个您维护并假装它是一个真实的对象,但实际上您并不相信它是一个真实的对象的轨道。你只需要在后台保持这个轨迹。在最近N次更新中检测到试探性轨道M次后,您将轨道移动到已确认轨道,这意味着您认为它是一个真实的对象。可以使用与删除已确认轨道相同的逻辑删除暂定轨道。因此,通过这种方式,您可能有几十个由于假阳性测量而保持的试探性轨道,但在它们被确认之前就被删除了。
随着轨道的创建和删除以及观测值的分配,我们可以运行一组估计过滤器。这部分与单对象跟踪相同,我们可以选择交互多模型滤波器或单模型卡尔曼滤波器。每个被分配观测的跟踪对象(包括试验性和已确认的对象)的预测状态将根据它们各自的观测进行更新,然后整个过程重新开始。我们得到更多的观察结果,它们被分配给轨道,轨道被创建和删除,过滤器再次运行。
然而,在计算上看每一个观测结果并考虑它有多大可能被分配到每一个轨道是愚蠢的。因此,我们可以选择忽略每个轨迹的一个确定区域之外的观测值。这被称为门控,这是一种筛选机制,它决定哪些检测是有效的候选检测,哪些应该被忽略。例如,使用JPDA,距离被跟踪对象很远的观测结果在统计上对整体解决方案的贡献非常小,所以为什么要花费计算资源来计算这个微不足道的量呢?特别是当您跟踪数十或数百个对象时,这可能是非常浪费的。通过忽略特定区域之外的观察,在这个门之外,我们可以加快分配过程。
因此,限制会影响分配算法,因此它们只考虑值得观察的观察结果。好了,这是我这集视频的结尾,但在结束之前,我想快速地给你们展示一个MATLAB中的例子,它展示了两种不同的多目标跟踪算法的结果。
在这个例子中,有两个物体在相互独立地移动,我们通过跟踪雷达来观察它们。黑色三角形是物体的真实位置,圆形是雷达站探测到的位置。请注意,当两个物体彼此靠近时,检测会重叠,并且很难判断物体在这个模糊区域中的位置。这就是我们要处理的数据,让我们试试算法,看看效果如何。
对于第一个,我使用全局最近邻进行数据关联,使用IMM进行估计过滤器,因为这些对象是机动的。请注意,当物体彼此相距很远时,很明显哪些物体和检测是在一起的,GNN算法做得非常好。对象1被分配给轨道1,对象2被分配给轨道2。这就是GNN所擅长的,将数据与稀疏的跟踪对象进行匹配。但当物体彼此靠近时,它就不那么好了。你可以看到,一条轨道被删除了,几次检测后又添加了一条新的轨道,所以算法对同一时刻有多少个物体感到困惑。事实上,它从2号轨道跳到了8号轨道,这意味着在确认第6条轨道为8号轨道之前,它还保留了另外5条暂定轨道。
让我们把我们的分配算法升级为联合概率数据关联算法,看看这是否会更好。
这很有趣。在整个机动过程中,两条轨道都保持不变,但在模糊区域仍然比其他地方有更多的错误。但这是意料之中的,因为这个地区的数据有很多重叠。令人惊讶的是,这些算法可以从这样的情况中提取出任何东西。现在,与GNN相比,JPDA在复杂性方面有额外的成本,因此值得评估您的需求,而不仅仅是实现最准确和最复杂的算法。如果对象总是彼此远离,那么我更喜欢简单的GNN方法,因为它在这些情况下工作得很好,而且更容易解释和实现。
这就是我们需要考虑的事情的总体要点以及我们同时跟踪多个对象时需要解决的问题。我想再次强调,没有一种方法可以做到这一点。这完全取决于每个独特的情况。但是希望通过这一概述,您能够更好地理解如何解决下一个多目标跟踪问题。
好了,如果你不想错过下一期Tech Talk视频,不要忘记订阅这个频道。此外,如果你想看看我的频道,控制系统讲座,我在那里涵盖了更多的控制理论主题。感谢收看。下次见。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。