Licenza YOLO
Torna al glossario di Ultralytics

Hungarian Algorithm

L'algoritmo ungherese trova l'assegnamento uno-a-uno a costo minimo tra due insiemi e viene utilizzato nel tracciamento degli oggetti e nell'addestramento dei modelli di rilevamento nella visione artificiale.

L'algoritmo ungherese è un metodo di ottimizzazione esatto che trova l'abbinamento uno-a-uno a costo minimo, associando ogni elemento dell'insieme più piccolo a un elemento dell'altro insieme. Ottimizza il costo totale di tutte le coppie selezionate. Nella visione artificiale, associa i rilevamenti agli oggetti tracciati oppure le previsioni ai target di addestramento.

Harold W. Kuhn lo presentò nel 1955 in Il metodo ungherese per il problema dell'assegnamento. Il metodo ungherese e l'algoritmo di Kuhn–Munkres sono nomi alternativi per la stessa famiglia di algoritmi. Il nome rende omaggio ai matematici ungheresi Dénes Kőnig e Jenő Egerváry, il cui lavoro è alla base del metodo.

Come funziona l'algoritmo ungherese#

L'input è una matrice dei costi: ogni riga rappresenta un elemento di un insieme, ogni colonna rappresenta un elemento dell'altro insieme e ciascuna voce misura il costo dell'abbinamento. Per una matrice quadrata, la soluzione seleziona esattamente una voce per riga e per colonna. Una strategia greedy si impegna su singole coppie allettanti; l'abbinamento ungherese trova il minimo globale del costo totale.

Nella classica procedura di riduzione della matrice, sottrai a ogni riga il suo valore minimo, poi a ogni colonna il suo valore minimo. Queste riduzioni preservano il miglior assegnamento completo, perché ogni assegnamento utilizza una volta ogni riga e ogni colonna. Copri tutti gli zeri con il minor numero possibile di linee orizzontali e verticali. Se per una matrice n x n servono n linee, seleziona n zeri senza righe o colonne in comune. Altrimenti, sottrai il valore scoperto più piccolo dalle voci non coperte, aggiungilo nelle intersezioni delle linee di copertura e ripeti la verifica della copertura. Calcola il costo dell'assegnamento usando la matrice originale.

Le implementazioni efficienti dell'algoritmo ungherese hanno una complessità temporale O(n³) per le matrici quadrate, rispetto alle n! possibili assegnazioni complete.

Applicazioni nella computer vision#

Tracciamento di più oggetti. Il progetto originale SORT combina l'assegnamento ungherese con un filtro di Kalman, che prevede la posizione di ogni traccia. L'intersezione sull'unione misura la sovrapposizione tra le scatole di delimitazione previste e quelle rilevate. L'implementazione di riferimento di SORT risolve l'assegnamento usando LAPJV o SciPy, rifiuta le associazioni con scarsa sovrapposizione e assegna identità ai rilevamenti non abbinati.

Addestramento del rilevamento degli oggetti. DETR usa l'abbinamento ungherese per associare previsioni non ordinate agli oggetti etichettati. Il suo transformer genera slot di previsione e l'abbinamento combina i costi di classificazione e di localizzazione delle scatole. Se gli slot sono sufficienti, ogni target riceve una previsione, rendendo la funzione di perdita indipendente dall'ordine delle annotazioni; gli slot non abbinati apprendono la classe «nessun oggetto». Ultralytics applica questa formulazione dell'assegnamento in RT-DETR: il suo HungarianMatcher combina i costi di classificazione, distanza L1 delle coordinate e IoU generalizzata. Il suo backend di assegnamento lineare usa un risolutore Jonker–Volgenant modificato per selezionare le coppie di addestramento.

Abbinamento ungherese in Python#

Il pacchetto Python munkres implementa il metodo ungherese. Installalo con pip install munkres, quindi risolvi la sua matrice dei costi di esempio:

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

L'output è Minimum total cost: 12, la somma minima ottenibile selezionando una voce per riga e per colonna.

Il problema dell'assegnamento è il compito; l'algoritmo ungherese è uno dei risolutori. La soppressione non massima rimuove i rilevamenti in competizione all'interno di un'immagine. La re-identificazione degli oggetti fornisce informazioni sull'aspetto per l'associazione, spesso tramite embedding confrontati usando la similarità coseno. Questi punteggi possono diventare costi di abbinamento.

Dimensioni diverse dei gruppi producono matrici rettangolari. Il tracciamento richiede anche regole di rifiuto o voci fittizie con costi definiti per gli elementi non abbinati, così da gestire rilevamenti mancanti e oggetti appena apparsi. Un'associazione errata causa uno scambio di identità: l'ID di una traccia viene trasferito a un altro oggetto.

Il risolutore di assegnamento lineare di SciPy risolve lo stesso problema di ottimizzazione usando un algoritmo Jonker–Volgenant modificato. Per una matrice rettangolare r x c, restituisce esattamente min(r, c) coppie quando esiste un assegnamento completo ammissibile.

Esplora le soluzioni

La visione artificiale nello sport

La visione artificiale nello sport

Scopri come Ultralytics YOLO alimenta la computer vision nello sport con il tracciamento di giocatori e palloni, l'analisi delle prestazioni, gli approfondimenti per gli allenatori e la riabilitazione degli atleti.
Scopri di più
Computer vision per immagini aeree

Computer vision per immagini aeree

Trasforma immagini aeree e riprese da drone in informazioni utili in tempo reale per agricoltura, acquacoltura, conservazione e analisi geospaziale con Ultralytics YOLO.
Scopri di più
Computer vision nel settore aerospaziale

Computer vision nel settore aerospaziale

Applica la visione artificiale nel settore aerospaziale con Ultralytics YOLO per l'ispezione degli aeromobili, il rilevamento di FOD sulle piste, le operazioni di terra aeroportuali e il rilevamento di difetti nei materiali compositi.
Scopri di più
Visione artificiale nella sicurezza

Visione artificiale nella sicurezza

Proteggi ogni sito con i modelli Ultralytics YOLO. L'IA visiva alimenta il monitoraggio perimetrale, il rilevamento delle minacce, il riconoscimento delle targhe e la sicurezza sul lavoro.
Scopri di più
Visione artificiale nella robotica

Visione artificiale nella robotica

Dai più potenza alle macchine intelligenti con i modelli Ultralytics YOLO. Nell'ambito della robotica, l'IA visiva alimenta la navigazione autonoma, la percezione, il tracciamento degli oggetti e il controllo in tempo reale.
Scopri di più
Visione artificiale nella logistica

Visione artificiale nella logistica

Semplifica la logistica con i modelli Ultralytics YOLO. L'IA per la visione consente l'ispezione dei pacchi, la selezione, il tracciamento dei veicoli e il monitoraggio della sicurezza nei magazzini in tempo reale.
Scopri di più
Visione artificiale nel commercio al dettaglio

Visione artificiale nel commercio al dettaglio

Ripensa il commercio al dettaglio con i modelli Ultralytics YOLO. L'IA per la visione consente di tracciare le scorte, monitorare gli scaffali, gestire le code e ottenere informazioni più approfondite sui clienti.
Scopri di più
Visione artificiale in ambito sanitario

Visione artificiale in ambito sanitario

Crea soluzioni sanitarie con i modelli Ultralytics YOLO. In ambito sanitario, l'IA per la visione consente di elaborare più rapidamente le immagini mediche, migliorare la diagnostica e monitorare i pazienti.
Scopri di più
Computer vision nella produzione

Computer vision nella produzione

Ottimizza la produzione con i modelli Ultralytics YOLO. La visione basata sull'IA migliora il controllo qualità, il rilevamento dei difetti, la conformità ai requisiti sui DPI e l'automazione delle linee di assemblaggio.
Scopri di più
Computer vision nel settore automobilistico

Computer vision nel settore automobilistico

Applica la computer vision al settore automobilistico con i modelli Ultralytics YOLO. La visione basata sull'IA migliora la sicurezza stradale, i sistemi di assistenza alla guida e l'automazione dei veicoli, per strade più intelligenti.
Scopri di più
Visione artificiale in agricoltura

Visione artificiale in agricoltura

Porta l'IA visiva nell'agricoltura intelligente con i modelli Ultralytics YOLO. Gestisci il monitoraggio delle colture, il tracciamento del bestiame e l'agricoltura di precisione per ottenere raccolti più abbondanti e intelligenti.
Scopri di più

Costruiamo insieme il futuro dell'IA!

Inizia il tuo percorso verso il futuro del machine learning