Anchor-Free Detectors
I rilevatori senza anchor prevedono i riquadri a partire da punti o keypoint, senza anchor box predefinite. Come FCOS, CenterNet e i moderni modelli YOLO individuano gli oggetti.
I rilevatori senza anchor sono modelli di rilevamento degli oggetti che prevedono direttamente ogni bounding box da un punto su una mappa di caratteristiche o da keypoint, come gli angoli o il centro di un oggetto, senza un insieme di anchor box predefinite. Una posizione vicina a un oggetto ne prevede le distanze dai quattro bordi, oppure un picco nella heatmap ne individua il centro e la rete ne regredisce larghezza e altezza. In questo modo si eliminano dimensioni, proporzioni e soglie di abbinamento delle anchor che i rilevatori basati su anchor devono ottimizzare per ogni set di dati; le teste senza anchor sono diventate il design standard per il rilevamento in tempo reale.
Come funziona il rilevamento senza anchor#
I rilevatori senza anchor appartengono a due famiglie:
- Rilevatori basati su punti, come FCOS: Ogni cella di ogni livello della mappa di caratteristiche è un candidato. FCOS (2019) prevede in ogni posizione all'interno di un oggetto i punteggi di classe e quattro distanze dai bordi sinistro, superiore, destro e inferiore, oltre a un punteggio di centralità che riduce il peso delle box previste da punti lontani dal centro dell'oggetto.
- Rilevatori basati su keypoint, come CornerNet e CenterNet: CornerNet (2018) prevede heatmap degli angoli in alto a sinistra e in basso a destra e abbina quelli che appartengono allo stesso oggetto usando embedding appresi. CenterNet prevede una heatmap dei centri degli oggetti e regredisce larghezza e altezza in corrispondenza di ogni picco; estrae i picchi con un'operazione di max pooling 3 × 3, evitando così di dover usare la soppressione dei massimi non locali (NMS) basata su IoU.
La previsione senza anchor precede le anchor anche nella linea YOLO: YOLOv1, nel 2015, prevedeva direttamente le box dalla cella della griglia contenente il centro di ciascun oggetto; l'aggiunta delle anchor in YOLOv2 ha aumentato il recall dall'81% all'88%, al costo di 0,3 punti mAP. YOLOX ha riportato in YOLO il design denso basato su punti nel 2021 e, nel 2023, Ultralytics è passata dalle anchor di YOLOv5 a una testa senza anchor in YOLOv8, eliminando così la necessità di adattare le anchor ai set di dati personalizzati; YOLO26 mantiene questo design.
Per decodificare una previsione densa senza anchor servono solo la posizione della cella e le quattro distanze previste:
import torch
# Center of the grid cell at column 10, row 6 of a stride-16 feature map, in image pixels
stride = 16
point = (torch.tensor([10.0, 6.0]) + 0.5) * stride
# Distances the head predicts from that point to the left, top, right, and bottom box edges, in strides
ltrb = torch.tensor([2.0, 3.5, 1.5, 4.0]) * stride
# Anchor-free decoding: no template box, only the point and four distances
x1, y1 = point - ltrb[:2]
x2, y2 = point + ltrb[2:]
print(f"point {point.tolist()} -> box ({x1:.0f}, {y1:.0f}, {x2:.0f}, {y2:.0f})")Il punto in (168, 104) diventa la box (136, 48, 192, 168), larga 56 pixel e alta 120 pixel. Una testa densa applica questa decodifica a ogni cella di ogni livello piramidale, quindi ogni cella produce una box candidata.
Scelta dei punti che apprendono ciascun oggetto#
Senza anchor da confrontare con le box etichettate tramite intersezione sull'unione (IoU), un rilevatore senza anchor ha bisogno di un'altra regola per determinare quali punti siano campioni di addestramento positivi. FCOS usa posizione e dimensione: un punto è positivo se si trova all'interno di una box etichettata e la sua distanza massima dai bordi della box rientra nell'intervallo del livello piramidale del punto: da 0 a 64 pixel al livello con stride 8, da 64 a 128 con stride 16 e così via, fino allo stride 128.
I rilevatori successivi scelgono i positivi in modo adattivo. ATSS ha mostrato che il divario di accuratezza tra RetinaNet, basato su anchor, e FCOS, senza anchor, dipendeva soprattutto da come ciascuno definiva i campioni positivi e negativi; ha inoltre dimostrato che, usando la stessa regola di campionamento, disporre più anchor per posizione non offriva vantaggi. L'assegnazione allineata al compito, introdotta da TOOD e adottata da PP-YOLOE e da molti successivi rilevatori in tempo reale, ordina i punti all'interno di ogni oggetto in base al prodotto ponderato tra punteggio di classe previsto e IoU della box, mantenendo i primi come positivi.
Rilevatori senza anchor e basati su anchor#
- Meno iperparametri: Non è necessario adattare a ogni set di dati dimensioni, proporzioni o soglie di abbinamento IoU delle anchor; i rilevatori basati su anchor svolgono spesso questa operazione con il clustering k-means delle box di addestramento.
- Flessibilità delle forme: L'assegnazione basata su punti dipende solo dalla posizione dell'oggetto, quindi anche un oggetto la cui forma non corrisponde a nessuna anchor, come un tubo lungo e sottile, ottiene comunque campioni positivi.
- Vocabolario condiviso: Molte basi di codice senza anchor chiamano ancora i punti della griglia «punti anchor», indicando una posizione priva di dimensione o proporzione.
- Meno previsioni: Ogni posizione prevede una sola box anziché una per forma di anchor, quindi la decodifica e NMS gestiscono un numero di candidati molte volte inferiore; le 9 anchor per posizione di RetinaNet ammontano a circa 100.000 candidati per immagine.










