Detection Head
Impara come un detection head abilita il rilevamento di oggetti in tempo reale. Esplora il suo ruolo in Ultralytics YOLO26 per prevedere bounding box ed etichette con elevata accuratezza.
Una detection head funge da livello decisionale finale in un'architettura di rete neurale di object detection. Mentre i primi livelli del modello sono responsabili della comprensione di forme, texture e caratteristiche all'interno di un'immagine, la detection head è 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 dal feature extractor in risultati utilizzabili, emettendo in genere un insieme di bounding boxes che racchiudono gli oggetti identificati insieme alle relative etichette di classe e confidence scores.
Distinguere la Head dal Backbone e dal Neck#
Per comprendere appieno la funzione di una detection head, è utile visualizzare i moderni detector come composti da tre fasi principali, ciascuna con uno scopo distinto nella pipeline di computer vision (CV):
- Backbone: Questa è la parte iniziale della rete, spesso una Convolutional Neural Network (CNN) come ResNet o CSPNet. Elabora l'immagine di input grezza per creare feature maps che rappresentano i pattern visivi.
- Neck: Posizionato tra la backbone e la head, il neck perfeziona e combina le caratteristiche di diverse scale. Architetture come la Feature Pyramid Network (FPN) assicurano che il modello possa rilevare oggetti di varie dimensioni aggregando il contesto.
- Head: La componente finale che consuma le caratteristiche affinate dal neck. Esegue il compito effettivo di classificazione (cos'è?) e regressione (dov'è?).
Evoluzione: Anchor-Based vs. Anchor-Free#
Il design delle detection heads si è evoluto in modo significativo per migliorare velocità e accuratezza, in particolare con la transizione dai metodi tradizionali ai moderni modelli di real-time inference.
- Anchor-Based Heads: I tradizionali one-stage object detectors si affidavano a anchor boxes predefinite, ovvero forme di riferimento fisse di varie dimensioni. La head prevedeva quanto allungare o spostare questi anchor per adattarli all'oggetto. Questo approccio è descritto in dettaglio nella ricerca fondamentale su Faster R-CNN.
- Anchor-Free Heads: I modelli all'avanguardia, tra cui il più recente YOLO26, utilizzano anchor-free detectors. Queste head prevedono i centri e le dimensioni degli oggetti direttamente dai pixel nelle feature maps, eliminando la necessità di una sintonizzazione manuale degli anchor. Ciò semplifica l'architettura e migliora la capacità del modello di generalizzare a nuove forme di oggetti, una tecnica spesso associata a Fully Convolutional One-Stage Object Detection (FCOS).
Applicazioni nel mondo reale#
La precisione della detection head è fondamentale per l'implementazione dell'artificial intelligence (AI) in ambienti critici per la sicurezza e industriali. Gli utenti possono facilmente annotare i dati e addestrare queste head specializzate utilizzando la Ultralytics Platform.
- Guida autonoma: Nell'AI for automotive, la detection head è responsabile di distinguere tra pedoni, semafori e altri veicoli in tempo reale. Una head altamente ottimizzata garantisce che l'inference latency rimanga sufficientemente bassa affinché il veicolo possa reagire istantaneamente.
- Diagnostica medica: Nell'medical image analysis, le detection heads vengono ottimizzate per individuare anomalie come i tumori nelle scansioni MRI. Il ramo di regressione deve essere estremamente accurato per delineare i confini esatti di una lesione, assistendo i medici nelle healthcare solutions.
Esempio di codice#
Il seguente esempio mostra come caricare un modello YOLO26 e ispezionare l'output della sua detection head. Quando viene eseguita l'inferenza, la head elabora l'immagine e restituisce il boxes finale contenente 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.numpy()}")Questa interazione evidenzia come la detection head traduca complesse attivazioni di reti neurali in dati leggibili che gli sviluppatori possono utilizzare per attività successive come l'object tracking o il conteggio.






