数据关联是多目标跟踪任务中的关键步骤,其目的主要是为了进行帧与帧之间的多个目标的匹配,其中包括新目标的出现,旧目标的消失,以及前一帧与当前帧的行人id匹配。传统的数据关联方法多为运筹学方法,比较经典即为匈牙利算法和KM算法,接下来将详细介绍这两种算法。
在了解匈牙利算法与KM算法之前,我们需要了解一个概念“二分图”。简单来说就是两组集合U与V,其中U与V集合内部的点不能相互连通,但是U与V的点之间是可以联通的,如下图所示:
我们可以看到,二分图的结构与我们多目标跟踪任务的结构很相像,我们可以把U与V看成是多目标跟踪任务中的前一帧与当前帧的检测框集合,U与V之间的关联视为前一帧与当前帧的同一id目标的检测框的关联,这样我们需要做的就是将相邻两帧的目标检测框尽可能准确的两两匹配。为了解决这个问题,就需要用到匈牙利算法或者KM算法。
1.匈牙利算法(Hungarian Algorithm)
匈牙利算法是基于Hall定理中充分性证明的思想,它是部分图匹配最常见的算法,该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最大匹配的算法。
具体来说,匈牙利算法是一个递归过程,详细步骤如下:
(1)初始化二分图:即将当前帧中可能与上一帧中目标相匹配的检测框确认
(2)按id顺序依次进行匹配,首先将可能与上一帧目标1相匹配的当前帧的目标1进行匹配(红色代表以匹配);
(3)接着对目标