Object Detection Architectures
Le architetture di rilevamento degli oggetti sono le strutture di rete che trasformano i pixel in riquadri ed etichette. Panoramica di backbone, neck, head e principali famiglie di rilevatori.
Le architetture di rilevamento degli oggetti sono progettazioni di rete che trasformano un'immagine in un elenco di riquadri di delimitazione, etichette di classe e punteggi di confidenza. Quasi tutti i rilevatori moderni sono composti da un backbone, un neck e una head, e le progettazioni differiscono principalmente per il modo in cui generano riquadri candidati, tramite proposte di regioni, una griglia densa o query apprese, e per il modo in cui rimuovono le predizioni duplicate, con la soppressione non massima (NMS) o l'abbinamento uno-a-uno. Queste scelte determinano l'accuratezza e la velocità del rilevatore, oltre alla facilità di distribuzione su hardware edge. Rilevamento degli oggetti è il nome del compito, mentre la head di rilevamento è una parte dell'architettura.
Backbone, neck e head#
Il backbone estrae le caratteristiche. È una rete neurale convoluzionale, come ResNet o CSPDarknet, oppure un vision transformer, spesso preaddestrato per la classificazione su ImageNet, e riduce progressivamente la risoluzione dell'immagine, così le mappe di caratteristiche perdono risoluzione e acquisiscono contenuto semantico con l'aumentare della profondità. Il neck, in genere una rete piramidale di caratteristiche (FPN) con un percorso aggiuntivo dal basso verso l'alto come in PANet, unisce mappe profonde e superficiali, in modo che ogni scala di output contenga sia dettagli fini sia contesto. La head predice riquadri e punteggi di classe in ogni posizione di ciascuna scala, di solito con stride 8, 16 e 32, così la mappa più fine individua gli oggetti piccoli e quella più grossolana gli oggetti grandi. Le tre parti di un rilevatore reale si possono individuare nella definizione del modello:
from ultralytics import YOLO
# Carica YOLO26n e suddividi i suoi layer come indicato nel relativo YAML del modello
model = YOLO("yolo26n.pt")
layers = model.model.model
n_backbone = len(model.model.yaml["backbone"])
# Il backbone estrae le caratteristiche, il neck fonde le scale e l'ultimo layer è la head
print("Backbone:", [type(m).__name__ for m in layers[:n_backbone]])
print("Neck:", [type(m).__name__ for m in layers[n_backbone:-1]])
print("Head:", type(layers[-1]).__name__, "at strides", model.model.stride.tolist())L'elenco del backbone mostra layer Conv con stride e blocchi C3k2 che terminano con un pooling SPPF e un blocco di attenzione C2PSA; il neck esegue layer Upsample, Concat e C3k2 dall'alto verso il basso e layer Conv, Concat e C3k2 con stride in direzione opposta, mentre una head Detect predice con stride 8, 16 e 32.
Famiglie di rilevatori#
- Rilevatori a due stadi: Una rete di proposte di regioni suggerisce alcune centinaia di regioni candidate, quindi una seconda head classifica e perfeziona ciascuna di esse, come in Faster R-CNN (2015) e Mask R-CNN (2017).
- Rilevatori a singolo stadio basati su anchor: SSD (2016), da YOLOv2 a YOLOv5 e RetinaNet (2017) predicono gli offset rispetto a riquadri anchor predefiniti in ogni cella della griglia, in un unico passaggio.
- Rilevatori senza anchor: FCOS (2019) e YOLOv8 (2023) predicono le distanze tra un punto e i quattro bordi del riquadro; CenterNet (2019) predice i centri dei riquadri come picchi delle mappe di calore, con larghezza e altezza per ciascun centro; YOLOX (2021) ha riportato la famiglia YOLO alla predizione senza anchor, quindi nessuno di questi modelli richiede l'ottimizzazione degli anchor.
- Rilevatori Transformer in stile DETR: DETR (2020) decodifica un insieme fisso di query di oggetti apprese e le abbina uno a uno agli oggetti etichettati, quindi il suo output non richiede NMS; Deformable DETR ha raggiunto una precisione migliore con 10 volte meno epoche di addestramento, e RT-DETR ha reso il progetto utilizzabile in tempo reale nel 2023.
- Rilevatori CNN senza NMS: YOLOv10 (2024) addestra una head uno-a-uno insieme a una head uno-a-molti e in inferenza esegue solo la head uno-a-uno, quindi i suoi riquadri non richiedono NMS.
- Rilevatori a vocabolario aperto: Grounding DINO e YOLO-World sostituiscono il livello di classificazione fisso con embedding testuali, così rilevano le classi indicate al momento dell'inferenza.
Scegliere un'architettura#
I benchmark come la precisione media (mAP) su COCO misurano la precisione, ma di solito sono l'hardware di destinazione e gli oggetti nelle immagini a determinare il progetto. YOLO26 è una CNN one-stage senza anchor con entrambi i tipi di head: applica NMS al ramo one-to-many per impostazione predefinita, nms=False attiva il ramo one-to-one e i suoi file YAML dei modelli includono varianti P2 e P6 che aggiungono un output con stride 4 o stride 64.
- Edge e video in tempo reale: Le piccole CNN per il rilevamento si compilano bene con runtime come TensorRT e OpenVINO, e una head senza NMS elimina un passaggio di post-elaborazione il cui costo aumenta con il numero di candidati.
- Oggetti minuscoli: le immagini aeree e di ispezione richiedono un livello di output più dettagliato, come stride 4, oppure un'inferenza a tasselli che esegue il rilevatore su ritagli sovrapposti.
- Cataloghi di prodotti in evoluzione: I rilevatori a vocabolario aperto individuano un nuovo prodotto a partire da un prompt testuale, senza bisogno di immagini etichettate del prodotto.
- Oggetti ruotati: Navi, veicoli ed edifici nelle immagini satellitari si adattano meglio a riquadri orientati, che aggiungono un output angolare alla head.










