YOLOv10 vs YOLOX#
Il campo della visione artificiale è guidato dai rapidi progressi nelle architetture per il rilevamento degli oggetti in tempo reale. Questo confronto tecnico dettagliato analizza due modelli influenti che hanno ampliato i limiti dell'efficienza e dei paradigmi progettuali: YOLOv10 e YOLOX. Esaminandone le differenze architetturali, le metriche delle prestazioni e le metodologie di addestramento, sviluppatori e ricercatori possono prendere decisioni consapevoli per implementare sistemi di visione robusti.
Contesto e origini dei modelli#
Comprendere le origini di questi modelli di deep learning fornisce un contesto prezioso sui loro obiettivi architetturali e sui casi d'uso previsti.
YOLOv10: eliminare la NMS per un rilevamento realmente end-to-end#
Sviluppato per risolvere i colli di bottiglia della latenza presenti da tempo, YOLOv10 ha introdotto un approccio nativo end-to-end nella famiglia YOLO.
- Autori: Ao Wang, Hui Chen, Lihao Liu, et al.
- Organizzazione: Tsinghua University
- Data: 23 maggio 2024
- ArXiv: 2405.14458
- GitHub: THU-MIG/yolov10
- Documentazione: Documentazione di Ultralytics YOLOv10
YOLOX: colmare il divario tra ricerca e industria#
YOLOX è emerso come una versione senza ancoraggi del design YOLO tradizionale, offrendo una metodologia più semplice con prestazioni competitive, mirata in particolare a semplificare l'implementazione negli ambienti industriali.
- Autori: Zheng Ge, Songtao Liu, Feng Wang, Zeming Li e Jian Sun
- Organizzazione: Megvii
- Data: 18 luglio 2021
- ArXiv: 2107.08430
- GitHub: Megvii-BaseDetection/YOLOX
- Documentazione: Documentazione ufficiale di YOLOX
Principali caratteristiche e innovazioni architetturali#
Entrambi i framework si discostano dai rilevatori tradizionali basati su ancoraggi, ma risolvono problemi diversi nella pipeline di rilevamento degli oggetti.
Architettura di YOLOX#
Nel 2021 YOLOX ha apportato diversi aggiornamenti fondamentali all'ecosistema. Il suo contributo principale è stato il passaggio a un design di rilevatore senza ancoraggi. Eliminando le anchor box predefinite, YOLOX ha ridotto notevolmente il numero di parametri progettuali e la messa a punto euristica necessaria per diversi dataset.
Inoltre, YOLOX utilizza una testa disaccoppiata, che separa le attività di classificazione e regressione. Questo ha risolto il conflitto tra i due obiettivi, accelerando significativamente la convergenza durante l'addestramento. Utilizza anche SimOTA per un'assegnazione avanzata delle etichette, migliorando la gestione di scene affollate e occlusioni comuni nel dataset COCO.
I design senza ancoraggi, come quello introdotto da YOLOX, riducono significativamente la complessità della messa a punto del modello. Gli sviluppatori non devono più eseguire il clustering k-means su dataset personalizzati per definire le dimensioni ottimali delle anchor box, risparmiando tempo prezioso nella preparazione.
Architettura di YOLOv10#
Sebbene YOLOX abbia migliorato la testa di rilevamento, durante l'inferenza si affidava ancora alla soppressione non massima (NMS), che causa variabilità nella latenza. YOLOv10 ha mirato specificamente a risolvere questo difetto introducendo una strategia di assegnazione duale coerente per l'addestramento senza NMS. Durante l'addestramento utilizza assegnazioni delle etichette sia one-to-many sia one-to-one, mentre durante l'inferenza elimina completamente la testa one-to-many, producendo previsioni pulite senza post-processing NMS.
YOLOv10 presenta inoltre un design del modello olistico, guidato dal rapporto tra efficienza e accuratezza. Integra teste di classificazione leggere e un downsampling disaccoppiato spazialmente e per canale, riducendo notevolmente il numero di parametri e i FLOPs senza sacrificare l'accuratezza.
Confronto delle prestazioni#
La valutazione di questi modelli su hardware come la GPU NVIDIA T4 rivela vantaggi distinti a seconda della scala. Di seguito è riportata la tabella di confronto completa.
| Modello | dimensione (pixel) | mAPval 50-95 | Velocità CPU ONNX (ms) | Velocità T4 TensorRT10 (ms) | parametri (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| YOLOv10n | 640 | 39.5 | - | 1.56 | 2.3 | 6.7 |
| YOLOv10s | 640 | 46.7 | - | 2.66 | 7.2 | 21.6 |
| YOLOv10m | 640 | 51.3 | - | 5.48 | 15.4 | 59.1 |
| YOLOv10b | 640 | 52.7 | - | 6.54 | 24.4 | 92.0 |
| YOLOv10l | 640 | 53.3 | - | 8.33 | 29.5 | 120.3 |
| YOLOv10x | 640 | 54.4 | - | 12.2 | 56.9 | 160.4 |
| 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 mostrato sopra, YOLOv10 si adatta eccezionalmente bene alle diverse scale. La variante YOLOv10x raggiunge l'accuratezza più elevata (54.4 mAP), mentre la variante YOLOv10n offre l'inferenza più rapida grazie all'integrazione con TensorRT. Al contrario, il modello YOLOX nano legacy ha l'ingombro complessivo più ridotto per gli ambienti fortemente vincolati.
Metodologie di addestramento e requisiti delle risorse#
Quando implementi modelli in produzione, l'ecosistema di addestramento e il fabbisogno di risorse sono importanti quanto la velocità di inferenza pura.
YOLOX spesso si basa su configurazioni di ambiente meno recenti, che possono essere difficili da gestire. Inoltre, il suo codebase legacy richiede più codice boilerplate per ottenere l'addestramento distribuito multi-GPU o l'ottimizzazione a precisione mista.
Al contrario, YOLOv10 si integra senza problemi nei workflow moderni di PyTorch, ma è l'ecosistema Ultralytics a trasformare davvero l'esperienza dello sviluppatore. I modelli Ultralytics sono caratterizzati da un utilizzo della memoria CUDA durante l'addestramento significativamente inferiore rispetto alle architetture basate su Transformer come RT-DETR.
Esempio di codice: addestramento semplificato#
Utilizzando l'API unificata di Ultralytics, puoi addestrare senza problemi modelli all'avanguardia con poche righe di Python. In questo modo eviti la compilazione manuale degli operatori C++ o file di configurazione macchinosi.
from ultralytics import YOLO
# Initialize a pre-trained YOLOv10 model
model = YOLO("yolov10s.pt")
# Train the model on the COCO8 dataset
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Validate the model's performance
metrics = model.val()
# Export the optimized model to ONNX format
model.export(format="onnx")Questa sintassi semplice offre accesso immediato alla precisione mista automatica, all'aumento automatico dei dati e all'integrazione immediata con strumenti come Weights & Biases.
Casi d'uso e raccomandazioni#
La scelta tra YOLOv10 e YOLOX dipende dai requisiti specifici del tuo progetto, dai vincoli di implementazione e dalle preferenze relative all'ecosistema.
Quando scegliere YOLOv10#
YOLOv10 è una scelta ottimale per:
- Rilevamento in tempo reale senza NMS: applicazioni che traggono vantaggio dal rilevamento end-to-end senza soppressione non massima, riducendo la complessità della distribuzione.
- Compromesso equilibrato tra velocità e accuratezza: progetti che richiedono un equilibrio efficace tra velocità di inferenza e accuratezza del rilevamento su diverse dimensioni del modello.
- Applicazioni a latenza coerente: scenari di distribuzione in cui sono fondamentali tempi di inferenza prevedibili, come la robotica o i sistemi autonomi.
Quando scegliere YOLOX#
YOLOX è consigliato per:
- Ricerca sul rilevamento senza anchor: ricerca accademica che utilizza l'architettura pulita e senza anchor di YOLOX come baseline per sperimentare nuove teste di rilevamento o funzioni di perdita.
- Dispositivi edge ultraleggeri: distribuzione su microcontrollori o hardware mobile legacy, dove l'ingombro estremamente ridotto della variante YOLOX-Nano (0.91M di parametri) è fondamentale.
- Studi sull'assegnazione delle label SimOTA: progetti di ricerca che analizzano le strategie di assegnazione delle label basate sul trasporto ottimale e il loro impatto sulla convergenza dell'addestramento.
Quando scegliere Ultralytics (YOLO26)#
Per la maggior parte dei nuovi progetti, Ultralytics YOLO26 offre la migliore combinazione di prestazioni ed esperienza per gli sviluppatori:
- Deployment edge senza NMS: applicazioni che richiedono un'inferenza coerente e a bassa latenza senza la complessità della post-elaborazione con Soppressione non massima.
- Ambienti esclusivamente CPU: dispositivi privi di accelerazione GPU dedicata, dove l'inferenza su CPU fino al 43% più veloce di YOLO26 offre un vantaggio decisivo.
- Rilevamento di oggetti piccoli: scenari complessi come le immagini aeree riprese da droni o l'analisi di sensori IoT, in cui ProgLoss e STAL migliorano significativamente l'accuratezza sugli oggetti di piccole dimensioni.
Il futuro dell'IA per la visione: arriva YOLO26#
Sebbene YOLOv10 e YOLOX rappresentino importanti traguardi, il panorama della visione artificiale continua ad avanzare inarrestabilmente. Per gli sviluppatori che iniziano oggi nuovi progetti, Ultralytics YOLO26 è la scelta consigliata definitiva.
Rilasciato a gennaio 2026, Ultralytics YOLO26 si basa sull'innovazione fondamentale del design end-to-end senza NMS introdotto da YOLOv10, perfezionandolo per ottenere stabilità e velocità ancora maggiori.
YOLO26 si distingue per l'introduzione di diversi enormi passi avanti:
- Inferenza CPU fino al 43% più rapida: rimuovendo strategicamente Distribution Focal Loss (DFL), YOLO26 raggiunge prestazioni nettamente superiori sui dispositivi edge privi di GPU.
- Ottimizzatore MuSGD: ispirato alla stabilità dell'addestramento degli LLM, questo nuovo ibrido di SGD e Muon garantisce una convergenza più rapida e sessioni di addestramento altamente stabili.
- ProgLoss + STAL: queste funzioni di perdita avanzate producono miglioramenti notevoli nel riconoscimento degli oggetti piccoli, un fattore critico per le immagini aeree e i sensori IoT.
- Versatilità senza pari: a differenza di YOLOX, che è esclusivamente un rilevatore di oggetti, YOLO26 supporta nativamente segmentazione delle istanze, stima della posa, classificazione delle immagini e rilevamento OBB all'interno di un'unica libreria unificata.
Per il percorso più semplice verso la produzione, gli sviluppatori possono utilizzare la piattaforma Ultralytics per annotare i dataset, addestrare modelli YOLO26 nel cloud e implementarli su qualsiasi dispositivo edge senza alcuna configurazione.
Applicazioni nel mondo reale#
La scelta del modello giusto determina il successo delle implementazioni nel mondo reale in diversi settori.
Analisi video ad alta velocità#
Per elaborare flussi video densi, come quelli della gestione del traffico nelle smart city, YOLOv10 offre un vantaggio significativo grazie al post-processing senza NMS. L'eliminazione del collo di bottiglia della NMS consente una latenza ridotta e costante, rendendolo ideale da abbinare ad algoritmi di tracking come BoT-SORT.
Implementazione edge legacy#
Per configurazioni accademiche meno recenti o applicazioni Android legacy fortemente ottimizzate per paradigmi puramente convoluzionali, modelli più piccoli come YOLOX-Tiny possono ancora trovare casi d'uso specializzati, nei quali mantenere ambienti PyTorch meno recenti rappresenta un compromesso accettabile.
Dispositivi edge e IoT moderni#
Per le implementazioni su hardware di nuova generazione, come robotica, droni e analisi degli scaffali nei punti vendita, YOLO26 è la soluzione definitiva. La latenza CPU drasticamente ridotta e il rilevamento superiore degli oggetti piccoli lo rendono particolarmente adatto alla navigazione autonoma e alla gestione dettagliata dell'inventario.
Per ulteriori confronti utili ad ampliare il tuo toolkit di deep learning, puoi anche esaminare le prestazioni di questi modelli rispetto ad alternative come il flessibile YOLO11 o il RT-DETR basato su Transformer.