做目标跟踪的人,多数都遇到过这个场景:激光雷达扫过行人,一个目标回七八个点;雷达分辨率高一点,一辆车也能出好几个散射中心。以前我用JPDA和MHT做数据关联,目标一多,联合事件和假设树疯长,纯粹是组合爆炸。后来换到标题里这套“扩展多目标跟踪概率假设密度滤波(PHD)线性高斯混合实现”,最大的感受就是:不用再显式维护“哪个量测对应哪个目标”的关联假设,而是把整个多目标状态当作随机有限集,只去递推一阶统计矩——强度函数,在Matlab里用一堆高斯分量把它表示出来。这个方案对做雷达/激光雷达多目标跟踪、写毕业设计、或者手里有一堆点云量测但不知道怎么建模的人来说,是一个很值得跑的起点。
先把这个名字拆开:“扩展”说的是扩展目标(extended target),也就是目标本身不是一个点,而是一个有尺寸、会在一帧里产生多个量测的对象,不是“把算法扩展一下”的意思。很多人第一眼看到标题会误会成“一个扩展版本的多目标跟踪算法”,实际上它描述的是目标模型从“点目标”变成“扩展目标”后,PHD滤波的一种线性高斯混合实现。理解了这一层,后面读代码会顺畅很多。
1. 为什么说这个滤波是“跳过数据关联”的多目标跟踪方法
1.1 点目标与扩展目标:最大的差别在于一个目标到底回多少量测
传统点目标跟踪,默认每个目标每帧最多产生一个量测,检测概率低了还可能漏掉。扩展目标模型不同,一个目标每帧可能产生好几个量测,量测数本身是随机的。雷达和激光雷达场景最明显:一辆车在点云里扫出来几十个点,一个行人也可能是五六个回波。还有视频检测里,一个目标对应多个检测框或者多个人体关键点,也可以理解成扩展量测。
这个区别看似简单,实际上是算法选型的核心分水岭。点目标那一套“一个量测只更新一个目标”的关联逻辑,在扩展目标场景下很难直接套用,因为同一个目标的多个量测之间也存在“组内关联”,你不知道哪些量测属于同一目标,也不知道这一组量测到底是哪个目标产生的。换句话说,点目标跟踪的难点是“量测-目标”匹配,扩展目标跟踪的难点是“量测集合-目标”匹配,困难程度完全不是一个量级。
1.2 传统数据关联方法为什么在扩展目标场景下很难受
JPDA和MHT的复杂度来源是关联假设的数量。点目标场景下,目标数和量测数的笛卡尔积还可以靠门限和剪枝硬扛;扩展目标场景里每个目标可能对应多个量测,这个组合数
