Ultralytics YOLO27: Iscriviti alla lista d'attesa.
Licenza YOLO
Torna al glossario di Ultralytics

Non-Maximum Suppression (NMS)

La soppressione dei massimi non locali (NMS) rimuove i box sovrapposti duplicati, così ogni oggetto mantiene un solo rilevamento. Scopri come funziona, come regolarla e quali modelli non usano NMS.

La soppressione dei non massimi (NMS) è la fase di post-elaborazione che trasforma le previsioni grezze e sovrapposte di un rilevatore in un unico riquadro per oggetto. Un modello denso di rilevamento degli oggetti assegna un punteggio a migliaia di riquadri di delimitazione candidati per immagine; in genere, diversi candidati vicini vengono attivati sullo stesso oggetto, con posizioni e punteggi leggermente diversi. NMS mantiene il riquadro con la confidenza più alta in ogni gruppo di riquadri sovrapposti e sopprime gli altri, usando l'intersezione sull'unione (IoU) per determinare quali riquadri si sovrappongono abbastanza da essere considerati duplicati.

Come funziona la soppressione dei massimi non locali#

La NMS greedy, la versione standard, elimina prima i candidati al di sotto di una soglia di confidenza e ordina quelli rimasti in base al punteggio. Quindi mantiene il riquadro con il punteggio più alto, rimuove tutti i riquadri rimanenti la cui IoU con esso supera la soglia IoU e ripete l'operazione con il miglior riquadro rimasto, finché non ne restano altri. I rilevatori la eseguono normalmente una volta per classe, perciò un riquadro di una persona non sopprime mai un riquadro sovrapposto di una bicicletta.

La funzione nms di torchvision implementa la NMS greedy per una classe e restituisce gli indici dei riquadri mantenuti, ordinati per punteggio.

import torch
from torchvision.ops import nms

# Riquadri candidati come [x1, y1, x2, y2], ciascuno con un punteggio di confidenza
boxes = torch.tensor(
    [
        [100, 100, 200, 200],  # A
        [105, 105, 195, 195],  # B: quasi duplicato di A (IoU 0.81)
        [300, 300, 400, 400],  # C: un oggetto distinto
    ],
    dtype=torch.float32,
)
scores = torch.tensor([0.90, 0.80, 0.95])

# Sopprime qualsiasi riquadro la cui IoU con un riquadro mantenuto con punteggio più alto supera 0.5
keep = nms(boxes, scores, iou_threshold=0.5)
print(keep.tolist())

L'output è [2, 0]: il riquadro C viene mantenuto per primo perché ha il punteggio più alto, il riquadro A viene mantenuto perché non si sovrappone a C e il riquadro B viene rimosso perché la sua IoU con A è 0.81.

Regolazione delle soglie#

La soglia di confidenza rimuove i candidati deboli prima che inizi la soppressione. La soglia IoU stabilisce quanta sovrapposizione è considerata un duplicato. Se è troppo bassa, due oggetti reali vicini, come le persone in una folla, vengono uniti in un solo rilevamento e il richiamo diminuisce. Se è troppo alta, i riquadri duplicati vengono mantenuti e la precisione diminuisce. La NMS indipendente dalla classe consente a qualsiasi riquadro di sopprimerne un altro, indipendentemente dalla classe; ciò elimina le etichette duplicate quando il modello assegna a un oggetto due classi simili, come «auto» e «camion».

Limiti della NMS#

  • Scene affollate: un'unica soglia IoU fissa non può distinguere un riquadro duplicato da un secondo oggetto che si sovrappone davvero al primo; di conseguenza, gli oggetti fortemente occlusi vengono soppressi.
  • Euristica fissa: la soglia viene scelta manualmente, è esterna alla rete addestrata e non viene appresa dai dati.
  • Latenza e distribuzione: il ciclo greedy viene eseguito dopo la rete e il suo costo cresce con il numero di candidati, aumentando la latenza di inferenza. I formati di esportazione che non possono incorporare NMS nel grafo del modello producono candidati grezzi; l'applicazione deve quindi eseguire NMS autonomamente.

Varianti della NMS e rilevamento senza NMS#

Soft-NMS riduce i punteggi dei riquadri sovrapposti in funzione della sovrapposizione, invece di eliminarli, consentendo di recuperare più oggetti nelle folle. DIoU-NMS, proposto insieme alla loss Distance-IoU, considera anche la distanza tra i centri dei riquadri; di conseguenza, è meno probabile che vengano soppressi due riquadri con i centri distanti tra loro.

I rilevatori end-to-end eliminano del tutto questo passaggio. DETR viene addestrato con un abbinamento univoco ungherese tra previsioni ed etichette, così ogni oggetto riceve esattamente una previsione, e YOLOv10 ha introdotto una head one-to-one nei modelli YOLO in tempo reale. YOLO26 addestra entrambi i tipi di head e applica NMS per impostazione predefinita, perché la head one-to-many ottiene un punteggio leggermente più alto: 40.9 contro 40.1 mAP50-95 su COCO per YOLO26n. Passando nms=False si seleziona la head one-to-one, che restituisce al massimo 300 riquadri finali per immagine senza un passaggio NMS, come mostra la guida al rilevamento end-to-end per la predizione e l'esportazione.

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