在多目标跟踪任务中,如何将检测框与已有轨迹进行关联,进而维持目标的连续跟踪,是一个关键问题。DeepSort(Deep Simple Online and Realtime Tracking)是一种常用的多目标跟踪算法,它结合了IOU(交并比)与匈牙利算法进行目标检测与轨迹匹配,从而实现高效准确的目标跟踪。本文将详细解释基于IOU匹配的检测-轨迹关联原理,并介绍匈牙利算法在该过程中的应用。
一、IOU匹配原理
1. IOU简介
IOU,全称为 Intersection over Union,是评估两个边界框重叠度的度量标准。在目标跟踪中,检测到的边界框与已有轨迹的预测框之间,IOU是衡量它们是否属于同一目标的重要指标。
IOU的计算公式如下:
其中,是检测到的边界框,是预测的轨迹边界框,表示两个框的交集,表示它们的并集。IOU值越大,表示两个边界框的重叠度越高,可能来自同一目标。
2. 将`detections`与`tracks`进行IOU匹配
在DeepSort中,追踪器会为每一帧的检测(`detections`)和已有的轨迹(`tracks`)构造一个IOU矩阵。矩阵中的每个元素代表某一检测与某一轨迹之间的IOU值。例如,如果有`m`个检测和`n`个轨迹,则会形成一个`m x n`的IOU矩阵。
根据IOU值大小,将`detections`和`tracks`进行匹配。一般来说,IOU值大于某个阈值的检测和轨迹被视为同一目标。DeepSort在IOU的基础上还结合了外观特征信息,通过计算检测框和轨迹框的相似度,进一步提高匹配精度。
对于每一个检测框 `detections` 和每一个预测轨迹框 `tracks`,计算它们的 IOU,得到一个 IOU 矩阵。假设有 N 个 detections 和 M 个 tracks,则得到一个 N×M 的矩阵。
track_1 track_2 ... track_M
det_1 0.85 0.2 0.3
det_2 0.3 0.6 0.1
...
det_N 0.1 0.4 0.9
这个矩阵表示每一个 detection 和 track 之间的匹配程度。通常,会设定一个 IOU 阈值(例如 0.5),只有 IOU 高于这个阈值的才会被认为是可能的匹配。
匹配过程分为以下三类结果:
Matched tracks:表示在当前帧中的 detections 和之前的 tracks 成功匹配了。即通过 IOU 匹配找到了可能是同一个目标的 detection 和 track。这些 tracks 将更新其状态(如位置、速度等),并继续跟踪。
Unmatched detections:表示当前帧中有新的 detections,但是无法匹配到任何已有的 tracks。这些可能是新出现的目标,需要为它们初始化新的 track。
Unmatched tracks:表示某些已有的 tracks 在当前帧中没有找到匹配的 detections,可能是因为目标消失、被遮挡、或检测器漏检了。这些轨迹通常会短暂保留,并等待后续帧中是否能继续匹配。如果在若干帧中仍无法匹配,track 会被删除。
通过这三类匹配结果,跟踪器可以更新已有的轨迹、初始化新的轨迹,或终止某些轨迹的跟踪。
二、匈牙利算法在DeepSort中的应用
为了在匹配过程中找到最优的目标-轨迹关联方案,DeepSort采用了匈牙利算法(Hungarian Algorithm)。匈牙利算法通过解决一个最优化问题,确保在关联`detections`和`tracks`时,匹配的总成本最低(这里的成本可以是IOU值的负值,代表IOU越大,成本越小)。
1. 匈牙利算法的基本思想
匈牙利算法是一个经典的二分图匹配算法,常用于解决分配问题。假设我们有一组检测和轨迹的IOU矩阵,通过匈牙利算法,我们能够找到一种最优匹配,使得检测与轨迹的关联方案能带来整体IOU最大的匹配。
匈牙利算法的具体步骤如下:
1. 构造代价矩阵:将检测与轨迹之间的IOU矩阵视作一个代价矩阵,矩阵中的每个元素代表某一检测与某一轨迹的匹配成本(IOU值的负值)。
2. 减操作:对代价矩阵的每一行减去该行的最小值,接着对每一列进行同样的操作。这样可以确保代价矩阵中的最小值为0,并保留了原始矩阵中的相对关系。
3. 独立0的寻找:在调整后的代价矩阵中,寻找一组独立的0,即这些0不在同一行或同一列。独立0的数量等于所需的最优匹配数。
4. 矩阵调整:如果独立0的数量不够,算法将对矩阵进行调整,直到找到足够的独立0。具体的调整方法是:标记未被覆盖的最小元素,并将其加入到已有0的行或列中,直到找到完整的匹配。
5. 匹配结果:通过独立0的位置,可以确定检测与轨迹的匹配关系。
2. 在DeepSort中的应用
在DeepSort中,匈牙利算法的输入是`detections`和`tracks`之间的IOU矩阵。算法根据IOU值找到代价最低的匹配方案,从而实现检测框与轨迹框的最优匹配。最终,DeepSort会结合匈牙利算法的输出,将匹配的`detections`更新到对应的轨迹上,保持目标的连续跟踪。
三、总结
在DeepSort目标跟踪算法中,IOU匹配和匈牙利算法共同作用,实现了高效、准确的检测-轨迹关联。IOU作为评估检测框与轨迹框重叠度的重要指标,帮助筛选出潜在的匹配对,而匈牙利算法则通过求解最优化问题,确保匹配方案的最优性。结合这两种方法,DeepSort不仅能够准确跟踪已有目标,还能有效处理目标的新增和丢失,广泛应用于视频监控、自动驾驶等多目标跟踪场景。