YOLOv10: rilevamento di oggetti end-to-end in tempo reale
YOLOv10, costruito sul pacchetto Ultralytics Python dai ricercatori della Tsinghua University, introduce un nuovo approccio al rilevamento degli oggetti in tempo reale, risolvendo le carenze di post-processing e di architettura del modello riscontrate nelle precedenti versioni di YOLO . Eliminando la soppressione non massima (NMS) e ottimizzando vari componenti del modello, YOLOv10 raggiunge prestazioni all'avanguardia con un overhead computazionale significativamente ridotto. Ampi esperimenti dimostrano il superiore compromesso accuratezza-latenza su più scale di modelli.
Guarda: Come addestrare YOLOv10 sul dataset SKU-110k utilizzando Ultralytics | Dataset Retail
Panoramica
Il rilevamento degli oggetti in tempo reale mira a prevedere con precisione le categorie e le posizioni degli oggetti nelle immagini con una bassa latenza. La serie YOLO è stata all'avanguardia in questa ricerca grazie al suo equilibrio tra prestazioni ed efficienza. Tuttavia, la dipendenza da NMS e le inefficienze architettoniche hanno ostacolato le prestazioni ottimali. YOLOv10 affronta questi problemi introducendo assegnazioni doppie coerenti per l'addestramento senza NMS e una strategia olistica di progettazione del modello orientata all'efficienza e alla precisione.
Architettura
L'architettura di YOLOv10 si basa sui punti di forza dei precedenti modelli YOLO , introducendo al contempo diverse innovazioni chiave. L'architettura del modello è costituita dai seguenti componenti:
- Backbone: Responsabile dell'estrazione delle caratteristiche, il backbone di YOLOv10 utilizza una versione migliorata di CSPNet (Cross Stage Partial Network) per migliorare il flusso di gradienti e ridurre la ridondanza computazionale.
- Collo: Il collo è progettato per aggregare le caratteristiche da diverse scale e passarle alla testa. Include strati PAN (Path Aggregation Network) per un'efficace fusione di 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 previsione migliore per ogni oggetto durante l'inferenza per eliminare la necessità di NMS, riducendo così la latenza e migliorando l'efficienza.
Caratteristiche principali
- Formazione 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, comprese le teste di classificazione leggere, il campionamento disaccoppiato dei canali spaziali e la progettazione di blocchi guidati da ranghi.
- Capacità di modello migliorate: Incorpora convoluzioni di grandi kernel e moduli di autoattenzione parziale per migliorare le prestazioni senza costi computazionali significativi.
Varianti di modello
YOLOv10 è disponibile in varie scale di modelli per soddisfare le diverse esigenze applicative:
- YOLOv10-N: versione nano per ambienti con risorse estremamente limitate.
- YOLOv10-S: versione piccola che bilancia velocità e precisione.
- YOLOv10-M: versione media per uso generale.
- YOLOv10-B: versione bilanciata con larghezza maggiore per una maggiore precisione.
- YOLOv10-L: Versione grande per una maggiore precisione al costo di maggiori risorse computazionali.
- YOLOv10-X: Versione extra-large per la massima precisione e prestazioni.
Prestazioni
YOLOv10 supera le precedenti versioni di YOLO e altri modelli all'avanguardia in termini di accuratezza ed efficienza. Ad esempio, YOLOv10-S è 1,8 volte più veloce di RT-DETR-R18 con un AP simile sul dataset COCO, e YOLOv10-B ha il 46% di latenza in meno e il 25% di parametri in meno rispetto a YOLOv9-C a parità di prestazioni.
Modello | Dimensione di ingresso | APval | FLOP (G) | Latenza (ms) |
---|---|---|---|---|
YOLOv10-N | 640 | 38.5 | 6.7 | 1.84 |
YOLOv10-S | 640 | 46.3 | 21.6 | 2.49 |
YOLOv10-M | 640 | 51.1 | 59.1 | 4.74 |
YOLOv10-B | 640 | 52.5 | 92.0 | 5.74 |
YOLOv10-L | 640 | 53.2 | 120.3 | 7.28 |
YOLOv10-X | 640 | 54.4 | 160.4 | 10.70 |
Latenza misurata con TensorRT FP16 su T4 GPU.
Metodologia
Assegnazioni doppie coerenti per una formazione senza NMS
YOLOv10 impiega una doppia assegnazione di etichette, combinando strategie uno-a-molti e uno-a-uno durante l'addestramento per garantire una supervisione ricca e un'efficiente distribuzione end-to-end. La metrica di corrispondenza coerente allinea la supervisione tra le due strategie, migliorando la qualità delle previsioni durante l'inferenza.
Progettazione olistica del modello orientata all'efficienza e all'accuratezza
Miglioramenti dell'efficienza
- Testa di classificazione leggera: Riduce l'overhead computazionale della testa di classificazione utilizzando convoluzioni separabili in profondità.
- Down sampling disaccoppiato spazio-canale: Disaccoppia la riduzione spaziale e la modulazione del canale per minimizzare la perdita di informazioni e il costo computazionale.
- Progettazione dei blocchi guidata dalle classifiche: Adatta la progettazione dei blocchi in base alla ridondanza intrinseca degli stadi, garantendo un utilizzo ottimale dei parametri.
Miglioramenti della precisione
- Convoluzione a kernel largo: Allarga il campo recettivo per migliorare la capacità di estrazione delle caratteristiche.
- Partial Self-Attention (PSA): incorpora moduli di autoattenzione per migliorare l'apprendimento della rappresentazione globale con un overhead minimo.
Esperimenti e risultati
YOLOv10 è stato ampiamente testato su benchmark standard come COCO, dimostrando prestazioni ed efficienza superiori. Il modello raggiunge risultati all'avanguardia in diverse varianti, mostrando miglioramenti significativi in termini di latenza e precisione rispetto alle versioni precedenti e ad altri rilevatori contemporanei.
Confronti
Rispetto ad altri rivelatori all'avanguardia:
- YOLOv10-S / X sono 1,8× / 1,3× più veloci di RT-DETR-R18 / R101 con una precisione simile.
- YOLOv10-B ha il 25% di parametri in meno e una latenza inferiore del 46% rispetto a YOLOv9-C a parità di accuratezza
- YOLOv10-L / X supera YOLOv8-L / X di 0,3 AP / 0,5 AP con un numero di parametri inferiore di 1,8× / 2,3×.
Ecco un confronto dettagliato delle varianti di YOLOv10 con altri modelli all'avanguardia:
Modello | Params (M) |
FLOP (G) |
mAPval 50-95 |
Latenza (ms) |
Latenza in avanti (ms) |
---|---|---|---|---|---|
YOLOv6-3.0-N | 4.7 | 11.4 | 37.0 | 2.69 | 1.76 |
Oro -YOLO-N | 5.6 | 12.1 | 39.6 | 2.92 | 1.82 |
YOLOv8-N | 3.2 | 8.7 | 37.3 | 6.16 | 1.77 |
YOLOv10-N | 2.3 | 6.7 | 39.5 | 1.84 | 1.79 |
YOLOv6-3.0-S | 18.5 | 45.3 | 44.3 | 3.42 | 2.35 |
Oro -YOLO-S | 21.5 | 46.0 | 45.4 | 3.82 | 2.73 |
YOLOv8-S | 11.2 | 28.6 | 44.9 | 7.07 | 2.33 |
YOLOv10-S | 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 |
Oro -YOLO-M | 41.3 | 87.5 | 49.8 | 6.38 | 5.45 |
YOLOv8-M | 25.9 | 78.9 | 50.6 | 9.50 | 5.09 |
YOLOv10-M | 15.4 | 59.1 | 51.3 | 4.74 | 4.63 |
YOLOv6-3.0-L | 59.6 | 150.7 | 51.8 | 9.02 | 7.90 |
Oro -YOLO-L | 75.1 | 151.7 | 51.8 | 10.65 | 9.78 |
YOLOv8-L | 43.7 | 165.2 | 52.9 | 12.39 | 8.06 |
RT-DETR-R50 | 42.0 | 136.0 | 53.1 | 9.20 | 9.07 |
YOLOv10-L | 24.4 | 120.3 | 53.4 | 7.28 | 7.21 |
YOLOv8-X | 68.2 | 257.8 | 53.9 | 16.86 | 12.83 |
RT-DETR-R101 | 76.0 | 259.0 | 54.3 | 13.71 | 13.58 |
YOLOv10-X | 29.5 | 160.4 | 54.4 | 10.70 | 10.60 |
Esempi di utilizzo
Per prevedere nuove immagini con YOLOv10:
Esempio
Per l'addestramento di YOLOv10 su un set di dati personalizzato:
Esempio
Attività e modalità supportate
La serie di modelli YOLOv10 offre una gamma di modelli, ciascuno ottimizzato per il rilevamento di oggetti ad alte prestazioni. Questi modelli soddisfano le diverse esigenze di calcolo e i requisiti di precisione, rendendoli versatili per un'ampia gamma di applicazioni.
Modello | Nomi di file | Compiti | Inferenza | Convalida | Formazione | Esportazione |
---|---|---|---|---|---|---|
YOLOv10 | yolov10n.pt yolov10s.pt yolov10m.pt yolov10l.pt yolov10x.pt |
Rilevamento degli 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 indica i formati che sono stati convertiti con successo utilizzando Ultralytics per YOLOv10. Se siete in grado di fornire un contributo di modifica per aggiungere il supporto all'esportazione di altri formati per YOLOv10, aprite pure una richiesta di pull.
Formato di esportazione | Supporto all'esportazione | Inferenza del modello esportato | Note |
---|---|---|---|
TorchScript | ✅ | ✅ | Standard PyTorch formato del modello. |
ONNX | ✅ | ✅ | Ampiamente supportato per la distribuzione. |
OpenVINO | ✅ | ✅ | Ottimizzato per l'hardware di Intel . |
TensorRT | ✅ | ✅ | Ottimizzato per le GPU NVIDIA . |
CoreML | ✅ | ✅ | Limitato ai dispositivi Apple. |
TF SavedModel | ✅ | ✅ | TensorFlowformato standard del modello. |
TF GraphDef | ✅ | ✅ | Formato Legacy TensorFlow . |
TF Lite | ✅ | ✅ | Ottimizzato per i dispositivi mobili e incorporati. |
TF Bordo TPU | ✅ | ✅ | Specifico per i dispositivi Google's Edge TPU . |
TF.js | ✅ | ✅ | Ambiente JavaScript per l'uso del browser. |
PaddlePaddle | ❌ | ❌ | Popolare in Cina; meno supporto a livello globale. |
NCNN | ✅ | ❌ | Strato torch.topk non esiste o non è registrato |
Conclusione
YOLOv10 stabilisce un nuovo standard nel rilevamento degli oggetti in tempo reale, risolvendo le carenze delle precedenti versioni di YOLO e incorporando strategie di progettazione innovative. La sua capacità di fornire un'elevata accuratezza con un basso costo computazionale lo rende una scelta ideale per un'ampia gamma di applicazioni reali.
Citazioni e ringraziamenti
Desideriamo ringraziare gli autori di YOLOv10 dell'Università Tsinghua per le loro ricerche approfondite e i loro contributi significativi al framework. Ultralytics struttura:
Per l'implementazione dettagliata, le innovazioni architettoniche e i risultati sperimentali, si rimanda al documento di ricerca YOLOv10 e al repository GitHub del team della Tsinghua University.
FAQ
Cos'è YOLOv10 e come si differenzia dalle precedenti versioni di YOLO ?
YOLOv10, sviluppato dai ricercatori della Tsinghua University, introduce diverse innovazioni chiave per il rilevamento degli oggetti in tempo reale. Elimina la necessità di soppressione non massimale (NMS) utilizzando assegnazioni duali coerenti durante l'addestramento e componenti del modello ottimizzati per ottenere prestazioni superiori con un ridotto overhead computazionale. Per maggiori dettagli sull'architettura e sulle caratteristiche principali, consultare la sezione panoramica di YOLOv10.
Come posso iniziare a eseguire l'inferenza con YOLOv10?
Per facilitare l'inferenza, è possibile utilizzare la libreria Ultralytics YOLO Python o l'interfaccia a riga di comando (CLI). Di seguito sono riportati alcuni esempi di previsione di nuove immagini utilizzando YOLOv10:
Esempio
Per ulteriori esempi d'uso, visitate la nostra sezione Esempi d'uso.
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:
- YOLOv10-N: adatto ad ambienti con risorse estremamente limitate
- YOLOv10-S: equilibrio tra velocità e precisione
- YOLOv10-M: Uso generale
- YOLOv10-B: maggiore precisione con un'ampiezza maggiore
- YOLOv10-L: elevata precisione al costo delle risorse computazionali
- YOLOv10-X: Massima precisione e prestazioni
Ogni variante è progettata per esigenze di calcolo e requisiti di precisione diversi, rendendole versatili per una varietà di applicazioni. Per ulteriori informazioni, consultate la sezione Varianti del modello.
In che modo l'approccio senza NMS di YOLOv10 migliora le prestazioni?
YOLOv10 elimina la necessità di soppressione non massimale (NMS) durante l'inferenza, impiegando assegnazioni duali coerenti per l'addestramento. Questo approccio riduce la latenza dell'inferenza e migliora l'efficienza della predizione. L'architettura include anche una testa uno-a-uno per l'inferenza, assicurando che ogni oggetto riceva una singola previsione migliore. Per una spiegazione dettagliata, si veda la sezione Assegnazioni duali coerenti per l'addestramento senza NMS.
Dove posso trovare le opzioni di esportazione per i modelli YOLOv10?
YOLOv10 supporta diversi formati di esportazione, tra cui TorchScript, ONNX, OpenVINO e TensorRT. Tuttavia, non tutti i formati di esportazione forniti da Ultralytics sono attualmente supportati da YOLOv10 a causa delle sue nuove operazioni. Per i dettagli sui formati supportati e le istruzioni per l'esportazione, visitare la sezione Esportazione di YOLOv10.
Quali sono le prestazioni di riferimento dei modelli YOLOv10?
YOLOv10 supera le precedenti versioni di YOLO e altri modelli all'avanguardia sia in termini di accuratezza che di efficienza. Ad esempio, YOLOv10-S è 1,8 volte più veloce di RT-DETR-R18 con un AP simile sul dataset COCO. YOLOv10-B mostra il 46% di latenza in meno e il 25% di parametri in meno rispetto a YOLOv9-C a parità di prestazioni. I benchmark dettagliati sono disponibili nella sezione Confronti.