Licencia YOLO
Volver al glosario de Ultralytics

Hungarian Algorithm

El algoritmo húngaro encuentra la asignación uno a uno de coste mínimo entre dos conjuntos y se utiliza en el seguimiento de objetos y el entrenamiento de detectores en visión artificial.

El algoritmo húngaro es un método de optimización exacto que encuentra el emparejamiento uno a uno de menor coste entre todos los elementos del conjunto más pequeño de dos conjuntos. Optimiza el coste total de todos los pares seleccionados. En visión artificial, conecta las detecciones con los objetos seguidos o las predicciones con los objetivos de entrenamiento.

Harold W. Kuhn lo presentó en 1955 en El método húngaro para el problema de asignación. Método húngaro y algoritmo de Kuhn-Munkres son nombres alternativos para la misma familia de algoritmos. Su nombre rinde homenaje a los matemáticos húngaros Dénes Kőnig y Jenő Egerváry, cuyo trabajo constituye la base del método.

Cómo funciona el algoritmo húngaro#

La entrada es una matriz de costes: cada fila representa un elemento de un conjunto, cada columna representa un elemento del otro y cada valor mide el coste de emparejarlos. Para una matriz cuadrada, la solución selecciona exactamente un valor por fila y columna. Una estrategia voraz se decide por pares individuales atractivos; el emparejamiento húngaro encuentra el mínimo global.

En el procedimiento clásico de reducción de matrices, resta el mínimo de cada fila a todos los valores de esa fila y, después, el mínimo de cada columna a todos los valores de esa columna. Estas reducciones conservan la mejor asignación completa porque cada asignación utiliza una vez cada fila y cada columna. Cubre todos los ceros con el menor número de líneas horizontales y verticales. Si se necesitan n líneas para una matriz n x n, selecciona n ceros sin compartir filas ni columnas. De lo contrario, resta el menor valor descubierto a los valores descubiertos, súmalo en las intersecciones de las líneas de cobertura y repite la comprobación de cobertura. Calcula el coste de la asignación con la matriz original.

Las implementaciones eficientes del algoritmo húngaro se ejecutan en tiempo O(n³) para matrices cuadradas, frente a las n! asignaciones completas posibles.

Aplicaciones en visión artificial#

Seguimiento de varios objetos. El diseño original de SORT combina la asignación húngara con un filtro de Kalman, que predice la posición de cada trayectoria. La intersección sobre la unión mide el solapamiento entre las cajas delimitadoras predichas y detectadas. La implementación de referencia de SORT resuelve la asignación con LAPJV o SciPy, descarta las asociaciones con poco solapamiento y asigna identidades a las detecciones sin emparejar.

Entrenamiento de detectores de objetos. DETR utiliza el emparejamiento húngaro para emparejar predicciones desordenadas con objetos etiquetados. Su transformador genera posiciones de predicción, y el emparejamiento combina los costes de clasificación y de localización de las cajas. Con suficientes posiciones, cada objetivo recibe una predicción, lo que hace que la función de pérdida sea independiente del orden de las anotaciones; las posiciones sin emparejar aprenden la clase «sin objeto». Ultralytics aplica esta formulación de asignación en RT-DETR: su HungarianMatcher combina los costes de clasificación, distancia de coordenadas L1 e IoU generalizada. Su implementación del algoritmo de asignación lineal utiliza un algoritmo modificado de Jonker-Volgenant para seleccionar los pares de entrenamiento.

Emparejamiento húngaro en Python#

El paquete munkres de Python implementa el método húngaro. Instálalo con pip install munkres y, después, resuelve su matriz de costes de ejemplo:

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}")

El resultado es Minimum total cost: 12, la suma más pequeña posible al seleccionar un valor por fila y columna.

El problema de asignación es la tarea; el algoritmo húngaro es una de las formas de resolverlo. La supresión no máxima elimina las detecciones que compiten entre sí dentro de una imagen. La reidentificación de objetos aporta información sobre la apariencia para establecer asociaciones, a menudo mediante incrustaciones comparadas con la similitud coseno. Estas puntuaciones pueden convertirse en costes de emparejamiento.

Los tamaños desiguales de los grupos producen matrices rectangulares. El seguimiento también necesita reglas de rechazo o entradas ficticias con costes definidos para los elementos sin emparejar, a fin de adaptarse a las detecciones ausentes y a los objetos que aparecen por primera vez. Una asociación incorrecta provoca un cambio de identidad: el ID de seguimiento pasa a otro objeto.

El solucionador de asignación lineal de SciPy resuelve el mismo problema de optimización mediante un algoritmo modificado de Jonker-Volgenant. Para una matriz rectangular r x c, devuelve exactamente min(r, c) pares cuando existe una asignación completa factible.

Explora las soluciones

Visión artificial en el deporte

Visión artificial en el deporte

Descubre cómo Ultralytics YOLO impulsa la visión artificial en el deporte con el seguimiento de jugadores y balones, analíticas de rendimiento, información útil para entrenadores y rehabilitación de deportistas.
Más información
Visión artificial para imágenes aéreas

Visión artificial para imágenes aéreas

Convierte imágenes aéreas y de drones en información útil en tiempo real para la agricultura, la acuicultura, la conservación y el análisis geoespacial con Ultralytics YOLO.
Más información
Visión artificial en el sector aeroespacial

Visión artificial en el sector aeroespacial

Aplica la visión artificial en el sector aeroespacial con Ultralytics YOLO para inspeccionar aeronaves, detectar objetos extraños en pistas, gestionar operaciones en tierra y detectar defectos en materiales compuestos.
Más información
Visión artificial en seguridad

Visión artificial en seguridad

Protege todas tus instalaciones con los modelos Ultralytics YOLO. La IA visual permite supervisar perímetros, detectar amenazas, reconocer matrículas y mejorar la seguridad laboral.
Más información
Visión artificial en robótica

Visión artificial en robótica

Potencia máquinas más inteligentes con los modelos Ultralytics YOLO. La IA visual en robótica impulsa la navegación autónoma, la percepción, el seguimiento de objetos y el control en tiempo real.
Más información
Visión artificial en logística

Visión artificial en logística

Agiliza la logística con modelos Ultralytics YOLO. La IA visual permite inspeccionar paquetes, clasificarlos, realizar el seguimiento de vehículos y supervisar la seguridad del almacén en tiempo real.
Más información
Visión artificial en el comercio minorista

Visión artificial en el comercio minorista

Reinventa el comercio minorista con modelos Ultralytics YOLO. La IA visual permite realizar el seguimiento del inventario, supervisar estanterías, gestionar colas y obtener información más útil sobre los clientes.
Más información
Visión artificial en el sector sanitario

Visión artificial en el sector sanitario

Desarrolla soluciones sanitarias con modelos Ultralytics YOLO. La IA visual en el sector sanitario permite acelerar el diagnóstico por imagen, mejorar los diagnósticos y supervisar a los pacientes.
Más información
Visión artificial en la fabricación

Visión artificial en la fabricación

Optimiza la fabricación con modelos Ultralytics YOLO. La IA visual mejora el control de calidad, la detección de defectos, el cumplimiento de las normas de uso de EPI y la automatización de las líneas de montaje.
Más información
Visión artificial en la automoción

Visión artificial en la automoción

Aplica la visión artificial al sector de la automoción con modelos Ultralytics YOLO. La IA visual mejora la seguridad vial, la asistencia al conductor y la automatización de vehículos para lograr carreteras más inteligentes.
Más información
Visión artificial en la agricultura

Visión artificial en la agricultura

Incorpora la IA de visión a la agricultura inteligente con modelos Ultralytics YOLO. Impulsa la monitorización de cultivos, el seguimiento del ganado y la agricultura de precisión para obtener cosechas más abundantes e inteligentes.
Más información

¡Construyamos juntos el futuro de la IA!

Inicia tu recorrido hacia el futuro del aprendizaje automático