Soppressione Non Massima (NMS)
I modelli di object detection spesso prevedono più riquadri di delimitazione sovrapposti per lo stesso oggetto. Questo accade perché i modelli analizzano un'immagine a diverse scale e posizioni, generando così previsioni ridondanti. La Non-Max Suppression (NMS) è una fase di post-elaborazione fondamentale che perfeziona queste rilevazioni selezionando i riquadri di delimitazione più rilevanti ed eliminando quelli superflui.
Perché si verificano più riquadri sovrapposti
I rilevatori di oggetti prevedono più riquadri di delimitazione per un singolo oggetto a causa di:
- Anchor boxes: alcuni modelli, come Faster R-CNN e YOLO, utilizzano anchor box predefiniti di diverse dimensioni, portando a più rilevamenti dello stesso oggetto;
- Approcci a finestra mobile: alcuni metodi di rilevamento analizzano un'immagine in piccole regioni, causando rilevamenti ripetuti di un oggetto in aree sovrapposte;
- Punteggi di confidenza elevati: il modello assegna un punteggio di confidenza a ciascuna previsione e previsioni simili con alta confidenza possono sovrapporsi in modo significativo.
Se questi riquadri ridondanti non vengono filtrati, possono influire negativamente sulle prestazioni del rilevamento degli oggetti aumentando la complessità computazionale e rendendo inaffidabile il conteggio degli oggetti.
Come funziona la Non-Max Suppression
La NMS viene applicata per rimuovere rilevamenti duplicati mantenendo il riquadro di delimitazione con la maggiore confidenza. Segue questi passaggi:
- Ordinamento dei punteggi: disposizione di tutti i riquadri previsti in ordine decrescente in base ai loro punteggi di confidenza;
- Selezione del miglior riquadro: selezione del riquadro con il punteggio più alto e aggiunta alla lista finale delle rilevazioni;
- Calcolo dell'IoU: calcolo dell'Intersection Over Union (IoU) tra il riquadro selezionato e tutti i riquadri rimanenti;
- Soglia: soppressione (rimozione) dei riquadri che hanno un IoU superiore a una soglia impostata (ad esempio, 0.5) poiché probabilmente rappresentano lo stesso oggetto;
- Ripetizione: continuazione di questo processo per il riquadro con il punteggio successivo più alto fino a quando tutti i riquadri sono stati processati.
import numpy as np
def non_max_suppression(boxes, scores, iou_threshold=0.5):
# Sort boxes by confidence scores in descending order
sorted_indices = np.argsort(scores)[::-1]
selected_boxes = []
while len(sorted_indices) > 0:
# Pick the highest confidence box
best_idx = sorted_indices[0]
selected_boxes.append(boxes[best_idx])
# Compute IoU with the remaining boxes
remaining_boxes = boxes[sorted_indices[1:]]
ious = np.array([compute_iou(boxes[best_idx], box) for box in remaining_boxes])
# Suppress boxes with IoU above threshold
sorted_indices = sorted_indices[1:][ious < iou_threshold]
return selected_boxes
Soft-NMS: Un'alternativa più intelligente
La NMS standard rimuove tutti i riquadri sovrapposti sopra una certa soglia di IoU, il che a volte può eliminare rilevamenti utili. Soft-NMS migliora questo processo riducendo i punteggi di confidenza dei riquadri sovrapposti invece di rimuoverli completamente. Questo metodo consente una soppressione più graduale e può migliorare le prestazioni di rilevamento in scenari con oggetti densi.
Differenze principali tra NMS standard e Soft-NMS:
- NMS standard: rimuove i riquadri sovrapposti sopra la soglia di IoU;
- Soft-NMS: riduce i punteggi di confidenza dei riquadri sovrapposti invece di eliminarli, rendendolo più flessibile per il rilevamento di oggetti parzialmente occlusi.
Bilanciare accuratezza e velocità nella NMS
La scelta della soglia IoU corretta è fondamentale:
- Soglie più alte (ad esempio, 0.6 - 0.7): filtraggio più aggressivo, mantenendo solo i riquadri con maggiore confidenza ma rischiando di perdere alcune rilevazioni valide;
- Soglie più basse (ad esempio, 0.3 - 0.4): mantiene più riquadri sovrapposti, utile in scene affollate ma può aumentare i falsi positivi.
L'utilizzo di implementazioni ottimizzate, come le funzioni NMS integrate di TensorFlow o OpenCV, può aiutare ad accelerare l'elaborazione per applicazioni in tempo reale.
Non-Max Suppression è una tecnica fondamentale nel rilevamento degli oggetti per rimuovere i riquadri di delimitazione ridondanti e migliorare l'accuratezza del modello. La NMS standard elimina in modo efficiente le rilevazioni duplicate, mentre la Soft-NMS perfeziona il processo regolando i punteggi di confidenza invece di rimuovere direttamente i riquadri. Regolando opportunamente le soglie di IoU, è possibile trovare il giusto equilibrio tra accuratezza del rilevamento ed efficienza computazionale.
1. Qual è lo scopo principale della Non-Max Suppression (NMS) nel rilevamento degli oggetti?
2. Come determina la NMS standard quali riquadri di delimitazione sopprimere?
3. Qual è la principale differenza tra NMS standard e Soft-NMS?
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Awesome!
Completion rate improved to 3.45
Soppressione Non Massima (NMS)
Scorri per mostrare il menu
I modelli di object detection spesso prevedono più riquadri di delimitazione sovrapposti per lo stesso oggetto. Questo accade perché i modelli analizzano un'immagine a diverse scale e posizioni, generando così previsioni ridondanti. La Non-Max Suppression (NMS) è una fase di post-elaborazione fondamentale che perfeziona queste rilevazioni selezionando i riquadri di delimitazione più rilevanti ed eliminando quelli superflui.
Perché si verificano più riquadri sovrapposti
I rilevatori di oggetti prevedono più riquadri di delimitazione per un singolo oggetto a causa di:
- Anchor boxes: alcuni modelli, come Faster R-CNN e YOLO, utilizzano anchor box predefiniti di diverse dimensioni, portando a più rilevamenti dello stesso oggetto;
- Approcci a finestra mobile: alcuni metodi di rilevamento analizzano un'immagine in piccole regioni, causando rilevamenti ripetuti di un oggetto in aree sovrapposte;
- Punteggi di confidenza elevati: il modello assegna un punteggio di confidenza a ciascuna previsione e previsioni simili con alta confidenza possono sovrapporsi in modo significativo.
Se questi riquadri ridondanti non vengono filtrati, possono influire negativamente sulle prestazioni del rilevamento degli oggetti aumentando la complessità computazionale e rendendo inaffidabile il conteggio degli oggetti.
Come funziona la Non-Max Suppression
La NMS viene applicata per rimuovere rilevamenti duplicati mantenendo il riquadro di delimitazione con la maggiore confidenza. Segue questi passaggi:
- Ordinamento dei punteggi: disposizione di tutti i riquadri previsti in ordine decrescente in base ai loro punteggi di confidenza;
- Selezione del miglior riquadro: selezione del riquadro con il punteggio più alto e aggiunta alla lista finale delle rilevazioni;
- Calcolo dell'IoU: calcolo dell'Intersection Over Union (IoU) tra il riquadro selezionato e tutti i riquadri rimanenti;
- Soglia: soppressione (rimozione) dei riquadri che hanno un IoU superiore a una soglia impostata (ad esempio, 0.5) poiché probabilmente rappresentano lo stesso oggetto;
- Ripetizione: continuazione di questo processo per il riquadro con il punteggio successivo più alto fino a quando tutti i riquadri sono stati processati.
import numpy as np
def non_max_suppression(boxes, scores, iou_threshold=0.5):
# Sort boxes by confidence scores in descending order
sorted_indices = np.argsort(scores)[::-1]
selected_boxes = []
while len(sorted_indices) > 0:
# Pick the highest confidence box
best_idx = sorted_indices[0]
selected_boxes.append(boxes[best_idx])
# Compute IoU with the remaining boxes
remaining_boxes = boxes[sorted_indices[1:]]
ious = np.array([compute_iou(boxes[best_idx], box) for box in remaining_boxes])
# Suppress boxes with IoU above threshold
sorted_indices = sorted_indices[1:][ious < iou_threshold]
return selected_boxes
Soft-NMS: Un'alternativa più intelligente
La NMS standard rimuove tutti i riquadri sovrapposti sopra una certa soglia di IoU, il che a volte può eliminare rilevamenti utili. Soft-NMS migliora questo processo riducendo i punteggi di confidenza dei riquadri sovrapposti invece di rimuoverli completamente. Questo metodo consente una soppressione più graduale e può migliorare le prestazioni di rilevamento in scenari con oggetti densi.
Differenze principali tra NMS standard e Soft-NMS:
- NMS standard: rimuove i riquadri sovrapposti sopra la soglia di IoU;
- Soft-NMS: riduce i punteggi di confidenza dei riquadri sovrapposti invece di eliminarli, rendendolo più flessibile per il rilevamento di oggetti parzialmente occlusi.
Bilanciare accuratezza e velocità nella NMS
La scelta della soglia IoU corretta è fondamentale:
- Soglie più alte (ad esempio, 0.6 - 0.7): filtraggio più aggressivo, mantenendo solo i riquadri con maggiore confidenza ma rischiando di perdere alcune rilevazioni valide;
- Soglie più basse (ad esempio, 0.3 - 0.4): mantiene più riquadri sovrapposti, utile in scene affollate ma può aumentare i falsi positivi.
L'utilizzo di implementazioni ottimizzate, come le funzioni NMS integrate di TensorFlow o OpenCV, può aiutare ad accelerare l'elaborazione per applicazioni in tempo reale.
Non-Max Suppression è una tecnica fondamentale nel rilevamento degli oggetti per rimuovere i riquadri di delimitazione ridondanti e migliorare l'accuratezza del modello. La NMS standard elimina in modo efficiente le rilevazioni duplicate, mentre la Soft-NMS perfeziona il processo regolando i punteggi di confidenza invece di rimuovere direttamente i riquadri. Regolando opportunamente le soglie di IoU, è possibile trovare il giusto equilibrio tra accuratezza del rilevamento ed efficienza computazionale.
1. Qual è lo scopo principale della Non-Max Suppression (NMS) nel rilevamento degli oggetti?
2. Come determina la NMS standard quali riquadri di delimitazione sopprimere?
3. Qual è la principale differenza tra NMS standard e Soft-NMS?
Grazie per i tuoi commenti!