YOLOv8 vs YOLOX#
Il panorama della visione artificiale è stato plasmato dalla continua evoluzione delle architetture per il rilevamento degli oggetti in tempo reale. Due traguardi importanti sono Ultralytics YOLOv8 e YOLOX. Sebbene entrambi i modelli usino una progettazione anchor-free per semplificare le predizioni dei riquadri di delimitazione, appartengono a epoche diverse e riflettono filosofie differenti nella ricerca sul deep learning e nello sviluppo di ecosistemi per la distribuzione.
Questo confronto tecnico analizza le architetture, le metodologie di addestramento e le metriche di prestazione nel mondo reale, per aiutare sviluppatori e ricercatori a scegliere il modello più adatto alle proprie applicazioni di IA visiva.
Contesto dei modelli#
Comprendere le origini e gli obiettivi di progettazione di ciascun framework fornisce un contesto fondamentale per comprenderne le differenze architetturali e il livello di maturità degli ecosistemi.
Ultralytics YOLOv8#
Sviluppato da Glenn Jocher, Ayush Chaurasia e Jing Qiu presso Ultralytics e rilasciato il 10 gennaio 2023, YOLOv8 ha segnato un importante passo avanti per l'ecosistema Ultralytics. Sulla scia del successo di YOLOv5, YOLOv8 ha introdotto un'architettura perfezionata, in grado di gestire nativamente un'ampia varietà di attività, tra cui il rilevamento degli oggetti, la segmentazione delle istanze, la classificazione delle immagini e la stima della posa.
Il suo principale vantaggio risiede nell'ecosistema Ultralytics, mantenuto con cura, che offre un flusso di lavoro completo con un'API Python unificata, documentazione approfondita e integrazioni native con strumenti MLOps come Weights & Biases e Comet.
YOLOX#
Presentato da Zheng Ge, Songtao Liu, Feng Wang, Zeming Li e Jian Sun di Megvii il 18 luglio 2021, YOLOX mirava a colmare il divario tra la ricerca accademica e le applicazioni industriali. Descritto nel loro articolo su arXiv, YOLOX si è distinto per aver orientato la famiglia YOLO verso una progettazione anchor-free e integrato una testa disaccoppiata, migliorando la stabilità e la convergenza dell'addestramento.
Sebbene abbia avuto una grande influenza nel 2021, il repository GitHub di YOLOX rimane principalmente orientato alla ricerca. Non offre la versatilità per un'ampia gamma di attività né le pipeline di deployment rifinite dei framework moderni, e richiede più configurazioni manuali per il deployment in produzione.
Consulta la documentazione di YOLOX
Innovazioni architetturali#
Entrambi i modelli adottano un approccio senza anchor, eliminando la necessità di raggruppare anchor box complesse e specifiche per il dataset prima dell'addestramento. Questo riduce il numero di parametri di ottimizzazione euristica e semplifica la head di rilevamento.
Head disaccoppiate ed estrazione delle caratteristiche#
YOLOX ha introdotto per primo una head disaccoppiata nella serie YOLO. In precedenza, le attività di classificazione e regressione venivano svolte da un'unica head, causando spesso gradienti in conflitto durante l'addestramento. Separando i rami di classificazione e localizzazione, YOLOX ha ottenuto una convergenza più rapida.
YOLOv8 ha adottato e perfezionato questo concetto. Nel backbone usa un modulo C2f (bottleneck Cross-Stage Partial con due convoluzioni), al posto del precedente modulo C3. Questo migliora il flusso del gradiente e la rappresentazione delle caratteristiche senza aggiungere un carico computazionale significativo. YOLOv8 abbina inoltre la testa di rilevamento anchor-free a un Task-Aligned Assigner, che abbina dinamicamente i campioni positivi in base a una combinazione di punteggi di classificazione e Intersection over Union (IoU), migliorando la precisione.
I modelli Ultralytics YOLO sono progettati per usare la memoria in modo efficiente. Rispetto alle architetture basate su Transformer o a basi di codice di ricerca non ottimizzate, YOLOv8 richiede molta meno memoria CUDA durante l'addestramento, consentendo agli sviluppatori di usare batch più grandi su hardware consumer standard.
Confronto delle prestazioni#
Quando valuti i modelli per la distribuzione nel mondo reale, è essenziale bilanciare la precisione (mAP) con la latenza di inferenza e la complessità del modello. La tabella seguente evidenzia le metriche di prestazione sul dataset COCO.
| Modello | dimensione (pixel) | mAPval 50-95 | Velocità CPU ONNX (ms) | Velocità T4 TensorRT10 (ms) | parametri (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| YOLOv8n | 640 | 37.3 | 80.4 | 1.47 | 3.2 | 8.7 |
| YOLOv8s | 640 | 44.9 | 128.4 | 2.66 | 11.2 | 28.6 |
| YOLOv8m | 640 | 50.2 | 234.7 | 5.86 | 25.9 | 78.9 |
| YOLOv8l | 640 | 52.9 | 375.2 | 9.06 | 43.7 | 165.1 |
| YOLOv8x | 640 | 53.9 | 479.1 | 14.37 | 68.2 | 257.8 |
| YOLOXnano | 416 | 25.8 | - | - | 0.91 | 1.08 |
| YOLOXtiny | 416 | 32.8 | - | - | 5.06 | 6.45 |
| YOLOXs | 640 | 40.5 | - | 2.56 | 9.0 | 26.8 |
| YOLOXm | 640 | 46.9 | - | 5.43 | 25.3 | 73.8 |
| YOLOXl | 640 | 49.7 | - | 9.04 | 54.2 | 155.6 |
| YOLOXx | 640 | 51.1 | - | 16.1 | 99.1 | 281.9 |
Come si può osservare, i modelli YOLOv8 superano costantemente i corrispondenti YOLOX a parità di numero di parametri. Per esempio, YOLOv8m raggiunge un mAP del 50,2%, rispetto al 46,9% di YOLOXm: un vantaggio di 3,3 punti di mAP, mantenendo velocità di inferenza GPU competitive con TensorRT.
Vantaggi dell'addestramento e dell'ecosistema#
Una delle maggiori differenze tra queste due soluzioni riguarda l'esperienza di sviluppo. Addestrare YOLOX richiede spesso configurazioni complesse dell'ambiente, modifiche manuali agli script e una conoscenza approfondita dei componenti interni di PyTorch per eseguire il debug dei problemi di addestramento o esportazione.
L'ecosistema Ultralytics gestisce questa complessità con un'API Python intuitiva e un'interfaccia a riga di comando (CLI).
API Python semplificata#
Per addestrare un modello YOLOv8 su un dataset personalizzato bastano poche righe di codice:
from ultralytics import YOLO
# Carica un modello YOLOv8 preaddestrato per il rilevamento degli oggetti
model = YOLO("yolov8n.pt")
# Addestra il modello sul dataset di esempio COCO8
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Convalida facilmente il modello
metrics = model.val()
# Esporta in ONNX per la produzione
model.export(format="onnx")Questa API uniforma i flussi di lavoro per le attività di rilevamento, segmentazione e riquadro di delimitazione orientato (OBB), riducendo il time-to-market delle applicazioni in produzione. La funzionalità di esportazione integrata converte inoltre i modelli in ONNX, OpenVINO e CoreML senza dover scrivere operatori C++ personalizzati.
Casi d'uso ideali#
La scelta tra queste architetture dipende dai vincoli del tuo progetto, anche se YOLOv8 offre una base più flessibile.
- Analisi edge ad alta velocità: per l'elaborazione in tempo reale su dispositivi come NVIDIA Jetson, YOLOv8 offre un buon equilibrio tra velocità e precisione ed è facile da distribuire grazie all'integrazione nativa con TensorRT.
- Ricerca accademica: YOLOX rimane uno strumento didattico utile per i ricercatori che studiano il passaggio dalle metodologie basate su anchor a quelle senza anchor in PyTorch.
- Applicazioni complesse con più attività: le applicazioni che richiedono il tracciamento simultaneo degli oggetti e la segmentazione delle istanze preferiranno YOLOv8, poiché queste funzionalità sono integrate direttamente nella libreria Ultralytics.
Uno sguardo al futuro: modelli alternativi#
YOLOv8 migliora notevolmente YOLOX, ma il settore evolve rapidamente. Per i nuovi progetti, Ultralytics consiglia Ultralytics YOLO26, rilasciato a gennaio 2026.
YOLO26 offre una progettazione end-to-end senza NMS, la cui testa one-to-one opzionale (nms=False) elimina la post-elaborazione Non-Maximum Suppression (NMS), semplificando i flussi di distribuzione. Grazie all'inferenza senza NMS e alla rimozione di Distribution Focal Loss (DFL), YOLO26n offre un'inferenza CPU fino al 43% più veloce di YOLO11n, mentre l'ottimizzatore MuSGD migliora la stabilità dell'addestramento. Introduce inoltre ProgLoss + STAL (perdita progressiva e assegnazione delle etichette consapevole degli oggetti piccoli), migliorando il rilevamento degli oggetti piccoli nelle immagini aeree e nella robotica.
In alternativa, puoi valutare anche YOLO11, un altro predecessore solido e ben supportato nell'ecosistema Ultralytics, che offre prestazioni affidabili in diverse attività.
Conclusione#
YOLOX ha dimostrato il valore delle teste disaccoppiate e della progettazione anchor-free nella famiglia YOLO. Ultralytics YOLOv8 ha ripreso questi concetti, perfezionato l'architettura e li ha integrati in un ecosistema pronto per la produzione, noto per la facilità d'uso e la versatilità nelle attività. Con un modello Ultralytics, gli sviluppatori ottengono prestazioni elevate, addestramento efficiente in termini di memoria e strumenti di distribuzione che semplificano il passaggio dalla sperimentazione alla produzione.