1. 决策算法概述
大家好,我是你们这堂课的主讲人。在正式开始之前,我想先聊聊一个核心问题:为什么跟踪系统里需要决策算法?
你想想看,一个雷达或者摄像头,它每秒能产生成千上万个点迹。这些点迹里,哪些是目标?哪些是噪声?目标下一秒会往哪跑?要不要跟丢这个目标去追那个?——这些问题,光靠滤波是解决不了的。它们需要决策。
一句话总结:决策算法就是跟踪系统的“大脑”,它告诉系统“该做什么”。
什么是决策算法
说白了,决策算法就是一套规则或模型。它根据当前的状态和观测数据,输出一个行动指令。
举个例子。你在开车时看到前面有个障碍物。你的大脑会快速决策:是刹车?还是打方向?还是加速冲过去?——这就是决策。
在跟踪系统里,决策算法要回答的问题更具体:
- 这个点迹是目标还是虚警?
- 两个目标靠得太近,要不要合并成一个?
- 目标丢失了,是继续搜索还是宣告跟踪结束?
- 传感器资源有限,优先跟踪哪个目标?
我记得刚入行那会儿,带我的老工程师跟我说过一句话:“滤波是手艺,决策是艺术。”当时我不太理解。后来在项目中踩了不少坑,才慢慢品出这句话的味道。
决策算法在跟踪系统中的角色
我习惯把跟踪系统分成三层:
- 感知层:传感器采集数据,生成点迹或量测。
- 滤波层:用卡尔曼滤波、粒子滤波等方法估计目标状态。
- 决策层:决定怎么关联、怎么管理、怎么分配资源。
决策层是承上启下的关键。没有它,滤波做得再好也是白搭。
举个例子。我在做多目标跟踪项目时,遇到过一个问题:两个目标交叉飞行,点迹关联错了。滤波算法本身没问题,但决策层没有正确判断“哪个点迹属于哪个目标”,结果跟踪结果一塌糊涂。
我的经验:很多新手只关注滤波算法,忽略了决策。其实80%的跟踪失败,问题都出在决策环节。
决策算法在跟踪系统中的具体角色包括:
- 数据关联:判断量测与航迹的对应关系
- 航迹管理:航迹起始、确认、维持、终结
- 资源分配:传感器调度、计算资源分配
- 模式切换:跟踪模式、搜索模式、确认模式之间的切换
决策算法的分类
我一般把决策算法分成三大类。这三类各有千秋,也各有坑。
1. 规则基决策算法
这是最传统的方法。说白了,就是写死规则。
比如:
- 如果点迹与航迹的距离小于阈值,则关联
- 如果连续3帧没有更新,则终结航迹
- 如果目标速度超过100m/s,则标记为高速目标
优点很明显:简单、可解释、调试方便。缺点也很致命:规则多了容易冲突,而且无法应对复杂场景。
避坑指南:我曾经在一个项目中,写了200多条规则。结果每次换场景都要重新调参,维护成本极高。后来我学乖了——能用规则解决的问题,尽量用规则;但别指望规则解决所有问题。
2. 优化基决策算法
这类方法把决策问题建模成优化问题。目标函数 + 约束条件,然后求解最优解。
常见的例子:
- JPDA(联合概率数据关联):用概率加权的方式做关联
- MHT(多假设跟踪):维护多个假设,选最优的
- 匈牙利算法:解决分配问题
优化基方法的优势是理论上最优。但实际应用中,计算量往往很大。特别是目标数量多的时候,组合爆炸会让你怀疑人生。
我记得有一次做多目标跟踪,目标数量从10个增加到20个,MHT的假设数量直接翻了100倍。嗯,那台服务器差点没扛住。
3. 学习基决策算法
这是最近几年火起来的方向。用机器学习、深度学习来做决策。
比如:
- 用神经网络判断点迹是否属于目标
- 用强化学习做传感器调度
- 用图神经网络做数据关联
学习基方法的优点是灵活、能处理复杂场景。但缺点也很明显:需要大量标注数据、可解释性差、容易过拟合。
我的建议:别一上来就上深度学习。先试试规则基,不行再上优化基,最后才考虑学习基。这个顺序能帮你省下大量时间。
三种方法的对比
我整理了一张表,方便你对比:
| 特性 | 规则基 | 优化基 | 学习基 |
|---|---|---|---|
| 复杂度 | 低 | 中 | 高 |
| 可解释性 | 高 | 中 | 低 |
| 灵活性 | 低 | 中 | 高 |
| 数据需求 | 无 | 少 | 多 |
| 适用场景 | 简单、稳定 | 中等复杂度 | 复杂、多变 |
本章知识体系
下面这张图,是我画的决策算法在跟踪系统中的整体框架。你可以把它当作本章的“地图”。
小结
这一章我们聊了三个问题:
- 什么是决策算法——就是告诉系统“该做什么”
- 它在跟踪系统中的角色——数据关联、航迹管理、资源分配
- 三大分类——规则基、优化基、学习基
我个人觉得,理解这三类方法的本质区别,比记住具体算法更重要。因为在实际项目中,你往往需要混合使用它们。
比如我最近做的一个项目:用规则基做初步筛选,用优化基做精确关联,用学习基处理异常情况。三种方法配合使用,效果比单用任何一种都好。
嗯,这一章就到这里。记住:决策算法不是万能的,但没有决策算法是万万不能的。