Licenciar o YOLO
Voltar ao glossário da Ultralytics

Hungarian Algorithm

O algoritmo húngaro encontra a atribuição um para um de custo mínimo entre dois conjuntos, impulsionando o rastreamento de objetos e o treinamento de deteção em visão computacional.

O algoritmo húngaro é um método de otimização exato que encontra a correspondência um para um de menor custo, associando cada elemento do menor de dois conjuntos. Ele otimiza o custo total de todos os pares selecionados. Em visão computacional, associa deteções a objetos rastreados ou previsões a alvos de treinamento.

Harold W. Kuhn introduziu-o em 1955 em O método húngaro para o problema de atribuição. Método húngaro e algoritmo de Kuhn–Munkres são nomes alternativos para a mesma família de algoritmos. O nome homenageia os matemáticos húngaros Dénes Kőnig e Jenő Egerváry, cujo trabalho serve de base ao método.

Como funciona o algoritmo húngaro#

A entrada é uma matriz de custos: cada linha representa um elemento de um conjunto, cada coluna representa um elemento do outro conjunto e cada entrada mede o custo de associá-los. Para uma matriz quadrada, a solução seleciona exatamente uma entrada por linha e coluna. Uma estratégia gulosa escolhe pares individualmente atraentes; a correspondência húngara encontra o mínimo global do custo total.

No clássico procedimento de redução de matriz, subtrai o mínimo de cada linha dessa linha e, em seguida, o mínimo de cada coluna dessa coluna. Essas reduções preservam a melhor atribuição completa, pois cada atribuição usa cada linha e coluna uma vez. Cobre todos os zeros com o menor número possível de linhas horizontais e verticais. Se forem necessárias n linhas para uma matriz n x n, seleciona n zeros sem linhas ou colunas em comum. Caso contrário, subtrai o menor valor não coberto das entradas não cobertas, adiciona-o nas interseções das linhas de cobertura e repete o teste de cobertura. Calcula o custo da atribuição usando a matriz original.

Implementações eficientes do algoritmo húngaro têm complexidade O(n³) para matrizes quadradas, em comparação com as n! atribuições completas possíveis.

Aplicações em visão computacional#

Rastreamento de múltiplos objetos. O projeto original do SORT combina a atribuição húngara com um filtro de Kalman, que prevê a posição de cada trajetória. A interseção sobre união mede a sobreposição entre as caixas delimitadoras previstas e detetadas. A implementação de referência do SORT resolve a atribuição usando LAPJV ou SciPy, rejeita associações com baixa sobreposição e cria identidades para deteções sem correspondência.

Treinamento de deteção de objetos. O DETR usa correspondência húngara para associar previsões não ordenadas a objetos anotados. O seu Transformer produz posições de previsão, e a correspondência combina custos de classificação e localização das caixas. Com posições suficientes, cada alvo recebe uma previsão, tornando a função de perda independente da ordem das anotações; as posições sem correspondência aprendem a classe «sem objeto». A Ultralytics aplica esta formulação de atribuição no RT-DETR: o seu HungarianMatcher combina custos de classificação, distância de coordenadas L1 e IoU generalizada. O seu backend de atribuição linear usa um solucionador Jonker–Volgenant modificado para selecionar os pares de treinamento.

Correspondência húngara em Python#

O pacote Python munkres implementa o método húngaro. Instala-o com pip install munkres e, em seguida, resolve a matriz de custos de exemplo:

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

A saída é Minimum total cost: 12, a menor soma possível ao selecionar uma entrada por linha e coluna.

O problema de atribuição é a tarefa; o algoritmo húngaro é um dos solucionadores. A supressão não máxima remove deteções concorrentes numa imagem. A reidentificação de objetos fornece informações de aparência para a associação, muitas vezes por meio de embeddings comparados usando a similaridade do cosseno. Essas pontuações podem tornar-se custos de correspondência.

Tamanhos diferentes dos grupos produzem matrizes retangulares. O rastreamento também precisa de regras de rejeição ou entradas fictícias com custos definidos para objetos sem correspondência, a fim de lidar com deteções ausentes e objetos que aparecem recentemente. Uma associação incorreta causa uma troca de identidade: o ID de uma trajetória é transferido para outro objeto.

O solucionador de atribuição linear do SciPy resolve o mesmo problema de otimização usando um algoritmo Jonker–Volgenant modificado. Para uma matriz retangular r x c, retorna exatamente min(r, c) pares quando existe uma atribuição completa viável.

Explore as soluções

Visão computacional no desporto

Visão computacional no desporto

Descubra como o Ultralytics YOLO impulsiona a visão computacional no esporte com rastreamento de jogadores e bolas, análise de desempenho, insights para treinadores e reabilitação de atletas.
Saiba mais
Visão computacional para imagens aéreas

Visão computacional para imagens aéreas

Transforma imagens de drones e aéreas em informações em tempo real para a agricultura, a aquacultura, a conservação e a análise geoespacial com Ultralytics YOLO.
Saiba mais
Visão computacional no setor aeroespacial

Visão computacional no setor aeroespacial

Aplica visão computacional na indústria aeroespacial com Ultralytics YOLO para inspecionar aeronaves, detetar objetos estranhos na pista (FOD), apoiar operações aeroportuárias em terra e detetar defeitos em materiais compósitos.
Saiba mais
Visão computacional na segurança

Visão computacional na segurança

Protege todas as instalações com os modelos Ultralytics YOLO. A IA visual permite monitorizar perímetros, detetar ameaças, reconhecer matrículas e melhorar a segurança no local de trabalho.
Saiba mais
Visão computacional na robótica

Visão computacional na robótica

Potencia máquinas mais inteligentes com os modelos Ultralytics YOLO. A IA visual na robótica permite navegação autónoma, perceção, rastreamento de objetos e controlo em tempo real.
Saiba mais
Visão computacional na logística

Visão computacional na logística

Otimize a logística com os modelos Ultralytics YOLO. A IA de visão permite inspecionar pacotes, fazer triagem, rastrear veículos e monitorar a segurança em tempo real nos armazéns.
Saiba mais
Visão computacional no varejo

Visão computacional no varejo

Reinvente o varejo com os modelos Ultralytics YOLO. A IA de visão permite rastrear o estoque, monitorar prateleiras, gerenciar filas e obter insights mais inteligentes sobre clientes.
Saiba mais
Visão computacional na área da saúde

Visão computacional na área da saúde

Desenvolva soluções de saúde com os modelos Ultralytics YOLO. A IA de visão na área da saúde permite obter imagens médicas mais rapidamente, diagnósticos mais inteligentes e monitoramento de pacientes.
Saiba mais
Visão computacional na manufatura

Visão computacional na manufatura

Otimize a manufatura com modelos Ultralytics YOLO. A IA visual impulsiona o controle de qualidade, a detecção de defeitos, a conformidade com o uso de EPI e a automação da linha de montagem.
Saiba mais
Visão computacional no setor automotivo

Visão computacional no setor automotivo

Aplique visão computacional no setor automotivo com modelos Ultralytics YOLO. A IA visual aumenta a segurança viária, aprimora a assistência ao condutor e viabiliza a automação de veículos para estradas mais inteligentes.
Saiba mais
Visão computacional na agricultura

Visão computacional na agricultura

Leve a IA de visão à agricultura inteligente com os modelos Ultralytics YOLO. Aprimore o monitoramento de plantações, o rastreamento de animais e a agricultura de precisão para obter safras maiores e mais inteligentes.
Saiba mais

Vamos construir juntos o futuro da IA!

Comece sua jornada rumo ao futuro do aprendizado de máquina