La “non-maximum suppression” (NMS) è un importante concetto nell’ambito dell’elaborazione delle immagini e del riconoscimento di oggetti. Si tratta di un algoritmo utilizzato per ridurre i falsi positivi generati da algoritmi di rilevamento di oggetti, come l’algoritmo di rilevamento di bordi di Canny o i rilevatori di caratteristiche nelle immagini. La non-maximum suppression è una tecnica essenziale in molte applicazioni di visione artificiale, tra cui il rilevamento di oggetti in tempo reale, il tracciamento di oggetti in video, il riconoscimento di caratteri OCR e molto altro. L'obiettivo principale della NMS è selezionare solo i punti salienti o le regioni di interesse nell'immagine e rimuovere i punti non significativi o le regioni sovrapposte. Questo è particolarmente utile quando si tratta di rilevare oggetti in un’immagine, poiché evita che lo stesso oggetto venga rilevato più volte o che regioni non significative vengano erroneamente considerate.
Per comprendere meglio come funziona la NMS, è utile suddividerla in diversi passaggi:
- Generazione dei candidati: Iniziamo generando una serie di candidati che rappresentano possibili regioni o punti di interesse nell’immagine. Questi candidati possono essere generati da vari algoritmi di rilevamento di oggetti, come il rilevamento di contorni, il rilevamento di caratteristiche o reti neurali convoluzionali (CNN).
- Calcolo della confidenza: Ogni candidato è associato a un valore di confidenza che indica quanto l’algoritmo sia sicuro che quel candidato rappresenti un oggetto o una caratteristica significativa nell’immagine.
- Ordinamento dei candidati: I candidati vengono quindi ordinati in base alla loro confidenza in ordine decrescente. Questo significa che i candidati più promettenti verranno posti all’inizio della lista.
- Iterazione sui candidati: Si procede ora all’iterazione sulla lista ordinata dei candidati. Per ciascun candidato, vengono considerati i candidati successivi per valutare se sono sufficientemente simili e dovrebbero essere soppressi. Questa somiglianza viene generalmente valutata sulla base della sovrapposizione spaziale tra i candidati.
Ecco un esempio di codice Python che mostra come eseguire la NMS su una lista di candidati con relative confidenze:
In questo esempio, abbiamo una lista di candidati rappresentati come rettangoli con coordinate (x1, y1, x2, y2) e valori di confidenza associati. L’algoritmo NMS selezionerà i candidati con le confidenze più alte e rimuoverà i candidati sovrapposti rispetto a una certa soglia di sovrapposizione.