匈牙利算法(Hungarian Algorithm)与KM算法(Kuhn-Munkres Algorithm)是做多目标跟踪的小伙伴很容易在论文中见到的两种算法。他们都是用来解决多目标跟踪中的数据关联问题。
对理论没有兴趣的小伙伴可以先跳过本文,进行下一篇的学习,把匈牙利算法这些先当作一个黑箱来用,等需要了再回过头来学习理论。但个人建议,至少要明白这些算法的目的与大致流程。
如果大家用这两种算法的名字在搜索引擎上搜索,一定会首先看到这个名词:二分图(二部图)。匈牙利算法与KM算法都是为了求解二分图的最大匹配问题。
有一种很特别的图,就做二分图,那什么是二分图呢?就是能分成两组,U,V。其中,U上的点不能相互连通,只能连去V中的点,同理,V中的点不能相互连通,只能连去U中的点。这样,就叫做二分图。
读者可以把二分图理解为视频中连续两帧中的所有检测框,第一帧所有检测框的集合称为U,第二帧所有检测框的集合称为V。同一帧的不同检测框不会为同一个目标,所以不需要互相关联,相邻两帧的检测框需要相互联通,最终将相邻两帧的检测框尽量完美地两两匹配起来。而求解这个问题的最优解就要用到匈牙利算法或者KM算法。
1. 匈牙利算法(Hungarian Algorithm)
先介绍匈牙利算法,引用百度百科的说法,匈牙利算法是一种在多项式时间内求解任务分配问题的组合优化算法,并推动了后来的原始对偶方法。美国数学家哈罗德·库恩于1955年提出该算法。此算法之所以被称作匈牙利算法,是因为算法很大一部分是基于以前匈牙利数学家Dénes Kőnig和Jenő Egerváry的工作之上创建起来的。
https:// blog.csdn.net/dark_scop e/article/details/8880547#commentBox
这篇博文对匈牙利算法进行了非常简单清晰的解释,我这里引用它来说明一下匈牙利算法的流程。