获取 YOLO 许可
返回 Ultralytics 术语表

Hungarian Algorithm

匈牙利算法可在两个集合之间找到成本最低的一对一匹配,为计算机视觉中的目标跟踪和检测训练提供支持。

匈牙利算法是一种精确的优化方法,可找到成本最低的一对一匹配,为两个集合中较小集合的每个元素配对。它会优化所有选定配对的总成本。在计算机视觉中,它用于将检测结果与跟踪对象配对,或将预测结果与训练目标配对。

Harold W. Kuhn 于 1955 年在《指派问题的匈牙利方法》中提出了该算法。匈牙利方法和 Kuhn–Munkres 算法是同一类算法的不同名称。该算法以匈牙利数学家 Dénes Kőnig 和 Jenő Egerváry 命名,他们的研究为这一方法奠定了基础。

匈牙利算法的工作原理#

输入是一个成本矩阵:每一行表示一个集合中的元素,每一列表示另一个集合中的元素,每个条目表示将这两个元素配对的成本。对于方阵,解会在每行和每列中恰好选取一个条目。贪心策略会选定单个看似划算的配对;匈牙利匹配则会找到全局总成本最低的方案。

在经典的矩阵约简过程中,从每一行减去该行的最小值,再从每一列减去该列的最小值。由于每个完整指派都会恰好使用每一行和每一列一次,这些约简不会改变最优完整指派。用尽可能少的水平线和垂直线覆盖所有零值。如果一个 n x n 矩阵需要 n 条线,则选择 n 个零值,且这些零值不能共用行或列。否则,从未覆盖的条目中减去最小的未覆盖值,并在覆盖线的交点处加上该值,然后重复覆盖测试。使用原始矩阵计算指派的成本。

高效的匈牙利算法实现对方阵的运行时间为 O(n³),而可能的完整指派有 n! 种。

计算机视觉中的应用#

多目标跟踪。原始 SORT 设计将匈牙利指派与卡尔曼滤波器结合使用,由卡尔曼滤波器预测每条轨迹的位置。交并比用于衡量预测边界框与检测到的边界框之间的重叠程度。SORT 的参考实现使用 LAPJV 或 SciPy 求解指派,拒绝重叠度低的关联,并为未匹配的检测结果创建身份标识。

目标检测训练。DETR使用匈牙利匹配,将无序预测与标注对象配对。它的Transformer会生成预测槽位,匹配过程则结合分类成本和边界框位置成本。只要槽位足够,每个目标都会获得一个预测,使损失函数不受标注顺序影响;未匹配的槽位则学习“无目标”类别。Ultralytics 在 RT-DETR 中采用了这种指派方案:其中的匈牙利匹配器结合分类成本、L1 坐标距离和广义 IoU 成本。其线性指派后端使用经过修改的 Jonker–Volgenant 求解器来选择训练配对。

Python 中的匈牙利匹配#

munkres Python 包实现了匈牙利方法。使用 pip install munkres 安装,然后求解其示例成本矩阵:

from munkres import Munkres

costs = [
    [5, 9, 1],
    [10, 3, 2],
    [8, 7, 4],
]
solver = Munkres()
assignments = solver.compute(costs)
# Read costs from the original matrix.
minimum_cost = sum(costs[row][col] for row, col in assignments)
print(f"Minimum total cost: {minimum_cost}")

输出为 Minimum total cost: 12,这是在每行和每列中各选取一个条目时所能达到的最小总和。

指派问题是要解决的任务;匈牙利算法是其中一种求解方法。非极大值抑制会移除图像中的竞争检测结果。目标重识别为关联提供外观信息,通常通过嵌入向量并使用余弦相似度进行比较。这类分数可以用作匹配成本。

集合大小不同时会产生矩形矩阵。跟踪还需要拒绝规则或具有明确未匹配成本的虚拟条目,以处理漏检和新出现的对象。错误关联会导致身份切换:一条轨迹的 ID 转移到另一个对象。

SciPy 的线性指派求解器使用经过修改的 Jonker–Volgenant 算法求解同一优化问题。对于 r x c 的矩形矩阵,只要存在可行的完整指派,求解器就会返回恰好 min(r, c) 个配对。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来