YOLOX vs. YOLOv8: progressi nel rilevamento di oggetti ad alte prestazioni
Nel panorama in rapida evoluzione della visione artificiale, è fondamentale selezionare l'architettura giusta per la propria applicazione specifica. Questa guida fornisce un confronto tecnico dettagliato tra YOLOX, un rilevatore ad alte prestazioni senza ancoraggio del 2021, e Ultralytics YOLOv8, un modello all'avanguardia progettato per garantire versatilità, velocità e facilità di implementazione. Sebbene entrambi i modelli abbiano dato un contributo significativo al settore, comprendere le loro differenze architetturali e il supporto dell'ecosistema aiuterà gli sviluppatori a prendere decisioni informate per i progetti reali.
Panoramica generale
YOLOX ha rappresentato un cambiamento significativo nella YOLO , passando a un meccanismo senza ancoraggio e disaccoppiando la testa di previsione. Ciò ha semplificato il processo di progettazione e migliorato le prestazioni rispetto ai suoi contemporanei come YOLOv3 e YOLOv5 v5.0). Tuttavia, YOLOv8 si basa su anni di feedback e ricerche della comunità, integrando funzionalità avanzate come il rilevamento senza ancoraggio, un framework unificato per più attività e un'efficienza di formazione superiore, il tutto supportato dal completo Ultralytics .
YOLOX
- Autori: Zheng Ge, Songtao Liu, Feng Wang, Zeming Li e Jian Sun
- Organizzazione:Megvii
- Data: 2021-07-18
- Arxiv:YOLOX: Exceeding YOLO Series in 2021
- GitHub:Megvii-BaseDetection/YOLOX
YOLOv8
- Autori: Glenn Jocher, Ayush Chaurasia e Jing Qiu
- Organizzazione:Ultralytics
- Data: 2023-01-10
- GitHub:ultralytics/ultralytics
Differenze Architetturali
La differenza fondamentale risiede nel modo in cui questi modelli gestiscono la previsione degli oggetti e l'estrazione delle caratteristiche.
Architettura YOLOX
YOLOX ha introdotto una struttura "decoupled head" (testa disaccoppiata). YOLO tradizionali accoppiavano le attività di classificazione e localizzazione (regressione del bounding box) in un unico ramo. YOLOX le ha separate, sostenendo che il conflitto tra le attività di classificazione e regressione limitava le prestazioni. È inoltre passato a un design senza ancoraggi, trattando il rilevamento degli oggetti come un problema di regressione puntuale, che ha ridotto la complessità della regolazione euristica per gli anchor box. Utilizza SimOTA per l'assegnazione dinamica delle etichette, ottimizzando le previsioni che corrispondono agli oggetti reali.
Architettura YOLOv8
Ultralytics YOLOv8 ulteriormenteYOLOv8 il concetto di anchor-free. Impiega un modulo C2f nella sua struttura portante, che combina il meglio di C3 (da YOLOv5) e ELAN (da YOLOv7) per migliorare il flusso del gradiente mantenendo un ingombro ridotto. Come YOLOX, utilizza una testa disaccoppiata, ma introduce un Task-Aligned Assigner per l'assegnazione delle etichette, che bilancia i punteggi di classificazione e localizzazione in modo più efficace rispetto a SimOTA. Fondamentalmente, YOLOv8 progettato come un framework unificato, che supporta nativamente la segmentazione delle istanze, la stima della posa, il rilevamento di oggetti orientati (OBB) e la classificazione.
Bilanciamento delle prestazioni
Ultralytics raggiungono un equilibrio ottimale tra velocità e precisione. Il backbone C2f in YOLOv8 un'estrazione delle caratteristiche più ricca con un overhead computazionale ridotto rispetto al CSPDarknet utilizzato nelle architetture precedenti.
Confronto delle metriche di performance
La tabella seguente mette a confronto i modelli di rilevamento standard sul COCO . YOLOv8 offre YOLOv8 un mAPval più elevato a velocità di inferenza comparabili o superiori, in particolare su hardware moderno che utilizza TensorRT.
| Modello | dimensione (pixel) | mAPval 50-95 | Velocità CPU ONNX (ms) | Velocità T4 TensorRT10 (ms) | parametri (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| 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 |
| 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.2 |
| YOLOv8x | 640 | 53.9 | 479.1 | 14.37 | 68.2 | 257.8 |
Nota: le velocità YOLOX sono generalmente indicate su GPU V100, mentre YOLOv8 sono standardizzate suONNX T4 TensorRT10 e CPU ONNX . "params" si riferisce ai parametri (milioni) e "FLOPs" alle operazioni in virgola mobile (miliardi).
Addestramento e facilità d'uso
Uno dei fattori di differenziazione più significativi tra Ultralytics YOLOX e Ultralytics è l'esperienza dello sviluppatore.
Il vantaggio dell'ecosistema Ultralytics
YOLOv8 di Python e di un'interfaccia a riga di comando (CLI) altamente perfezionate. Gli sviluppatori possono passare dall'installazione all'addestramento su un set di dati personalizzato in pochi minuti. L'ecosistema include una perfetta integrazione con strumenti come Weights & Biases per la registrazione e Ultralytics per la gestione dei dati. Inoltre, Ultralytics consente l'addestramento e l'implementazione di modelli basati sul web senza la necessità di complesse configurazioni dell'ambiente locale.
Al contrario, YOLOX è un repository di ricerca più tradizionale. Sebbene potente, spesso richiede una configurazione manuale più complessa degli script di formazione e delle dipendenze ambientali, rendendolo più difficile da utilizzare per i principianti o i team che necessitano di iterazioni rapide.
Esempio di codice: Addestramento YOLOv8
La semplicità Ultralytics consente di ottenere un codice conciso e facile da mantenere.
from ultralytics import YOLO
# Load a model (YOLOv8n)
model = YOLO("yolov8n.pt")
# Train on COCO8 dataset
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")
Requisiti di Memoria
L'efficienza è un principio fondamentale Ultralytics . YOLOv8 ottimizzato per un utilizzo ridotto della memoria durante l'addestramento rispetto a molte altre architetture, inclusi i modelli basati su trasformatori come RT-DETR. Ciò consente ai ricercatori di addestrare batch di dimensioni maggiori su GPU di livello consumer (ad esempio NVIDIA 3060 o 4070), democratizzando l'accesso all'addestramento di modelli ad alte prestazioni.
Casi d'uso reali
La scelta del modello giusto dipende spesso dall'ambiente di implementazione e dai requisiti specifici dell'attività.
Dove YOLOv8 eccelle
- Applicazioni multi-task: poiché YOLOv8 supporta YOLOv8 la segmentazione e la stima della posa, è ideale per applicazioni complesse come l'analisi sportiva (monitoraggio dei movimenti e della postura dei giocatori) o i veicoli autonomi (segmentazione delle corsie e rilevamento degli oggetti).
- Distribuzione Edge: con esportazione tramite comando singolo in formati come ONNX, TensorRT, CoreML e TFLite, YOLOv8 fortemente ottimizzato per dispositivi edge come Raspberry Pi e telefoni cellulari.
- Prototipazione rapida: la facilità d'uso e i pesi pre-addestrati lo rendono la scelta ideale per le startup e i team agili che hanno bisogno di convalidare rapidamente le idee.
Dove si inserisce YOLOX
- Linee guida di ricerca tradizionali: YOLOX rimane una solida linea guida per gli articoli accademici che mettono a confronto architetture senza anchor dell'era 2021.
- Implementazioni personalizzate specifiche: per gli utenti che hanno investito molto nel framework MegEngine (anche se PyTorch supportato anche PyTorch ), YOLOX offre compatibilità nativa.
Prospettive Future: La Potenza di YOLO26
Sebbene YOLOv8 uno standard robusto e ampiamente utilizzato, Ultralytics a innovare. Il nuovo YOLO26 rappresenta il prossimo passo avanti.
Per gli sviluppatori alla ricerca del massimo in termini di prestazioni, YOLO26 offre diversi vantaggi fondamentali rispetto sia a YOLOX che a YOLOv8:
- End-to-End NMS: YOLO26 è nativamente end-to-end, eliminando la necessità di post-elaborazione con soppressione non massima (NMS). Ciò riduce la variabilità della latenza e semplifica le pipeline di implementazione.
- CPU più veloce: ottimizzato per l'edge computing, YOLO26 offre CPU fino al 43% più veloce, rendendolo superiore per i dispositivi senza GPU dedicate.
- Ottimizzatore MuSGD: ispirato alle innovazioni nella formazione LLM, l'ottimizzatore MuSGD garantisce una formazione più stabile e una convergenza più rapida.
- Rilevamento avanzato di oggetti di piccole dimensioni: grazie alle funzioni ProgLoss + STAL, YOLO26 offre notevoli miglioramenti nel riconoscimento di oggetti di piccole dimensioni, fondamentale per le immagini aeree e le attività di ispezione.
Conclusione
Sia YOLOX che YOLOv8 svolto un ruolo fondamentale nel progresso del rilevamento degli oggetti. YOLOX ha diffuso con successo i meccanismi di rilevamento senza ancoraggi. Tuttavia, YOLOv8 offre una soluzione più completa, intuitiva e versatile per lo sviluppo dell'intelligenza artificiale moderna. La sua integrazione Ultralytics , il supporto per molteplici attività di visione e le opzioni di implementazione senza soluzione di continuità lo rendono la scelta preferita per la maggior parte delle applicazioni commerciali e di ricerca odierne.
Per chi è pronto ad adottare la tecnologia AI di visione più avanzata, consigliamo vivamente di provare YOLO26 per rendere le vostre applicazioni a prova di futuro con velocità ed efficienza NMS.