Anchor Boxes
Impara come gli anchor box fungono da modelli di riferimento per il rilevamento di oggetti. Scopri come migliorano l'accuratezza e come modelli come Ultralytics YOLO26 utilizzano design anchor-free.
Le anchor boxes sono rettangoli di riferimento predefiniti con specifici rapporti d'aspetto e scale che vengono posizionati su un'immagine per assistere i modelli di object detection nell'individuazione e classificazione degli oggetti. Invece di chiedere a una rete neurale di prevedere da zero le dimensioni e la posizione esatte di un oggetto — il che può essere instabile a causa della grande varietà di forme degli oggetti — il modello utilizza questi template fissi come punto di partenza. Imparando a prevedere quanto regolare, o "regredire", questi riquadri iniziali per adattarli alla ground truth, il sistema può ottenere una convergenza più rapida e una maggiore precisione. Questa tecnica ha trasformato radicalmente il campo della computer vision (CV) semplificando il complesso compito della localizzazione in un problema di ottimizzazione più gestibile.
Link to this sectionIl meccanismo delle Anchor Boxes#
Nei classici anchor-based detectors, l'immagine in input viene suddivisa in una griglia di celle. In ogni posizione della cella, la rete genera molteplici anchor boxes con geometrie diverse. Ad esempio, per rilevare simultaneamente un pedone alto e un'auto larga, il modello potrebbe proporre un riquadro alto e stretto e uno basso e largo nello stesso punto centrale.
Durante il model training, queste anchor vengono confrontate con gli oggetti reali utilizzando una metrica chiamata Intersection over Union (IoU). Le anchor che si sovrappongono significativamente a un oggetto etichettato vengono designate come campioni "positivi". La rete impara quindi due compiti paralleli:
-
Classificazione: Assegna un punteggio di probabilità all'anchor, indicando la probabilità che contenga una classe specifica (ad esempio, "cane" o "bicicletta"). Questo utilizza obiettivi di supervised learning standard come la cross-entropy loss.
-
Box Regression: Calcola i valori di offset precisi (spostamenti delle coordinate e fattori di scala) necessari per trasformare l'anchor generica in una bounding box ben adattata.
Questo approccio consente al modello di gestire più oggetti di dimensioni diverse situati vicini tra loro, poiché ogni oggetto può essere assegnato all'anchor che meglio si adatta alla sua forma.
Link to this sectionApplicazioni nel mondo reale#
Sebbene le nuove architetture si stiano spostando verso design anchor-free, le anchor boxes rimangono vitali in molti sistemi di produzione consolidati in cui le caratteristiche degli oggetti sono prevedibili.
- Vendita al dettaglio e gestione dell'inventario: Nelle AI-driven retail solutions, le telecamere monitorano le scorte sugli scaffali. Poiché prodotti come scatole di cereali o lattine di soda hanno dimensioni standardizzate, le anchor boxes possono essere regolate su questi specifici rapporti d'aspetto. Questa conoscenza a priori aiuta il modello a mantenere un elevato recall anche in ambienti disordinati.
- Guida autonoma: Gli stack di percezione nei veicoli autonomi si affidano al rilevamento di pedoni, veicoli e segnali stradali. Poiché un'auto vista da lontano ha un profilo di forma relativamente coerente rispetto alla strada, l'utilizzo di anchor adattate a queste forme garantisce un object tracking e una stima della distanza robusti.
Link to this sectionAnchor-Based vs. Anchor-Free#
È importante distinguere tra i metodi tradizionali anchor-based e i moderni anchor-free detectors.
- Anchor-Based: Modelli come l'originale Faster R-CNN o le prime versioni di YOLO (es. YOLOv5) utilizzano questi template predefiniti. Sono robusti ma richiedono spesso la regolazione manuale degli iperparametri (dimensioni/rapporti delle anchor) o algoritmi di clustering come il k-means clustering per adattarsi ai nuovi dataset.
- Anchor-Free: Modelli avanzati, tra cui YOLO26, impiegano spesso approcci anchor-free o end-to-end. Queste reti prevedono direttamente i centri degli oggetti o i keypoint, eliminando la necessità di una configurazione manuale delle anchor. Ciò semplifica l'architettura e accelera l'inference eliminando il calcolo necessario per elaborare migliaia di anchor di sfondo vuote.
Link to this sectionEsempio: Accesso alle informazioni sulle Anchor#
Mentre le moderne API di alto livello come la Ultralytics Platform astraggono questi dettagli durante l'addestramento, comprendere le anchor è utile quando lavori con architetture di modelli più vecchie o analizzi i file di configurazione del modello. Il seguente snippet dimostra come caricare un modello e ispezionarne la configurazione, dove le impostazioni delle anchor (se presenti) verrebbero tipicamente definite.
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.")Link to this sectionSfide e considerazioni#
Sebbene efficaci, le anchor boxes introducono complessità. Il gran numero di anchor generate — spesso decine di migliaia per immagine — crea un problema di sbilanciamento delle classi, poiché la maggior parte delle anchor copre solo lo sfondo. Tecniche come la 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 riquadri sovrapposti ridondanti, assicurando che rimanga solo il rilevamento più affidabile per ogni oggetto.






