Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Soppressione Non Massima (NMS) | Rilevamento Oggetti
Fondamenti di Computer Vision

bookSoppressione 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.

nms

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?

question mark

Qual è lo scopo principale della Non-Max Suppression (NMS) nel rilevamento degli oggetti?

Select the correct answer

question mark

Come determina la NMS standard quali riquadri di delimitazione sopprimere?

Select the correct answer

question mark

Qual è la principale differenza tra NMS standard e Soft-NMS?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 5

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Suggested prompts:

Can you explain how to choose the best IoU threshold for my application?

What are the main advantages of using Soft-NMS over standard NMS?

Can you provide more details on how IoU is calculated?

Awesome!

Completion rate improved to 3.45

bookSoppressione 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.

nms

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?

question mark

Qual è lo scopo principale della Non-Max Suppression (NMS) nel rilevamento degli oggetti?

Select the correct answer

question mark

Come determina la NMS standard quali riquadri di delimitazione sopprimere?

Select the correct answer

question mark

Qual è la principale differenza tra NMS standard e Soft-NMS?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 5
some-alt