YOLOv10: Rilevamento di oggetti end-to-end in tempo reale
YOLOv10, released in May 2024 and built on the Ultralytics Python package by researchers at Tsinghua University, introduces a new approach to real-time object detection, addressing both the post-processing and model architecture deficiencies found in previous YOLO versions. By eliminating non-maximum suppression (NMS) and optimizing various model components, YOLOv10 achieved excellent performance with significantly reduced computational overhead at its time of release. Its NMS-free end-to-end design pioneered an approach that has been further developed in YOLO26.

Watch: How to Train YOLOv10 on SKU-110k Dataset using Ultralytics | Retail Dataset
Panoramica
Il rilevamento di oggetti in tempo reale mira a prevedere accuratamente le categorie e le posizioni degli oggetti nelle immagini con bassa latenza. La serie YOLO è stata all'avanguardia in questa ricerca grazie al suo 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 orientata all'efficienza e all'accuratezza olistica.
Architettura
L'architettura di YOLOv10 si basa sui punti di forza dei precedenti modelli YOLO introducendo diverse innovazioni chiave. L'architettura del modello è composta dai seguenti componenti:
- Backbone: Responsabile dell'estrazione delle caratteristiche, il backbone in YOLOv10 utilizza una versione migliorata di CSPNet (Cross Stage Partial Network) per migliorare il flusso del gradiente e ridurre la ridondanza computazionale.
- Neck: Il neck è progettato per aggregare le caratteristiche da diverse scale e passarle alla head. Include strati PAN (Path Aggregation Network) per un'efficace fusione delle caratteristiche multiscala.
- One-to-Many Head: Genera previsioni multiple per oggetto durante l'addestramento per fornire ricchi segnali di supervisione e migliorare l'accuratezza dell'apprendimento.
- One-to-One Head: Genera una singola migliore previsione per oggetto durante l'inferenza per eliminare la necessità di NMS, riducendo così la latenza e migliorando l'efficienza.
Caratteristiche 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 sia dal punto di vista dell'efficienza che dell'accuratezza, inclusi head di classificazione leggere, downsampling disaccoppiato spaziale-canale e progettazione a blocchi guidata dal rango.
- Funzionalità del modello migliorate: Incorpora convoluzioni a kernel ampio e moduli di auto-attenzione parziale per migliorare le prestazioni senza un significativo costo computazionale.
Varianti del modello
YOLOv10 è disponibile in diverse scale di modello per soddisfare le diverse esigenze applicative:
- 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 maggiori risorse computazionali.
- YOLOv10x: Versione Extra-large per la massima accuratezza e prestazioni.
Prestazioni
YOLOv10 supera le precedenti versioni 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 il 46% di latenza in meno 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 di input | APval | FLOP (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 impiega assegnazioni di etichette duali, combinando strategie uno-a-molti e uno-a-uno durante l'addestramento per garantire una ricca supervisione e un'efficiente implementazione end-to-end. La metrica di corrispondenza coerente allinea la supervisione tra entrambe le strategie, migliorando la qualità delle previsioni durante l'inferenza.
Progettazione del modello basata sull'efficienza olistica-accuratezza
Miglioramenti dell'efficienza
- Lightweight Classification Head: Riduce il sovraccarico computazionale dell'head di classificazione utilizzando convoluzioni separabili in profondità.
- Spatial-Channel Decoupled Down sampling: Disaccoppia la riduzione spaziale e la modulazione dei canali per minimizzare la perdita di informazioni e il costo computazionale.
- Rank-Guided Block Design: Adatta la progettazione del blocco in base alla ridondanza intrinseca dello stadio, garantendo un utilizzo ottimale dei parametri.
Miglioramenti dell'accuratezza
- Large-Kernel Convolution: Ingrandisce il campo ricettivo per migliorare la capacità di estrazione delle caratteristiche.
- Partial Self-Attention (PSA): Incorpora moduli di auto-attenzione per migliorare l'apprendimento della rappresentazione globale con un sovraccarico minimo.
Esperimenti e risultati
YOLOv10 è stato ampiamente testato su benchmark standard come COCO, dimostrando prestazioni ed efficienza superiori. Il modello ottiene risultati all'avanguardia su diverse varianti, mostrando miglioramenti significativi nella latenza e nell'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 il 46% di latenza in meno 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
Ecco un confronto dettagliato delle varianti di YOLOv10 con altri modelli all'avanguardia:
| Modello | Parametri (M) | FLOPs (G) | mAPval 50-95 | Latenza (ms) | Latenza-inoltro (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 | 39.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.8 | 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.3 | 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.4 | 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 Params e FLOPs si riferiscono al modello fuso dopo model.fuse(), che unisce i layer Conv e BatchNorm e rimuove l'head di rilevamento ausiliaria one-to-many. I checkpoint preaddestrati conservano l'intera architettura di addestramento e potrebbero mostrare conteggi più elevati.
Esempi di utilizzo
Per la predizione di nuove immagini con YOLOv10. I modelli possono anche essere addestrati su GPU cloud tramite Ultralytics Platform:
from ultralytics import YOLO
# Load a pretrained YOLOv10n model
model = YOLO("yolov10n.pt")
# Perform object detection on an image
results = model("image.jpg")
# Display the results
results[0].show()Per l'addestramento di YOLOv10 su un dataset personalizzato:
from ultralytics import YOLO
# Load YOLOv10n model from scratch
model = YOLO("yolov10n.yaml")
# Train the model
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 Object Detection ad alte prestazioni. Questi modelli soddisfano diverse esigenze computazionali e requisiti di accuratezza, rendendoli versatili per un'ampia gamma di applicazioni.
| Modello | Nomi file | Task | Inferenza (Inference) | Validazione | Addestramento | Export |
|---|---|---|---|---|---|---|
| YOLOv10 | yolov10n.pt yolov10s.pt yolov10m.pt yolov10l.pt yolov10x.pt | Rilevamento oggetti | ✅ | ✅ | ✅ | ✅ |
Esportazione di YOLOv10
A causa delle nuove operazioni introdotte con YOLOv10, non tutti i formati di esportazione forniti da Ultralytics sono attualmente supportati. La tabella seguente illustra quali formati sono stati convertiti con successo utilizzando Ultralytics per YOLOv10. Sentiti libero di aprire una pull request se sei in grado di fornire un contributo per aggiungere il supporto all'esportazione di ulteriori formati per YOLOv10.
| Formato di Esportazione | Supporto all'Esportazione | Inferenza del Modello Esportato | Note |
|---|---|---|---|
| TorchScript | ✅ | ✅ | Formato modello standard PyTorch. |
| ONNX | ✅ | ✅ | Ampiamente supportato per il deployment. |
| OpenVINO | ✅ | ✅ | Ottimizzato per hardware Intel. |
| TensorRT | ✅ | ✅ | Ottimizzato per GPU NVIDIA. |
| CoreML | ✅ | ✅ | Limitato ai dispositivi Apple. |
| TF SavedModel | ✅ | ✅ | Formato modello standard di TensorFlow. |
| TF GraphDef | ✅ | ✅ | Formato TensorFlow legacy. |
| TF Lite | ✅ | ✅ | Ottimizzato per mobile ed embedded. |
| TF Edge TPU | ✅ | ✅ | Specifico per dispositivi Google Edge TPU. |
| TF.js | ✅ | ✅ | Ambiente JavaScript per l'uso nel browser. |
| PaddlePaddle | ❌ | ❌ | Popolare in Cina; supporto globale limitato. |
| NCNN | ✅ | ❌ | Il layer torch.topk non esiste o non è registrato |
Conclusione
YOLOv10 ha stabilito un nuovo standard nell'object detection in tempo reale al momento del suo rilascio, risolvendo le lacune delle versioni precedenti di YOLO e incorporando strategie di progettazione innovative. Il suo approccio senza NMS ha aperto la strada all'object detection end-to-end nella famiglia YOLO. Per il modello Ultralytics più recente con prestazioni migliorate e inferenza senza NMS, vedi YOLO26.
Citazioni e ringraziamenti
Desideriamo ringraziare gli autori di YOLOv10 della Tsinghua University per la loro estesa ricerca e i significativi contributi al framework Ultralytics:
@article{THU-MIGyolov10,
title={YOLOv10: Real-Time End-to-End Object Detection},
author={Ao Wang, Hui Chen, Lihao Liu, et al.},
journal={arXiv preprint arXiv:2405.14458},
year={2024},
institution={Tsinghua University},
license = {AGPL-3.0}
}Per un'implementazione dettagliata, innovazioni architettoniche e risultati sperimentali, fai riferimento al paper di ricerca di YOLOv10 e al repository GitHub del team della Tsinghua University.
FAQ
Cos'è YOLOv10 e in che modo differisce dalle versioni precedenti di YOLO?
YOLOv10, sviluppato dai ricercatori della Tsinghua University, introduce diverse innovazioni chiave nell'object detection in tempo reale. Elimina la necessità della non-maximum suppression (NMS) impiegando assegnazioni duali coerenti durante l'addestramento e componenti del modello ottimizzati per prestazioni superiori con un ridotto overhead computazionale. Per maggiori dettagli sulla sua architettura e sulle funzionalità principali, consulta la sezione Panoramica di YOLOv10.
Come posso iniziare a eseguire l'inferenza utilizzando YOLOv10?
Per un'inferenza semplice, puoi utilizzare la libreria Python Ultralytics YOLO o l'interfaccia a riga di comando (CLI). Di seguito sono riportati esempi di predizione di nuove immagini utilizzando YOLOv10:
from ultralytics import YOLO
# Load the pretrained YOLOv10n model
model = YOLO("yolov10n.pt")
results = model("image.jpg")
results[0].show()Per ulteriori esempi di utilizzo, visita la nostra sezione Esempi di Utilizzo.
Quali varianti di modello offre YOLOv10 e quali sono i loro casi d'uso?
YOLOv10 offre diverse varianti di modello per soddisfare diversi casi d'uso:
- YOLOv10n: Adatto per ambienti con risorse estremamente limitate
- YOLOv10s: Bilancia velocità e precisione
- YOLOv10m: Uso generico
- YOLOv10b: Maggiore precisione con larghezza incrementata
- YOLOv10l: Alta precisione a scapito delle risorse computazionali
- YOLOv10x: Massima precisione e prestazioni
Ogni variante è progettata per diverse esigenze computazionali e requisiti di precisione, rendendole versatili per una varietà di applicazioni. Esplora la sezione Model Variants per ulteriori informazioni.
In che modo l'approccio senza NMS in YOLOv10 migliora le prestazioni?
YOLOv10 elimina la necessità della non-maximum suppression (NMS) durante l'inferenza impiegando assegnazioni duali coerenti per l'addestramento. Questo approccio riduce la latenza di inferenza e migliora l'efficienza della predizione. L'architettura include anche una head one-to-one per l'inferenza, garantendo che ogni oggetto ottenga una singola migliore predizione. Per una spiegazione dettagliata, consulta la sezione Consistent Dual Assignments for NMS-Free Training.
Dove posso trovare le opzioni di esportazione per i modelli YOLOv10?
YOLOv10 supporta diversi formati di esportazione, inclusi TorchScript, ONNX, OpenVINO e TensorRT. Tuttavia, non tutti i formati di esportazione forniti da Ultralytics sono attualmente supportati per YOLOv10 a causa delle sue nuove operazioni. Per dettagli sui formati supportati e istruzioni sull'esportazione, visita la sezione Exporting YOLOv10.
Quali sono i benchmark delle prestazioni per i modelli YOLOv10?
YOLOv10 supera le precedenti versioni di YOLO e altri modelli all'avanguardia sia in precisione che in efficienza. Ad esempio, YOLOv10s è 1,8 volte più veloce di RT-DETR-R18 con un AP simile sul dataset COCO. YOLOv10b mostra il 46% di latenza in meno e il 25% di parametri in meno rispetto a YOLOv9-C a parità di prestazioni. Benchmark dettagliati sono disponibili nella sezione Comparisons.