说明
本文作为跟踪系列的第4篇博文,在前面几篇博文[1][2][3]的基础上对所采集的实际数据(来自国防科技大学电子科学学院所主导发布的数据集[4])进行跟踪实践。读者在阅读本文前,建议先阅读本系列的前3篇博文。
Blog
20240724 博文第一次撰写
目录
说明
目录
一、数据说明
二、跟踪算法细节设计
三、实践结果与讨论
四、总结
五、参考资料
六、数据与参考代码
一、数据说明
我在博文[3]中对该数据集做了比较详细的介绍,读者可以移步博文[3]阅读。为了更好地在后续跟踪算法中设计目标运动模型以及做滤波参数的初始化,这里在博文[3]的基础上对送入跟踪算法的数据做进一步的分析。
在后文的跟踪算法中,我使用了数据集中的第10段数据,该段数据下的目标真值解析如下(沿用博文[3]中的处理结果):
图1.1 实测目标真值的情况
结合第10段数据的说明,我们可以知道:
1. 该段数据共120帧,包含了两个目标,不过目标2(图中蓝色目标)只存在于前100帧。
2. 两个目标的运动状态是不一样的:目标1(图中红色目标)差不多是匀速运动,但是目标2是先加速远离后减速远离。
3. 与博文[2]仿真中关于目标运动的定义有所出入的是,这里是目标远离时,速度取负。(这在跟踪算法中设计目标状态转移矩阵时需要注意)
类似在博文[2]仿真中的设计,最终送入跟踪算法的是加噪声后的目标,在后续处理中,我给两个目标加入了均值为0,速度测量标准差为0.1m/s,距离测量标准差为0.2m的噪声。加噪声前后的目标如下图所示:
图1.2 加噪声前后对比(1)
(从左至右分别为:真值、加噪声后、加噪声前后对比)
将右图局部放大,结果如下:
图1.3 加噪声前后对比(2)
二、跟踪算法细节设计
本文对实测数据的跟踪处理和博文[2]仿真实践中类似,跟踪算法的细节设计请移步博文[2]查看。
本文跟踪算法的参数设计中与仿真实践里两个小的区别点是:
1. 状态转移矩阵的设计,因为这里是目标远离时速度为负,所以相较于仿真博文中的设计,dt设计为-50ms。
2. 考虑到实测目标相较于之前的仿真目标,速度和距离都很大,且目标2还是变加速运动,所以在关联部分,我将速度的权重降低,并将关联阈值增大:
距离的权重设置成了0.8,关联的阈值设置成了15。
三、实践结果与讨论
前48帧下的跟踪效果还不错:
图3.1 目标跟踪结果(1)
随后由于目标实际是已经开始减速,但是我们并没有改变滤波器的加速度值,所以航迹2和目标2无法关联,于是航迹2会丢失并新建了航迹3:
图3.2 目标跟踪结果(2)
(由于我们设定航迹lost的条件是要连续6帧没有被关联上,所以没有关联上目标的航迹2会继续存留6帧),由于目标2的加速度是在变化的,随后航迹3也会面临和航迹2一样的问题:
图3.3 目标跟踪结果(3)
由于之前的航迹2已经被我们删除,所以id 2被闲置(可继续用),我在航迹管理中设计的算法会再次把2分配给新建的航迹。新建的航迹2会持续到第105帧(因为从第100帧开始,目标2就不存在了):
图3.4 目标跟踪结果(4)
图3.5 目标跟踪结果(5)
跟踪的结果符合预期(即便是目标2出现跟丢的情况),验证了所设计算法的正确性。由于所采用的卡尔曼滤波算法只能处理线性运动(匀速、匀加速)的目标,而目标2是先加速后减速的(非线性运动),所以对该目标的跟踪效果不好(会跟丢)是可以预见的。对此,可能的解决方式可以包括: 1.采用其它的适用于非线性运动的滤波算法; 2.仍然使用卡尔曼滤波,但可以设计在特定帧数间隔下(或者航迹的状态估测值和量测值的差值超过某阈值时)基于量测结果对加速度值做更新。
四、总结
本文针对数据集中的实测数据进行了跟踪实践,实践的结果基本符合预期,但同时也注意到:
1、由于所采用的卡尔曼滤波算法只能处理线性运动(匀速、匀加速)的目标,而所处理的实测数据中有一个目标是先加速后减速的(非线性运动),所以对该目标的跟踪效果不好(会跟丢),对此我在结果讨论中给出的两种解决方案是: a.采用其它的适用于非线性运动的滤波算法; b.仍然使用卡尔曼滤波,但可以设计在特定帧数间隔下(或者航迹的状态估测值和量测值的差值超过某阈值时)基于量测结果对加速度值做更新。
2、实际的应用场景中,雷达视场内的多个目标可能会有不同的运动状态(比如本文所处理的数据中,其中一个目标是匀速运动,而另一个是变加速运动),所以为不同的目标设计不同的运动模型,乃至不同的滤波算法是有必要的!(虽然在本文的实践中我并没有这么做),不过我在航迹管理的设计中给每条航迹设计了两个表征该航迹目标运动模型的参数“motionModel”和“motionDim”, 读者可以在提供的代码上自行尝试:如果是线性运动的话,我们其实可以对全部航迹预设为匀加速运动,因为匀速运动其本质是加速度为0的特殊的匀加速运动。
本系列博文对跟踪算法的探讨是很基础的,但本系列博文的内容止步于此,读者可以在本系列博文的基础上作更深入的研究。
五、参考资料
[1] (雷达数据处理中的)跟踪算法(1) --- 整体&目录-CSDN博客
[2] (雷达数据处理中的)跟踪算法(2) --- 目标跟踪仿真实践-CSDN博客
[3] (雷达数据处理中的)跟踪算法(3) – 可用于目标跟踪实践的数据集介绍&解析-CSDN博客
[4] 雷达回波序列中弱小飞机目标检测跟踪数据集 (csdata.org)
六、数据与参考代码
本跟踪系列博文所有相关的数据和代码我一并打包在了第一篇博文的链接中,读者可以去第一篇博文[1]的文末查收。