Detection Head
Una detection head è la parte finale di un rilevatore, che trasforma le caratteristiche di backbone e neck in box, classi e punteggi. Illustra le head anchor-free e il codice.
Una testa di rilevamento è il livello decisionale finale dell'architettura di una rete neurale per il rilevamento degli oggetti. Mentre i livelli precedenti del modello servono a comprendere le forme, le texture e le caratteristiche dell'immagine, la testa di rilevamento è il componente specifico che interpreta queste informazioni per prevedere esattamente quali oggetti sono presenti e dove si trovano. Trasforma i dati astratti e di alto livello prodotti dall'estrattore di caratteristiche in risultati utilizzabili, generando in genere un insieme di riquadri di delimitazione che racchiudono gli oggetti identificati, insieme alle rispettive etichette di classe e ai punteggi di confidenza.
Distinguere la testa dal backbone e dal neck#
Per comprendere appieno la funzione di una testa di rilevamento, è utile immaginare i rilevatori moderni come composti da tre fasi principali, ciascuna con uno scopo distinto nella pipeline di visione artificiale (CV):
- Backbone: È la parte iniziale della rete, spesso una rete neurale convoluzionale (CNN) come ResNet o CSPNet. Elabora l'immagine di input grezza per creare mappe di caratteristiche che rappresentano schemi visivi.
- Neck: si trova tra il backbone e la testa; perfeziona e combina le caratteristiche provenienti da scale diverse. Architetture come la rete piramidale delle caratteristiche (FPN) assicurano che il modello possa rilevare oggetti di dimensioni diverse aggregando il contesto.
- Testa: componente finale che utilizza le caratteristiche raffinate dal neck. Esegue l'attività vera e propria di classificazione (che cos'è?) e regressione (dov'è?).
Evoluzione: con anchor e senza anchor#
Il design delle teste di rilevamento si è evoluto notevolmente per migliorare velocità e accuratezza, soprattutto con il passaggio dai metodi tradizionali ai moderni modelli di inferenza in tempo reale.
- Teste basate su anchor: i tradizionali rilevatori di oggetti a uno stadio si basavano su riquadri anchor predefiniti, ovvero forme di riferimento fisse di varie dimensioni. La testa prevedeva quanto allungare o spostare questi anchor per adattarli all'oggetto. Questo approccio è descritto nella ricerca fondamentale su Faster R-CNN.
- Teste senza anchor: i modelli all'avanguardia, incluso il più recente YOLO26, utilizzano rilevatori senza anchor. Queste teste prevedono direttamente i centri e le dimensioni degli oggetti a partire dai pixel delle mappe di caratteristiche, eliminando la necessità di regolare manualmente gli anchor. Questo semplifica l'architettura e migliora la capacità del modello di generalizzare a forme di oggetti inedite; è una tecnica spesso associata al rilevamento di oggetti a uno stadio completamente convoluzionale (FCOS).
Applicazioni nel mondo reale#
La precisione della testa di rilevamento è fondamentale per distribuire l'intelligenza artificiale (AI) in ambienti industriali e critici per la sicurezza. Gli utenti possono annotare facilmente i dati e addestrare queste teste specializzate usando la Ultralytics Platform.
- Guida autonoma: nell'IA per il settore automobilistico, la testa di rilevamento deve distinguere in tempo reale pedoni, semafori e altri veicoli. Una testa altamente ottimizzata assicura che la latenza di inferenza rimanga abbastanza bassa da consentire al veicolo di reagire all'istante.
- Diagnostica medica: nell'analisi delle immagini mediche, le teste di rilevamento vengono ottimizzate per localizzare anomalie come i tumori nelle scansioni RM. Il ramo di regressione deve essere estremamente preciso per delineare i confini esatti di una lesione, aiutando i medici con le soluzioni sanitarie.
Esempio di codice#
L'esempio seguente mostra come caricare un modello YOLO26 e ispezionare l'output della sua head di rilevamento. Durante l'inferenza, la head elabora l'immagine e restituisce il boxes finale, che contiene coordinate e ID di classe.
from ultralytics import YOLO
# Load the YOLO26n model (nano version)
model = YOLO("yolo26n.pt")
# Run inference on an image to utilize the detection head
results = model("https://ultralytics.com/images/bus.jpg")
# The detection head outputs are stored in results[0].boxes
for box in results[0].boxes:
# Print the bounding box coordinates and the predicted class
print(f"Class: {int(box.cls)}, Coordinates: {box.xywh[0].tolist()}")Questa interazione mostra come la testa di rilevamento traduca le complesse attivazioni della rete neurale in dati leggibili, utilizzabili dagli sviluppatori per attività a valle come il tracciamento degli oggetti o il conteggio.










