YOLOv10: rilevamento di oggetti end-to-end in tempo reale#
YOLOv10, rilasciato a maggio 2024 e basato sul pacchetto Python Ultralytics dai ricercatori della Tsinghua University, introduce un nuovo approccio al rilevamento di oggetti in tempo reale, affrontando le carenze sia della post-elaborazione sia dell'architettura del modello presenti nelle versioni precedenti di YOLO. Eliminando la soppressione non massima (NMS) e ottimizzando diversi componenti del modello, YOLOv10 ha ottenuto prestazioni eccellenti con un overhead computazionale notevolmente ridotto al momento del rilascio. Il suo design end-to-end senza NMS ha introdotto un approccio ulteriormente sviluppato in YOLO26.

Guarda: Come addestrare YOLOv10 sul dataset SKU-110k usando Ultralytics | Dataset per il retail
Panoramica#
Il rilevamento di oggetti in tempo reale mira a prevedere con accuratezza le categorie e le posizioni degli oggetti nelle immagini con una bassa latenza. La serie YOLO è all'avanguardia in questo ambito di ricerca grazie all'equilibrio tra prestazioni ed efficienza. Tuttavia, la dipendenza dalla NMS e le inefficienze architetturali hanno ostacolato prestazioni ottimali. YOLOv10 affronta questi problemi introducendo assegnazioni duali coerenti per l'addestramento senza NMS e una strategia di progettazione del modello olistica, guidata da efficienza e accuratezza.
Architettura#
L'architettura di YOLOv10 si basa sui punti di forza dei precedenti modelli YOLO e introduce al contempo diverse innovazioni chiave. L'architettura del modello è composta dai seguenti elementi:
- Backbone: Il backbone di YOLOv10, responsabile dell'estrazione delle feature, usa una versione potenziata di CSPNet (Cross Stage Partial Network) per migliorare il flusso dei gradienti e ridurre la ridondanza computazionale.
- Neck: Il neck è progettato per aggregare feature provenienti da scale diverse e passarle alla head. Include livelli PAN (Path Aggregation Network) per una fusione efficace delle feature multiscala.
- Head one-to-many: Genera più previsioni per oggetto durante l'addestramento, fornendo segnali di supervisione ricchi e migliorando l'accuratezza dell'apprendimento.
- Testa one-to-one: genera un'unica previsione migliore per oggetto durante l'inferenza, eliminando così la necessità di NMS e riducendo la latenza e migliorando l'efficienza.
Funzionalità principali#
- Addestramento senza NMS: utilizza assegnazioni duali coerenti per eliminare la necessità di NMS, riducendo la latenza di inferenza.
- Progettazione olistica del modello: ottimizzazione completa di vari componenti dal punto di vista sia dell'efficienza sia dell'accuratezza, tra cui teste di classificazione leggere, downsampling con separazione spaziale e dei canali e progettazione dei blocchi guidata dal rango.
- Capacità del modello potenziate: integra convoluzioni con kernel di grandi dimensioni e moduli di self-attention parziale per migliorare le prestazioni senza costi computazionali significativi.
Varianti del modello#
YOLOv10 è disponibile in diverse dimensioni per adattarsi alle esigenze delle varie applicazioni:
- YOLOv10n: versione Nano per ambienti con risorse estremamente limitate.
- YOLOv10s: versione Small che bilancia velocità e accuratezza.
- YOLOv10m: versione Medium per uso generico.
- YOLOv10b: versione bilanciata, con larghezza aumentata per una maggiore accuratezza.
- YOLOv10l: versione Large per una maggiore accuratezza, a costo di un maggiore impiego di risorse computazionali.
- YOLOv10x: versione Extra-large per la massima accuratezza e prestazioni.
Prestazioni#
YOLOv10 supera le versioni precedenti di YOLO e altri modelli all'avanguardia in termini di accuratezza ed efficienza. Ad esempio, YOLOv10s è 1,8 volte più veloce di RT-DETR-R18 con un AP simile sul dataset COCO, e YOLOv10b ha una latenza inferiore del 46% e il 25% di parametri in meno rispetto a YOLOv9-C, a parità di prestazioni.
Latenza misurata con TensorRT FP16 su GPU T4.
| Modello | Dimensione dell'input | APval | FLOPs (G) | Latenza (ms) |
|---|---|---|---|---|
| [YOLOv10n][1] | 640 | 38.5 | 6.7 | 1.84 |
| [YOLOv10s][2] | 640 | 46.3 | 21.6 | 2.49 |
| [YOLOv10m][3] | 640 | 51.1 | 59.1 | 4.74 |
| [YOLOv10b][4] | 640 | 52.5 | 92.0 | 5.74 |
| [YOLOv10l][5] | 640 | 53.2 | 120.3 | 7.28 |
| [YOLOv10x][6] | 640 | 54.4 | 160.4 | 10.70 |
Metodologia#
Assegnazioni duali coerenti per l'addestramento senza NMS#
YOLOv10 utilizza assegnazioni duali delle etichette, combinando le strategie uno-a-molti e uno-a-uno durante l'addestramento per garantire una supervisione ricca e una distribuzione end-to-end efficiente. Le funzioni di previsione e convalida di Ultralytics usano per impostazione predefinita la testa uno-a-molti con NMS; imposta nms=False per selezionare la testa senza NMS. La metrica di corrispondenza coerente allinea la supervisione tra le due strategie, migliorando la qualità delle previsioni durante l'inferenza.
Progettazione del modello guidata da efficienza e accuratezza#
Miglioramenti dell'efficienza#
- Testa di classificazione leggera: riduce il sovraccarico computazionale della testa di classificazione utilizzando convoluzioni separabili depth-wise.
- Downsampling con separazione spaziale e dei canali: separa la riduzione spaziale dalla modulazione dei canali per ridurre al minimo la perdita di informazioni e i costi computazionali.
- Progettazione dei blocchi guidata dal rango: adatta la progettazione dei blocchi in base alla ridondanza intrinseca degli stadi, garantendo un utilizzo ottimale dei parametri.
Miglioramenti dell'accuratezza#
- Convoluzione con kernel di grandi dimensioni: amplia il campo ricettivo per migliorare la capacità di estrazione delle caratteristiche.
- Self-attention parziale (PSA): integra moduli di self-attention per migliorare l'apprendimento di rappresentazioni globali con un sovraccarico minimo.
Esperimenti e risultati#
YOLOv10 è stato testato ampiamente su benchmark standard come COCO, dimostrando prestazioni ed efficienza superiori. Il modello raggiunge risultati all'avanguardia nelle diverse varianti, mostrando miglioramenti significativi in termini di latenza e accuratezza rispetto alle versioni precedenti e ad altri rilevatori contemporanei.
Confronti#

Rispetto ad altri rilevatori all'avanguardia:
- YOLOv10s / x sono 1,8× / 1,3× più veloci di RT-DETR-R18 / R101 con accuratezza simile
- YOLOv10b ha il 25% di parametri in meno e una latenza inferiore del 46% rispetto a YOLOv9-C, a parità di accuratezza
- YOLOv10l / x superano YOLOv8l / x di 0,3 AP / 0,5 AP con 1,8× / 2,3× parametri in meno
Le figure seguenti sono riportate nell'articolo di YOLOv10 e sono state misurate secondo il relativo protocollo; pertanto, non sono direttamente confrontabili con i valori riportati nelle pagine dei modelli Ultralytics:
| Modello | Parametri (M) | FLOPs (G) | mAPval 50-95 | Latenza (ms) | Latenza-inferenza (ms) |
|---|---|---|---|---|---|
| YOLOv6-3.0-N | 4.7 | 11.4 | 37.0 | 2.69 | 1.76 |
| Gold-YOLO-N | 5.6 | 12.1 | 39.6 | 2.92 | 1.82 |
| YOLOv8n | 3.2 | 8.7 | 37.3 | 6.16 | 1.77 |
| YOLOv10n | 2.3 | 6.7 | 38.5 | 1.84 | 1.79 |
| YOLOv6-3.0-S | 18.5 | 45.3 | 44.3 | 3.42 | 2.35 |
| Gold-YOLO-S | 21.5 | 46.0 | 45.4 | 3.82 | 2.73 |
| YOLOv8s | 11.2 | 28.6 | 44.9 | 7.07 | 2.33 |
| YOLOv10s | 7.2 | 21.6 | 46.3 | 2.49 | 2.39 |
| RT-DETR-R18 | 20.0 | 60.0 | 46.5 | 4.58 | 4.49 |
| YOLOv6-3.0-M | 34.9 | 85.8 | 49.1 | 5.63 | 4.56 |
| Gold-YOLO-M | 41.3 | 87.5 | 49.8 | 6.38 | 5.45 |
| YOLOv8m | 25.9 | 78.9 | 50.6 | 9.50 | 5.09 |
| YOLOv10m | 15.4 | 59.1 | 51.1 | 4.74 | 4.63 |
| YOLOv6-3.0-L | 59.6 | 150.7 | 51.8 | 9.02 | 7.90 |
| Gold-YOLO-L | 75.1 | 151.7 | 51.8 | 10.65 | 9.78 |
| YOLOv8l | 43.7 | 165.2 | 52.9 | 12.39 | 8.06 |
| RT-DETR-R50 | 42.0 | 136.0 | 53.1 | 9.20 | 9.07 |
| YOLOv10l | 24.4 | 120.3 | 53.2 | 7.28 | 7.21 |
| YOLOv8x | 68.2 | 257.8 | 53.9 | 16.86 | 12.83 |
| RT-DETR-R101 | 76.0 | 259.0 | 54.3 | 13.71 | 13.58 |
| YOLOv10x | 29.5 | 160.4 | 54.4 | 10.70 | 10.60 |
I valori di parametri e FLOPs si riferiscono al modello fuso dopo model.fuse(), che unisce i livelli Conv e BatchNorm e rimuove la testa ausiliaria di rilevamento uno-a-molti. I checkpoint preaddestrati mantengono l'architettura di addestramento completa e possono mostrare valori più elevati.
Esempi d'uso#
Puoi anche addestrare i modelli su GPU cloud tramite Ultralytics Platform. Per eseguire previsioni su nuove immagini con YOLOv10:
from ultralytics import YOLO
# Carica un modello YOLOv10n preaddestrato
model = YOLO("yolov10n.pt")
# Esegui il rilevamento degli oggetti su un'immagine
results = model("image.jpg")
# Visualizza i risultati
results[0].show()Per addestrare YOLOv10 su un dataset personalizzato:
from ultralytics import YOLO
# Carica il modello YOLOv10n da zero
model = YOLO("yolov10n.yaml")
# Addestra il modello
model.train(data="coco8.yaml", epochs=100, imgsz=640)Attività e modalità supportate#
La serie di modelli YOLOv10 offre una gamma di modelli, ciascuno ottimizzato per il rilevamento di oggetti ad alte prestazioni Object Detection. Questi modelli rispondono a esigenze computazionali e requisiti di accuratezza diversi, risultando versatili per un'ampia varietà di applicazioni.
| Modello | Nomi dei file | Attività | Addestramento | Validazione | Inferenza | Esporta |
|---|---|---|---|---|---|---|
| YOLOv10 | yolov10n.pt yolov10s.pt yolov10m.pt yolov10b.pt yolov10l.pt yolov10x.pt | Rilevamento di oggetti | ✅ | ✅ | ✅ | ✅ |
Esportazione di YOLOv10#
A causa delle nuove operazioni introdotte con YOLOv10, al momento non sono supportati tutti i formati di esportazione forniti da Ultralytics. La tabella seguente indica i formati convertiti correttamente con Ultralytics per YOLOv10. Se vuoi, apri una pull request per contribuire con una modifica che aggiunga il supporto all'esportazione di altri formati per YOLOv10.
| Formato di esportazione | Supporto all'esportazione | Inferenza del modello esportato | Note |
|---|---|---|---|
| TorchScript | ✅ | ✅ | Formato standard per i modelli PyTorch. |
| ONNX | ✅ | ✅ | Ampio supporto per la distribuzione. |
| OpenVINO | ✅ | ✅ | Ottimizzato per l'hardware Intel. |
| TensorRT | ✅ | ✅ | Ottimizzato per le GPU NVIDIA. |
| CoreML | ✅ | ✅ | Limitato ai dispositivi Apple. |
| TF SavedModel | ✅ | ✅ | Formato standard per i modelli TensorFlow. |
| TF GraphDef | ✅ | ✅ | Formato TensorFlow legacy. |
| TF Edge TPU | ✅ | ✅ | Specifico per i dispositivi Edge TPU di Google. |
| LiteRT | ✅ | ✅ | Ottimizzato per dispositivi mobili, sistemi embedded e browser (LiteRT.js). |
| PaddlePaddle | ❌ | ❌ | Diffuso in Cina; supporto globale più limitato. |
| NCNN | ✅ | ❌ | L'operatore torch.topk non è supportato dal runtime NCNN. |
Conclusione#
Al momento del rilascio, YOLOv10 ha stabilito un nuovo standard per il rilevamento di oggetti in tempo reale, affrontando i limiti delle versioni precedenti di YOLO e integrando strategie di progettazione innovative. Il suo approccio senza NMS ha introdotto il rilevamento di oggetti end-to-end nella famiglia YOLO. Per il modello Ultralytics più recente, con prestazioni migliorate e inferenza senza NMS, consulta YOLO26.
Citazioni e ringraziamenti#
Desideriamo ringraziare gli autori di YOLOv10 della Tsinghua University per la loro approfondita ricerca e il contributo significativo al framework Ultralytics:
@inproceedings{wang2024yolov10,
title={YOLOv10: Real-Time End-to-End Object Detection},
author={Wang, Ao and Chen, Hui and Liu, Lihao and Chen, Kai and Lin, Zijia and Han, Jungong and Ding, Guiguang},
booktitle={Advances in Neural Information Processing Systems},
doi = {10.52202/079017-3429},
url = {https://proceedings.neurips.cc/paper_files/paper/2024/file/c34ddd05eb089991f06f3c5dc36836e0-Paper-Conference.pdf},
volume={37},
pages={107984--108011},
year={2024}
}Per informazioni dettagliate sull'implementazione, le innovazioni architetturali e i risultati sperimentali, consulta l'articolo di ricerca su YOLOv10 e il repository GitHub del team della Tsinghua University.
Domande frequenti#
YOLOv10, sviluppato dai ricercatori della Tsinghua University, introduce diverse innovazioni chiave per il rilevamento di oggetti in tempo reale. Elimina la necessità della soppressione non massima (NMS) utilizzando assegnazioni duali coerenti durante l'addestramento e componenti del modello ottimizzati, per ottenere prestazioni superiori con un sovraccarico computazionale ridotto. Per maggiori dettagli sull'architettura e sulle funzionalità principali, consulta la sezione Panoramica di YOLOv10.
Per eseguire facilmente l'inferenza, puoi usare la libreria Python Ultralytics YOLO o l'interfaccia a riga di comando (CLI). Di seguito sono riportati alcuni esempi di previsione su nuove immagini con YOLOv10:
Esempiofrom ultralytics import YOLO # Carica il modello YOLOv10n preaddestrato model = YOLO("yolov10n.pt") results = model("image.jpg") results[0].show()Per altri esempi di utilizzo, visita la sezione Esempi di utilizzo.
YOLOv10 offre diverse varianti di modello per soddisfare differenti casi d'uso:
- YOLOv10n: adatto ad ambienti con risorse estremamente limitate
- YOLOv10s: bilancia velocità e precisione
- YOLOv10m: uso generico
- YOLOv10b: maggiore precisione con una larghezza aumentata
- YOLOv10l: elevata precisione a fronte di maggiori risorse di calcolo
- YOLOv10x: massima precisione e prestazioni
Ogni variante è progettata per esigenze di calcolo e requisiti di precisione diversi, risultando così versatile per numerose applicazioni. Consulta la sezione Varianti del modello per saperne di più.
YOLOv10 viene addestrato con assegnazioni duali coerenti, affinché la sua testa one-to-one produca una sola previsione ottimale per oggetto, eliminando così la necessità della soppressione dei massimi (NMS) durante l'inferenza. Per impostazione predefinita, la previsione e la convalida di Ultralytics usano la testa one-to-many con NMS; imposta
nms=Falseper selezionare la testa senza NMS e saltare il passaggio NMS. Per una spiegazione dettagliata, consulta la sezione Assegnazioni duali coerenti per l'addestramento senza NMS.YOLOv10 supporta diversi formati di esportazione, tra cui TorchScript, ONNX, OpenVINO e TensorRT. Tuttavia, a causa delle nuove operazioni del modello, al momento YOLOv10 non supporta tutti i formati di esportazione disponibili con Ultralytics. Per i dettagli sui formati supportati e le istruzioni per l'esportazione, visita la sezione Esportazione di YOLOv10.
YOLOv10 supera le versioni precedenti di YOLO e altri modelli all'avanguardia sia in termini di precisione che di efficienza. Ad esempio, YOLOv10s è 1,8 volte più veloce di RT-DETR-R18 con un AP simile sul dataset COCO. YOLOv10b presenta una latenza inferiore del 46% e il 25% di parametri in meno rispetto a YOLOv9-C, a parità di prestazioni. Puoi trovare benchmark dettagliati nella sezione Confronti.