https://zhuanlan.zhihu.com/p/90835266
Tracking-by-Detecton 基于目标检测的结果来进行目标跟踪:
- 匈牙利算法(KM算法):将前一帧中的跟踪框tracks与当前帧中的检测框detections进行关联,通过外观信息、马氏距离、或者IOU来计算代价矩阵
- 卡尔曼滤波:基于传感器的测量值(在目标跟踪中即目标检测器)与跟踪器的预测值,实现更精确的估计。(结合预测(先验分布)和测量更新(似然)的状态估计算法)
关键步骤:
deeposrt改进:代价函数增加代表运动模型的马氏距离和代表外观模型的Re-ID特征。
检测器生成detections → 预测tracks→ 使用匈牙利算法将新tracks和detecions进行匹配 → 用每对中的detection进行对应的track卡尔曼滤波更新
1)在目标跟踪中,需要估计track的以下两个状态:
均值(Mean):表示目标的位置信息,由bbox的中心坐标 (u, v),宽高比r,高h,以及各自的速度变化值组成,由8维向量表示为 。
协方差(Covariance ):表示目标位置信息的不确定性,由8x8的对角矩阵P表示,矩阵中数字越大则表明不确定性越大。
2)track在t+1时刻的状态: 卡尔曼滤波器采用匀速模型和线性观测器模型
track在t+1时刻的协方差矩阵P'
协方差是经验参数,初始状态为
系统噪声矩阵
3)基于卡尔曼滤波器的预测结果进行匹配:
采用匈牙利算法/KM算法先对Klaman滤波器预测阶段得到的运动估计和观测进行关联。
匹配成功的则进行Kalman滤波器的更新,匹配失败的跟踪轨迹则视为丢失,匹配失败的观测量则视为新增轨迹;
4)匹配成功后,对track根据匹配对的检测结果进行更新。
a.测量矩阵H将track的均值向量x'映射到检测空间
detection与track的均值误差:
b. 将协方差矩阵P'映射到检测空间,加上噪声矩阵
检测器噪声矩阵
c.计算卡尔曼增益K,用于估计误差的重要程度
d.计算更新后的均值向量x和协方差矩阵P