觉得有帮助请点赞关注收藏~~~
一、目标跟踪简介
目标跟踪算法可以进行轨迹特征的分析和提取,以弥补目标检测的不足;有效地去除误检,提高检测精度,为进一步的行为分析提供基础。例如,在自动驾驶系统中,目标跟踪算法要对运动的车、行人等目标进行跟踪,根据运动轨迹对它们在未来的位置、速度等信息作出预判。
跟踪就是在视频的不同帧中定位某一目标,从算法的设计角度来说分为两个阶段
1:预测第S帧图像中目标A 目标B 在第S+N帧图像中可能出现的位置 即候选区域
2:第S+N帧的候选区域是否为第S帧图像中目标A 目标B 如果是则跟踪成功
二、SORT目标跟踪算法
对于多目标的SORT算法,目标跟踪算法是将各帧的目标检测结果分别赋予跟踪序号的过程,在不同视频帧出现的同一目标需要赋予相同的跟踪序号,算法流程图如下
下面对算法流程中介绍的卡尔曼滤波器和匈牙利算法进行详细介绍
1:卡尔曼滤波器
卡尔曼滤波器不需要存储大量的历史数据,只需要保留系统前一时刻的状态,根据系统的状态空间向量模型准确预测当前状态,该算法计算量小,在速度上占有优势,而且是一个纯时域的滤波器,占用内存小,在实际工程上应用广泛,是解决实时性问题的理想选择
卡尔曼滤波器流程分为两个步骤:状态预测和状态更新。卡尔曼滤波器首先要计算系统状态的先验估计,利用前一时刻系统的状态估计值,计算当前时刻系统状态和误差协方差的预测值,当前时刻的观测值进入系统后,融入新的观测值和先验估计构造后验估计,对模型进行更新,从而更加准确地预测系统下一时刻状态估计
在大多数情况下,同一个目标的运动状态在较短时间可以近似为匀速直线运动,采用线性的卡尔曼滤波器依据中心坐标、尺寸大小比例以及对下一帧的预测信息等为每个目标建立运动模型,进而对下一帧目标的位置进行估计来加快目标跟踪的计算速度
三、基于匈牙利算法的数据关联
匈牙利算法是一种组合优化算法,用于求解指派问题,例如把N项任务分配给N个人时,列出所有组合情况的总薪酬开销可求最小值,但是当任务数和人数变大时,难以列出所有的分配情况,可利用匈牙利算法进行任务分配,实现最合理的资源配置
目标跟踪的主要任务之一就是将视频中不同帧的目标进行匹配,如下图所示,卡尔曼滤波器预测得到目标跟踪框之后,计算出目标跟踪框和目标检测框之间的相交度,即上一帧预测得到的跟踪框与当前帧中的检测框之间的交集面积与并集面积的比值,利用匈牙利匹配算法对检测框与预测框的相交度组成的状态关联矩阵进行指派,实现目标检测结果与跟踪序列之间的匹配
匈牙利算法步骤如下
1:给定N个目标检测框分配N个目标跟踪框,可以用一个N×N的开销矩阵来表示这一指派问题
2:对开销矩阵的各行进行操作 找出每一行中值最小的元素,然后把该行所有元素都减去这一最小值
3:对开销矩阵的各列进行操作,找出每一列中值最小的元素,然后把该列所有元素都减去这一最小值
4:用尽量少的横线或者竖线覆盖矩阵中的所有0
5:从第4步中未被覆盖的元素中找到最小值,然后把所有元素都减去这一最小值 给直线交叉点的元素加上这一最小值,被覆盖元素的最小值实际上是完成所有任务过程中不可避免的开销,这一步的作用是增加开销矩阵中0的个数,使得任务更易分配
6:重复第三步和第四步 直到所有任务都被分配
创作不易 觉得有帮助请点赞关注收藏~~~