Scopri come gli anchor box fungono da modelli di riferimento per il rilevamento degli oggetti. Scopri come migliorano la precisione e come modelli come Ultralytics utilizzano design senza anchor.
Le caselle di ancoraggio sono rettangoli di riferimento predefiniti con proporzioni e scale specifiche che vengono posizionati su un'immagine per aiutare i modelli di rilevamento degli oggetti a individuare e classificare gli oggetti. Anziché chiedere a una rete neurale di prevedere le dimensioni e la posizione esatte di un oggetto partendo da zero, il che può essere instabile a causa della grande varietà di forme degli oggetti , il modello utilizza questi modelli fissi come punto di partenza. Imparando a prevedere quanto regolare, o "regressare", questi riquadri iniziali per adattarli alla realtà, il sistema può ottenere una convergenza più rapida e una maggiore precisione. Questa tecnica ha trasformato radicalmente il campo della visione artificiale (CV), semplificando il complesso compito della localizzazione in un problema di ottimizzazione più gestibile.
Nei rilevatori classici basati su ancoraggi, l' immagine in ingresso viene suddivisa in una griglia di celle. In corrispondenza di ciascuna cella, la rete genera più riquadri di ancoraggio con geometrie diverse. Ad esempio, per detect contemporaneamente detect pedone alto e un'auto larga, il modello potrebbe proporre un riquadro alto e stretto e un riquadro basso e largo nello stesso punto centrale.
Durante l'addestramento del modello, questi ancoraggi vengono abbinati agli oggetti reali utilizzando una metrica chiamata Intersection over Union (IoU). Gli ancoraggi che si sovrappongono in modo significativo a un oggetto etichettato vengono designati come campioni "positivi". La rete quindi apprendono due compiti paralleli:
Questo approccio permette al modello di gestire più oggetti di diverse dimensioni situati l'uno vicino all'altro, poiché ogni oggetto può essere assegnato all'ancora che meglio si adatta alla sua forma.
Sebbene le architetture più recenti si stiano orientando verso progetti senza ancoraggi, le caselle di ancoraggio rimangono fondamentali in molti sistemi di produzione consolidati in cui le caratteristiche degli oggetti sono prevedibili.
È importante distinguere tra i metodi tradizionali basati su ancoraggi e i moderni rilevatori senza ancoraggi.
Sebbene le moderne API di alto livello come la Ultralytics nascondano questi dettagli durante l'addestramento, comprendere gli anchor è utile quando si lavora con architetture di modelli più vecchie o si analizzano i file di configurazione dei modelli. Il seguente snippet mostra come caricare un modello e ispezionarne la configurazione, dove in genere sarebbero definite le impostazioni degli anchor (se presenti).
from ultralytics import YOLO
# Load a pre-trained YOLO model (YOLO26 is anchor-free, but legacy configs act similarly)
model = YOLO("yolo26n.pt")
# Inspect the model's stride, which relates to grid cell sizing in detection
print(f"Model strides: {model.model.stride}")
# For older anchor-based models, anchors might be stored in the model's attributes
# Modern anchor-free models calculate targets dynamically without fixed boxes
if hasattr(model.model, "anchors"):
print(f"Anchors: {model.model.anchors}")
else:
print("This model architecture is anchor-free.")
Sebbene efficaci, gli anchor box introducono complessità. Il gran numero di anchor generati, spesso decine di migliaia per immagine, crea un problema di squilibrio di classe, poiché la maggior parte degli anchor copre solo lo sfondo. Tecniche come Focal Loss vengono utilizzate per mitigare questo problema riducendo il peso degli esempi di sfondo facili. Inoltre, l'output finale richiede solitamente la Non-Maximum Suppression (NMS) per filtrare i box ridondanti sovrapposti, assicurando che rimanga solo il rilevamento più affidabile per ciascun oggetto.