Soppressione non massimaNMS)
Scopri come la soppressione non massima (NMS) elimina i riquadri di delimitazione duplicati nel rilevamento degli oggetti. Scopri come Ultralytics fornisce NMS nativo end-to-end.
La soppressione non massima (NMS) è una tecnica di post-elaborazione utilizzata nel
rilevamento di oggetti per perfezionare le previsioni grezze
effettuate da un modello. Quando un modello di rilevamento degli oggetti analizza un'immagine, spesso genera più
riquadri di delimitazione sovrapposti per un singolo oggetto, ciascuno con un
punteggio di affidabilità associato. Queste previsioni ridondanti
si verificano perché il modello può detect stessa caratteristica a scale o posizioni leggermente diverse. NMS questo output
mantenendo solo il riquadro di delimitazione più accurato per ciascun oggetto e scartando gli altri, garantendo che l'output finale
sia pulito, preciso e privo di duplicati.
Come funziona la soppressione non massima
NMS opera su un elenco di riquadri di delimitazione candidati e i relativi punteggi di affidabilità. L'obiettivo
è selezionare il riquadro migliore per un oggetto e sopprimere (rimuovere) qualsiasi altro riquadro che si sovrapponga in modo significativo ad esso, poiché
si tratta probabilmente di rilevamenti duplicati dello stesso oggetto. Il processo segue in genere questi passaggi:
-
Filtraggio: elimina tutti i riquadri di delimitazione con punteggi di affidabilità inferiori a una soglia specifica (ad esempio
0,25) per rimuovere immediatamente le previsioni deboli.
- Ordinamento: ordina le caselle rimanenti in ordine decrescente in base ai loro punteggi di affidabilità.
- Selezione: selezionare la casella con il punteggio di affidabilità più alto come rilevamento valido.
-
Confronto: confronta questo riquadro selezionato con tutti gli altri riquadri rimanenti utilizzando
Intersection over Union (IoU), una
metrica che misura la sovrapposizione tra due riquadri.
-
Soppressione: se IoU il riquadro selezionato e un altro riquadro supera una soglia predefinita
(ad esempio, 0,45), il riquadro con il punteggio più basso viene considerato un duplicato e viene rimosso.
-
Iterazione: ripetere il processo con la casella successiva con il punteggio più alto che non è stata ancora soppressa o
selezionata, fino a quando tutte le caselle non saranno state elaborate.
Applicazioni nel mondo reale
NMS essenziale in scenari in cui la precisione è fondamentale e i rilevamenti duplicati possono confondere i sistemi a valle.
-
Guida autonoma: nei sistemi di guida autonoma, le telecamere detect , altri veicoli e
segnali stradali. Un modello potrebbe prevedere tre riquadri leggermente diversi per un singolo pedone. NMS il
sistema di pianificazione del veicolo riceva una sola coordinata per quel pedone, evitando frenate irregolari o errori di pianificazione del percorso
causati da ostacoli "fantasma".
-
Gestione dell'inventario al dettaglio: quando si utilizza la
visione artificiale per contare i prodotti su uno scaffale, gli articoli sono spesso raggruppati. Senza NMS, una singola lattina di soda potrebbe essere contata due volte a causa di previsioni sovrapposte, portando a livelli di scorte imprecisi. NMS questi rilevamenti per garantire che il conteggio dell'inventario corrisponda alla realtà.
NMS con PyTorch
Sebbene molti framework moderni gestiscano NMS , comprenderne l'implementazione aiuta nella regolazione dei parametri. L'
esempio seguente mostra come applicare NMS PyTorch :
import torch
import torchvision.ops as ops
# Example bounding boxes: [x1, y1, x2, y2]
boxes = torch.tensor(
[
[100, 100, 200, 200], # Box A
[105, 105, 195, 195], # Box B (High overlap with A)
[300, 300, 400, 400], # Box C (Distinct object)
],
dtype=torch.float32,
)
# Confidence scores for each box
scores = torch.tensor([0.9, 0.8, 0.95], dtype=torch.float32)
# Apply NMS with an IoU threshold of 0.5
# Boxes with IoU > 0.5 relative to the highest scoring box are suppressed
keep_indices = ops.nms(boxes, scores, iou_threshold=0.5)
print(f"Indices to keep: {keep_indices.tolist()}")
# Output will likely be [2, 0] corresponding to Box C (0.95) and Box A (0.9),
# while Box B (0.8) is suppressed due to overlap with A.
NMS rilevamento end-to-end
Tradizionalmente, NMS stato un passaggio obbligatorio di "pulizia" che si trova al di fuori della rete neurale principale, aggiungendo
latenza di inferenza. Tuttavia, il campo si sta evolvendo
verso architetture end-to-end.
-
NMS standard: un processo euristico che richiede la regolazione manuale della IoU . Se la
soglia è troppo bassa, gli oggetti validi vicini tra loro potrebbero essere persi (basso
richiamo). Se troppo alta, rimangono i duplicati (bassa
precisione).
-
Modelli end-to-end: i modelli di nuova generazione come
YOLO26 sono progettati per essere nativamente end-to-end. Imparano
a prevedere esattamente un riquadro per oggetto durante l'addestramento, interiorizzando efficacemente il NMS . Ciò elimina
la necessità di post-elaborazione esterna, con conseguente aumento della velocità di inferenza e semplificazione delle pipeline di implementazione sulla
Ultralytics .
Concetti correlati
-
NMS: Una
variante in cui le caselle sovrapposte non vengono rimosse in modo rigoroso, ma hanno i loro punteggi di confidenza ridotti. Ciò consente di
rilevare oggetti leggermente sovrapposti (come persone in una folla) se i loro punteggi rimangono sufficientemente alti dopo il
decadimento.
-
Anchor Boxes: forme predefinite di riquadri
utilizzate da molti rilevatori per stimare le dimensioni degli oggetti. NMS applicato alle previsioni finali perfezionate da questi anchor.
-
Intersection over Union (IoU):
La formula matematica utilizzata da NMS determinare quanto due riquadri si sovrappongono, fungendo da soglia decisionale per la
soppressione.