多目标跟踪(Multi-Object Tracking, MOT)中的核心算法介绍:卡尔曼滤波算法和匈牙利算法
卡尔曼滤波算法和匈牙利算法两者都是多目标跟踪Multi-Object Tracking, MOT中的核心算法但解决的是完全不同的问题。简单来说卡尔曼滤波负责“预测未来”和“修正当前”。它帮你推测目标下一刻会出现在哪里。匈牙利算法负责“数据关联”。它帮你判断当前检测到的某个目标究竟是之前看到的哪一辆车/哪个人。下面详细拆解1. 卡尔曼滤波算法 (Kalman Filter)核心思想在充满噪声的系统中结合预测根据模型和观测实际传感器数据来估计系统的最佳状态。通俗理解你在打羽毛球。球飞过来时你的大脑在做两件事预测根据球刚才的轨迹、速度猜测它下一秒会到哪卡尔曼预测。修正眼睛看到球的实际位置后发现预测有偏差修正一下判断卡尔曼更新。最终你接球的位置是“预测位置”和“看到的位置”的加权平均。在多目标跟踪中的应用输入上一帧某个目标车/人的位置和速度。预测根据运动模型如匀速运动预测当前帧该目标的位置。更新当前帧传感器如摄像头检测到了这个目标的新位置用这个新数据修正预测输出更精确的当前帧位置。优点抗噪声能力强。即使目标短暂被遮挡检测不到模型仍能继续预测其轨迹。局限性假设系统是线性的、噪声是高斯分布的。现实中往往不满足所以衍生出“扩展卡尔曼滤波(EKF)”或“无迹卡尔曼滤波(UKF)”。2. 匈牙利算法 (Hungarian Algorithm)核心思想解决最优分配问题——如何给N个任务分配N个人使总体成本最低或效率最高。通俗理解你是调度员有3辆出租车和3个叫车的乘客。每辆车到每个乘客的距离不同。你的任务是把每辆车配给一个乘客让总行驶距离最小。匈牙利算法就是找到最优匹配的数学方法。在多目标跟踪中的应用输入一个“代价矩阵”。例如行表示上一帧的3个轨迹已跟踪的目标列表示当前帧检测到的3个目标。矩阵中的数字代表“轨迹预测位置”与“检测位置”之间的距离或相似度差异。过程匈牙利算法计算如何为每个已有轨迹匹配一个最合适的当前检测目标使匹配误差总和最小。输出一一对应的匹配对哪些检测目标对应哪些已有轨迹以及未匹配的轨迹可能消失和未匹配的检测可能是新出现的目标。二者在跟踪流程中的协作关系一个标准的多目标跟踪器如SORT算法每帧的处理流程通常是成功匹配未匹配的轨迹未匹配的检测上一帧 跟踪轨迹位置速度卡尔曼滤波 预测得到当前帧预测位置当前帧 传感器检测得到实际检测位置计算代价矩阵预测位置 vs 检测位置如IOU距离匈牙利算法 数据关联求解最优匹配匹配结果卡尔曼滤波 更新用检测值修正预测值可能消失或暂时遮挡新建跟踪轨迹输出当前帧精确跟踪位置总结对比表特性卡尔曼滤波匈牙利算法问题性质状态估计问题分配/指派问题输入上一状态、当前观测代价/收益矩阵输出最优状态估计最优两两匹配作用平滑、预测、滤波关联、匹配、去重依赖运动模型、噪声统计代价度量如距离、IOU比喻通过预测修正接住一个球给N个球分配N个接球手