YOLOX vs YOLOv10#
L’evoluzione dei modelli di computer vision in tempo reale è stata caratterizzata da importanti passi avanti sul piano architetturale. Due tappe fondamentali di questo percorso sono YOLOX e YOLOv10. Rilasciato nel 2021, YOLOX ha colmato con successo il divario tra ricerca accademica e applicazioni industriali introducendo un’efficace architettura senza anchor. Tre anni dopo, YOLOv10 ha rivoluzionato il settore eliminando la necessità della soppressione dei non massimi (NMS) nel post-processing e spingendo oltre i limiti di efficienza e velocità.
Questo confronto tecnico completo analizza le architetture, le metriche di prestazione e i casi d’uso ideali di entrambi i modelli, offrendo spunti utili per aiutarti a scegliere lo strumento giusto per il tuo prossimo progetto di rilevamento degli oggetti.
Origini e metadati dei modelli#
Conoscere le origini di questi modelli aiuta a comprendere le scelte architetturali e gli ambienti di distribuzione previsti.
Dettagli su YOLOX
- Autori: Zheng Ge, Songtao Liu, Feng Wang, Zeming Li e Jian Sun
- Organizzazione: Megvii
- Data: 2021-07-18
- Arxiv: https://arxiv.org/abs/2107.08430
- GitHub: https://github.com/Megvii-BaseDetection/YOLOX
- Documentazione: https://github.com/Megvii-BaseDetection/YOLOX/tree/main/docs
Dettagli su YOLOv10
- Autori: Ao Wang, Hui Chen, Lihao Liu, Kai Chen, Zijia Lin, Jungong Han e Guiguang Ding
- Organizzazione: Università Tsinghua
- Data: 2024-05-23
- Arxiv: https://arxiv.org/abs/2405.14458
- GitHub: https://github.com/THU-MIG/yolov10
- Documentazione: https://docs.ultralytics.com/models/yolov10
Innovazioni architetturali#
Le differenze principali tra YOLOX e YOLOv10 riguardano il modo in cui gestiscono le previsioni dei riquadri di delimitazione e il post-processing.
YOLOX: pioniere dell’architettura senza anchor#
YOLOX ha fatto parlare di sé introducendo nell’architettura YOLO un approccio senza anchor. Prevedendo il centro di un oggetto anziché basarsi su riquadri di anchor predefiniti, YOLOX ha ridotto drasticamente il numero di parametri di progettazione e di regolazioni euristiche necessari per i dataset personalizzati. Ha inoltre introdotto una testa disaccoppiata, separando le attività di classificazione e regressione in percorsi distinti. Questo approccio ha risolto il conflitto tra identificare che cosa sia un oggetto e determinare dove si trovi, aumentando sensibilmente la velocità di convergenza e la precisione.
YOLOv10: la rivoluzione senza NMS#
YOLOX ha semplificato la testa di rilevamento, ma continuava a basarsi su NMS per filtrare le previsioni ridondanti dei riquadri di delimitazione. YOLOv10 ha affrontato questo limite fondamentale. Utilizzando assegnazioni duali coerenti durante l’addestramento, YOLOv10 esegue il rilevamento end-to-end nativamente. Durante l’addestramento usa una testa one-to-many per garantire segnali di supervisione ricchi, mentre in inferenza usa una testa one-to-one per generare direttamente le previsioni finali. Questo approccio olistico, orientato all’efficienza e all’accuratezza, elimina completamente NMS e riduce notevolmente la latenza di inferenza sui chip embedded.
La soppressione dei non massimi è spesso un’operazione complessa da accelerare sulle unità di elaborazione neurale (NPU). Eliminandola, YOLOv10 consente all’intero grafo del modello di essere eseguito senza interruzioni su hardware specializzato, migliorando drasticamente la compatibilità con framework di ottimizzazione come OpenVINO e TensorRT.
Metriche di prestazione e confronto#
Quando valuti i modelli per la produzione, è fondamentale bilanciare l’accuratezza con il carico computazionale. La tabella seguente illustra i compromessi tra le diverse dimensioni di YOLOX e YOLOv10.
| 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 |
| 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 |
Analisi dei dati#
Le metriche dimostrano chiaramente il salto generazionale di YOLOv10. Per esempio, YOLOv10-S raggiunge una precisione media del 46,3%, rispetto al 46,9% di YOLOX-m, ma con meno di un terzo dei parametri (7,2M contro 25,3M) e un numero decisamente inferiore di FLOP. Inoltre, il modello di fascia alta YOLOv10-X porta la mAP al 54,4%, risultando molto competitivo nei task che richiedono un’elevata accuratezza e al contempo più veloce della precedente architettura YOLOX-x.
I vantaggi dell’ecosistema Ultralytics#
YOLOX resta un’implementazione di ricerca open source affidabile, ma adottare YOLOv10 offre accesso immediato all’ecosistema ben mantenuto di Ultralytics. Scegliere un modello supportato da Ultralytics garantisce un’esperienza d’uso semplificata, con un’API semplice e una documentazione completa.
Gli sviluppatori traggono grandi vantaggi dai bassi requisiti di memoria del framework: l’addestramento dei modelli Ultralytics richiede in genere molta meno memoria CUDA rispetto ad alternative pesanti basate su Transformer come RT-DETR. Questa efficienza in fase di addestramento permette di usare batch più grandi su hardware di fascia consumer, accelerando il passaggio dalla raccolta dei dati alla distribuzione del modello. Inoltre, il framework offre una versatilità senza pari e consente agli utenti di passare senza difficoltà dal rilevamento degli oggetti alla segmentazione di istanze e alla stima della posa, con modifiche minime al codice.
Esempio di addestramento e inferenza#
L’API unificata consente di convalidare le idee in tempi rapidissimi. Il seguente frammento mostra quanto sia semplice addestrare e distribuire un modello YOLOv10 utilizzando il backend PyTorch:
from ultralytics import YOLO
# Carica un modello nano YOLOv10 pre-addestrato
model = YOLO("yolov10n.pt")
# Addestra il modello sul dataset COCO8
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Esegui l'inferenza su un'immagine di esempio
predictions = model.predict("https://ultralytics.com/images/bus.jpg")
# Esporta il modello per la distribuzione edge
model.export(format="engine", quantize=16)Grazie alle routine di esportazione integrate, convertire i modelli in formati come TensorRT o ONNX richiede una sola riga di codice ed evita del tutto le complesse operazioni di compilazione.
Casi d'uso ideali e scenari di distribuzione#
La scelta tra queste architetture dipende in gran parte dai vincoli hardware e dai requisiti specifici del tuo ambito.
Analisi video in tempo reale#
Per le applicazioni che richiedono una latenza estremamente bassa, come la guida autonoma o il monitoraggio del traffico in tempo reale, YOLOv10 è la scelta migliore. La sua architettura end-to-end senza NMS garantisce tempi di esecuzione deterministici, fondamentali per i sistemi di sicurezza che non possono tollerare una latenza variabile nel post-processing. I modelli raggiungono facilmente frequenze di fotogrammi elevate su dispositivi come la serie NVIDIA Jetson.
Baseline accademiche e microcontrollori edge#
YOLOX resta utile in ambito accademico, dove i ricercatori desiderano una baseline con testa disaccoppiata e pulita per sperimentare strategie di assegnazione delle etichette. Inoltre, YOLOX-Nano, eccezionalmente piccolo (meno di 1 milione di parametri), può essere adattato a dispositivi edge con risorse molto limitate, purché l’hardware supporti le operazioni di convoluzione standard.
Lo standard definitivo: Ultralytics YOLO26#
Sebbene YOLOv10 abbia segnato un enorme passo avanti eliminando NMS, il settore della computer vision continua a evolversi rapidamente. Per gli sviluppatori che puntano a ottenere oggi prestazioni ai vertici assoluti, consigliamo vivamente di provare YOLO26.
Rilasciato come nuovo standard nel campo dell’AI per la computer vision, YOLO26 riprende le idee fondamentali dei modelli precedenti e le potenzia. Offre il massimo equilibrio prestazionale e supporta nativamente il rilevamento, la segmentazione, la stima della posa e i riquadri di delimitazione orientati.
Ecco perché YOLO26 è la scelta consigliata per le moderne pipeline di computer vision:
- Architettura end-to-end senza NMS: sulla scia delle innovazioni di YOLOv10, YOLO26 supporta l’inferenza end-to-end nativa (
nms=False) e offre tempi di inferenza più rapidi e deterministici, senza i colli di bottiglia del post-processing NMS. - Inferenza su CPU fino al 43% più veloce: è ottimizzato specificamente per l’edge computing e garantisce prestazioni eccezionali sui processori mobili e sui dispositivi privi di GPU dedicata.
- Ottimizzatore MuSGD: ispirato all’addestramento dei modelli linguistici di grandi dimensioni (in particolare Kimi K2 di Moonshot AI), YOLO26 utilizza una combinazione ibrida di SGD e Muon per garantire un addestramento estremamente stabile e una convergenza rapida.
- ProgLoss + STAL: queste funzioni di loss avanzate migliorano notevolmente il riconoscimento degli oggetti piccoli, fondamentale in ambiti complessi come le immagini aeree e la navigazione con droni.
- Rimozione di DFL: eliminando la Distribution Focal Loss, YOLO26 semplifica il grafo del modello e rende agevole l’esportazione verso dispositivi edge e a basso consumo.
- Miglioramenti specifici per task: che tu utilizzi la stima della verosimiglianza logaritmica residua (RLE) per la stima della posa o una loss angolare specializzata per OBB, YOLO26 è ottimizzato per ogni task principale di computer vision.
Per gli sviluppatori pronti ad aggiornare le proprie pipeline con gli strumenti più efficienti disponibili per l’addestramento e la distribuzione, passare alla Ultralytics Platform e sfruttare YOLO26 ti permette di restare all’avanguardia dell’intelligenza artificiale. Chi è interessato ad architetture precedenti ma stabili può anche valutare YOLO11 o YOLOv8, che offrono un ampio supporto della community e un’affidabilità comprovata.