YOLOX vs YOLOv10: Confronto tra rilevamento di oggetti in tempo reale senza anchor e senza NMS
L'evoluzione dei modelli di computer vision in tempo reale è stata caratterizzata da significativi salti architettonici. Due pietre miliari fondamentali in questo percorso sono YOLOX e YOLOv10. Rilasciato nel 2021, YOLOX ha colmato con successo il divario tra la ricerca accademica e l'applicazione industriale introducendo un design senza anchor altamente efficace. Tre anni dopo, YOLOv10 ha rivoluzionato il campo eliminando la necessità della Non-Maximum Suppression (NMS) durante la post-elaborazione, spingendo oltre i confini dell'efficienza e della velocità.
Questo confronto tecnico completo esplora le architetture, le metriche delle prestazioni e i casi d'uso ideali per entrambi i modelli, fornendo approfondimenti per aiutarti a scegliere lo strumento giusto per il tuo prossimo progetto di rilevamento oggetti.
Origini e metadati dei modelli
Comprendere le origini di questi modelli fornisce il contesto per le loro scelte architettoniche e gli ambienti di distribuzione previsti.
Dettagli 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://yolox.readthedocs.io/en/latest/
Dettagli YOLOv10
Autori: Ao Wang, Hui Chen, Lihao Liu, Kai Chen, Zijia Lin, Jungong Han e Guiguang Ding
Organizzazione: Tsinghua University
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 architettoniche
Le differenze principali tra YOLOX e YOLOv10 risiedono nel modo in cui gestiscono le previsioni dei bounding box e la post-elaborazione.
YOLOX: Pionieri del design senza anchor
YOLOX ha fatto scalpore facendo passare la famiglia YOLO a un'architettura senza anchor. Prevedendo il centro di un oggetto anziché basarsi su anchor box predefiniti, YOLOX ha ridotto drasticamente il numero di parametri di progettazione e la messa a punto euristica richiesti per i dataset personalizzati. Inoltre, ha introdotto una testa disaccoppiata (decoupled head), separando le attività di classificazione e regressione in percorsi distinti. Questo approccio ha risolto il conflitto tra l'identificare cosa sia un oggetto e il determinare dove si trovi, portando a un notevole miglioramento nella velocità di convergenza e nella precisione.
YOLOv10: La rivoluzione senza NMS
Sebbene YOLOX abbia semplificato la testa di rilevamento, faceva ancora affidamento sulla NMS per filtrare le previsioni ridondanti dei bounding box. YOLOv10 ha affrontato questo collo di bottiglia fondamentale. Utilizzando assegnazioni doppie coerenti durante l'addestramento, YOLOv10 ottiene un rilevamento nativo end-to-end. Impiega una testa one-to-many durante l'addestramento per garantire ricchi segnali di supervisione, utilizzando una testa one-to-one durante l'inferenza per generare direttamente le previsioni finali. Questo design olistico basato sull'efficienza-precisione elimina completamente la NMS, riducendo significativamente la latenza di inferenza sui chip embedded.
La Non-Maximum Suppression è spesso un'operazione complessa da accelerare sulle Neural Processing Units (NPUs). Rimuovendola, YOLOv10 consente all'intero grafo del modello di essere eseguito senza problemi 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 sovraccarico computazionale. La tabella seguente illustra i compromessi tra varie scale di YOLOX e YOLOv10.
| Modello | dimensione (pixel) | mAPval 50-95 | Velocità CPU ONNX (ms) | Velocità T4 TensorRT10 (ms) | parametri (M) | FLOP (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 | 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 |
Analisi dei dati
Le metriche dimostrano chiaramente il salto generazionale di YOLOv10. Ad esempio, YOLOv10-S raggiunge una mean Average Precision del 46,7% rispetto al 46,9% di YOLOX-m, ma lo fa utilizzando meno di un terzo dei parametri (7,2M contro 25,3M) e un numero significativamente inferiore di FLOP. Inoltre, il modello YOLOv10-X di alto livello spinge la mAP al 54,4%, rendendolo altamente competitivo per attività di precisione impegnative pur rimanendo più veloce della vecchia architettura YOLOX-x.
Il vantaggio dell'ecosistema Ultralytics
Mentre YOLOX rimane una solida implementazione di ricerca open-source, l'adozione di YOLOv10 fornisce un accesso immediato all'ecosistema ben curato fornito da Ultralytics. Scegliere un modello supportato da Ultralytics garantisce un'esperienza utente ottimizzata, caratterizzata da una semplice API e una vasta documentazione.
Gli sviluppatori traggono grandi vantaggi dai requisiti di memoria del framework; l'addestramento dei modelli Ultralytics solitamente consuma molta meno memoria CUDA rispetto a pesanti alternative basate su Transformer come RT-DETR. Questo ingombro di addestramento efficiente consente batch size maggiori su hardware di livello consumer, accelerando i tempi dalla raccolta dei dati al deployment del modello. Inoltre, il framework offre una versatilità impareggiabile, consentendo agli utenti di passare senza problemi tra rilevamento di oggetti, segmentazione di istanze e stima della posa con modifiche minime al codice.
Esempio di addestramento e inferenza
L'API unificata rende la convalida delle idee incredibilmente veloce. Il seguente frammento dimostra quanto sia facile addestrare e distribuire un modello YOLOv10 utilizzando il backend PyTorch:
from ultralytics import YOLO
# Load a pre-trained YOLOv10 nano model
model = YOLO("yolov10n.pt")
# Train the model on the COCO8 dataset
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Run inference on a sample image
predictions = model.predict("https://ultralytics.com/images/bus.jpg")
# Export the model for edge deployment
model.export(format="engine", half=True)Sfruttando le routine di esportazione integrate, convertire i modelli in formati come TensorRT o ONNX richiede solo una singola riga di codice, bypassando completamente complessi ostacoli di compilazione.
Casi d'uso ideali e scenari di implementazione
Scegliere tra queste architetture dipende in gran parte dai vincoli dell'hardware e dai requisiti specifici del tuo dominio.
Analisi video in tempo reale
Per le applicazioni che richiedono una latenza ultra-bassa, come la guida autonoma o il monitoraggio del traffico in tempo reale, YOLOv10 è la scelta superiore. Il suo design end-to-end senza NMS garantisce tempi di esecuzione deterministici, critici per i sistemi di sicurezza in cui non è possibile tollerare una latenza di post-elaborazione variabile. I modelli raggiungono facilmente frame rate elevati su dispositivi come la serie NVIDIA Jetson.
Baseline accademiche e microcontrollori edge
YOLOX mantiene ancora valore negli ambienti accademici in cui i ricercatori desiderano una baseline pulita con testa disaccoppiata per sperimentare strategie di assegnazione delle etichette. Inoltre, l'eccezionalmente piccolo YOLOX-Nano (sotto 1 milione di parametri) può essere inserito in microcontrollori edge altamente vincolati dove la memoria è misurata in kilobyte, a condizione che l'hardware possa supportare operazioni di convoluzione standard.
Lo standard definitivo: Ultralytics YOLO26
Mentre YOLOv10 ha segnato un enorme passo avanti eliminando la NMS, il campo della computer vision avanza rapidamente. Per gli sviluppatori che mirano a implementare oggi le migliori prestazioni della categoria, consigliamo vivamente di esplorare YOLO26.
Rilasciato come l'ultimo standard nella vision AI, YOLO26 prende le idee fondamentali dei suoi predecessori e le potenzia. Offre il miglior equilibrio in termini di prestazioni, supportando nativamente il rilevamento, la segmentazione, la posa e i bounding box orientati.
Ecco perché YOLO26 è la scelta consigliata per le moderne pipeline di computer vision:
- Design End-to-End senza NMS: Costruito sui progressi di YOLOv10, YOLO26 è nativamente end-to-end, garantendo tempi di inferenza più rapidi e deterministici senza colli di bottiglia nella post-elaborazione.
- Inferenza CPU fino al 43% più veloce: È specificamente ottimizzato per l'edge computing, garantendo prestazioni eccezionali su processori mobili e dispositivi privi di GPU discrete.
- Ottimizzatore MuSGD: Ispirato all'addestramento dei modelli linguistici di grandi dimensioni (nello specifico Kimi K2 di Moonshot AI), YOLO26 utilizza un ibrido di SGD e Muon per un addestramento incredibilmente stabile e una rapida convergenza.
- ProgLoss + STAL: Queste funzioni di perdita avanzate offrono miglioramenti notevoli nel riconoscimento di piccoli oggetti, fondamentale per domini esigenti come l'immaginografia aerea e la navigazione con droni.
- Rimozione DFL: Rimuovendo la Distribution Focal Loss, YOLO26 semplifica il grafo del modello per un'esportazione senza attriti verso dispositivi edge e a basso consumo.
- Miglioramenti specifici per attività: Che tu stia utilizzando la Residual Log-Likelihood Estimation (RLE) per la stima della posa o una perdita angolare specializzata per OBB, YOLO26 è ottimizzato per ogni principale attività di visione.
Per gli sviluppatori pronti ad aggiornare le proprie pipeline con gli strumenti di addestramento e distribuzione più efficienti disponibili, la transizione alla Piattaforma Ultralytics e l'utilizzo di YOLO26 ti garantiscono di rimanere all'avanguardia dell'intelligenza artificiale. Gli utenti interessati ad architetture più vecchie ma stabili possono anche rivedere YOLO11 o YOLOv8 per un ampio supporto della community e una comprovata robustezza.