YOLOv10 vs YOLOX#
Il campo della visione artificiale è trainato dai rapidi progressi delle architetture di rilevamento degli oggetti in tempo reale. Questo confronto tecnico dettagliato analizza due modelli influenti che hanno ampliato i confini dell’efficienza e dei paradigmi di progettazione: YOLOv10 e YOLOX. Esaminandone le differenze architetturali, le metriche di prestazione e le metodologie di addestramento, sviluppatori e ricercatori possono prendere decisioni consapevoli per implementare sistemi di visione robusti.
Origini e contesto dei modelli#
Comprendere le origini di questi modelli di deep learning offre un contesto prezioso sui loro obiettivi architetturali e sui casi d’uso a cui sono destinati.
YOLOv10: eliminare NMS per un rilevamento davvero end-to-end#
Sviluppato per risolvere colli di bottiglia nella latenza presenti da tempo, YOLOv10 ha introdotto un approccio end-to-end nativo nella famiglia YOLO.
- Autori: Ao Wang, Hui Chen, Lihao Liu, et al.
- Organizzazione: Università Tsinghua
- 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 è nato come versione anchor-free del design YOLO tradizionale, offrendo una metodologia più semplice e prestazioni competitive, con l’obiettivo specifico di 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
Caratteristiche e innovazioni architetturali#
Entrambi i framework si discostano dai rilevatori tradizionali basati su anchor, ma affrontano problemi diversi nella pipeline di rilevamento degli oggetti.
Architettura di YOLOX#
Nel 2021, YOLOX ha introdotto diversi aggiornamenti fondamentali nell’ecosistema. Il suo contributo principale è stato il passaggio a un design anchor-free. Eliminando le anchor box predefinite, YOLOX ha ridotto notevolmente il numero di parametri di progettazione e la necessità di regolazioni euristiche per i 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 notevolmente la convergenza durante l’addestramento. Utilizza anche SimOTA per un’assegnazione avanzata delle etichette, migliorando la gestione delle scene affollate e delle occlusioni comuni nel dataset COCO.
I design anchor-free, come quello introdotto da YOLOX, riducono notevolmente la complessità della messa a punto dei modelli. Gli sviluppatori non devono più eseguire il clustering k-means sui dataset personalizzati per definire le dimensioni ottimali delle anchor box, risparmiando tempo prezioso nella fase di preparazione.
Architettura di YOLOv10#
Sebbene YOLOX abbia migliorato la testa di rilevamento, in inferenza si affidava ancora alla soppressione dei non massimi (NMS), che causa variabilità nella latenza. YOLOv10 ha affrontato specificamente questo problema introducendo una strategia di assegnazione duale coerente per l’addestramento senza NMS. Durante l’addestramento utilizza sia assegnazioni di etichette one-to-many sia one-to-one, mentre in inferenza elimina del tutto la testa one-to-many e produce predizioni pulite senza post-elaborazione NMS.
YOLOv10 presenta anche un design del modello che bilancia in modo olistico efficienza e accuratezza. Integra teste di classificazione leggere e un sottocampionamento disaccoppiato spaziale-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 mette in evidenza vantaggi diversi a seconda delle dimensioni. Di seguito trovi la tabella comparativa completa.
| Modello | dimensione (pixel) | mAPval 50-95 | Velocità CPU ONNX (ms) | Velocità T4 TensorRT10 (ms) | parametri (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| YOLOv10n | 640 | 38.5 | - | 1.84 | 2.3 | 6.7 |
| YOLOv10s | 640 | 46.3 | - | 2.49 | 7.2 | 21.6 |
| YOLOv10m | 640 | 51.1 | - | 4.74 | 15.4 | 59.1 |
| YOLOv10b | 640 | 52.5 | - | 5.74 | 19.1 | 92.0 |
| YOLOv10l | 640 | 53.2 | - | 7.28 | 24.4 | 120.3 |
| YOLOv10x | 640 | 54.4 | - | 10.70 | 29.5 | 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 si vede sopra, YOLOv10 si adatta eccezionalmente bene alle diverse dimensioni. 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 vecchio modello YOLOX nano ha l’ingombro complessivo minore ed è adatto agli ambienti con forti vincoli di risorse.
Metodologie di addestramento e requisiti di risorse#
Quando implementi modelli in produzione, l’ecosistema di addestramento e il fabbisogno di risorse sono importanti quanto la velocità di inferenza pura.
YOLOX si affida spesso a configurazioni di ambienti meno recenti, che possono essere complicate da gestire. Inoltre, la sua codebase legacy richiede più codice ripetitivo per eseguire l’addestramento distribuito su più GPU o l’ottimizzazione a precisione mista.
Al contrario, YOLOv10 si integra senza difficoltà nei workflow moderni di PyTorch, ma è l’ecosistema Ultralytics a trasformare davvero l’esperienza degli sviluppatori. Durante l’addestramento, i modelli Ultralytics utilizzano molta meno memoria CUDA rispetto alle architetture basate su Transformer come RT-DETR.
Esempio di codice: addestramento semplificato#
Con l’API unificata di Ultralytics puoi addestrare senza difficoltà modelli all’avanguardia con poche righe di Python. In questo modo eviti di compilare manualmente operatori C++ o di gestire file di configurazione complessi.
from ultralytics import YOLO
# Inizializza un modello YOLOv10 preaddestrato
model = YOLO("yolov10s.pt")
# Addestra il modello sul dataset COCO8
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Valida le prestazioni del modello
metrics = model.val()
# Esporta il modello ottimizzato in formato ONNX
model.export(format="onnx")Questa semplice sintassi 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 consigli#
La scelta tra YOLOv10 e YOLOX dipende dai requisiti specifici del progetto, dai vincoli di distribuzione e dalle preferenze per l’ecosistema.
Quando scegliere YOLOv10#
YOLOv10 è una scelta valida 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 precisione: progetti che richiedono un buon equilibrio tra velocità di inferenza e precisione di rilevamento con modelli di diverse dimensioni.
- Applicazioni con latenza costante: scenari di distribuzione in cui i tempi di inferenza prevedibili sono fondamentali, ad esempio nella robotica o nei sistemi autonomi.
Quando scegliere YOLOX#
YOLOX è consigliato per:
- Ricerca sul rilevamento senza anchor: Ricerca accademica che usa l'architettura pulita e senza anchor di YOLOX come riferimento per sperimentare nuove head di rilevamento o funzioni di perdita.
- Dispositivi edge ultraleggeri: Implementazione su microcontrollori o hardware mobile legacy, dove le dimensioni estremamente ridotte della variante YOLOX-Nano (0,91 M di parametri) sono fondamentali.
- Studi sull'assegnazione delle etichette SimOTA: Progetti di ricerca che analizzano le strategie di assegnazione delle etichette 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 combinazione migliore di prestazioni ed esperienza per gli sviluppatori:
- Distribuzione edge senza NMS: applicazioni che richiedono inferenza costante a bassa latenza senza la complessità della post-elaborazione con soppressione non massima.
- Ambienti con sola CPU: dispositivi senza accelerazione GPU dedicata, sui quali l'inferenza su CPU di YOLO26, fino al 43% più veloce, offre un vantaggio decisivo.
- Rilevamento di oggetti di piccole dimensioni: scenari complessi come le immagini aeree acquisite da droni o l'analisi dei sensori IoT, in cui ProgLoss e STAL migliorano notevolmente la precisione sugli oggetti molto piccoli.
Il futuro dell’IA per la visione: arriva YOLO26#
YOLOv10 e YOLOX rappresentano traguardi importanti, ma il panorama della visione artificiale continua a evolversi senza sosta. Per chi avvia oggi un nuovo progetto, Ultralytics YOLO26 è la scelta consigliata per eccellenza.
Rilasciato a gennaio 2026, Ultralytics YOLO26 si basa sull’innovazione fondamentale del design end-to-end senza NMS introdotto da YOLOv10, perfezionandolo per ottenere ancora più stabilità e velocità.
YOLO26 si distingue per diverse innovazioni di grande portata:
- Inferenza su CPU fino al 43% più veloce: rimuovendo strategicamente la Distribution Focal Loss (DFL), YOLO26 offre prestazioni nettamente superiori sui dispositivi edge privi di GPU.
- Ottimizzatore MuSGD: ispirato alla stabilità dell’addestramento degli LLM, questo nuovo approccio ibrido tra SGD e Muon assicura una convergenza più rapida e sessioni di addestramento estremamente stabili.
- ProgLoss + STAL: queste funzioni di perdita avanzate migliorano notevolmente il riconoscimento degli oggetti piccoli, un aspetto fondamentale 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 di istanze, stima della posa, classificazione delle immagini e rilevamento OBB in un’unica libreria unificata.
Per il percorso più semplice verso la produzione, puoi usare la piattaforma Ultralytics per annotare i dataset, addestrare i modelli YOLO26 nel cloud e distribuirli su qualsiasi dispositivo edge senza bisogno di configurazione.
Applicazioni nel mondo reale#
La scelta del modello giusto determina il successo delle implementazioni nel mondo reale nei diversi settori.
Analisi video ad alta velocità#
Per elaborare flussi video densi, ad esempio per la gestione del traffico nelle smart city, YOLOv10 offre un vantaggio significativo grazie alla post-elaborazione senza NMS. Eliminando il collo di bottiglia di NMS si ottiene una latenza bassa e costante, ideale per l’uso con algoritmi di tracking come BoT-SORT.
Implementazione edge su sistemi legacy#
Per vecchi ambienti accademici o applicazioni Android legacy fortemente ottimizzate per i paradigmi puramente convoluzionali, i modelli più piccoli come YOLOX-Tiny possono ancora essere adatti a casi d’uso specifici, in cui mantenere ambienti PyTorch meno recenti è 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 ideale. La latenza su CPU drasticamente ridotta e il rilevamento superiore degli oggetti piccoli lo rendono particolarmente adatto alla navigazione autonoma e alla gestione dettagliata dell’inventario.
Per ampliare il tuo toolkit di deep learning con ulteriori confronti, puoi anche scoprire come questi modelli si posizionano rispetto ad alternative come il flessibile YOLO11 o il RT-DETR basato su Transformer.