Vai al contenuto

YOLOv10: Rilevamento di oggetti end-to-end in tempo reale

YOLOv10, costruito sul pacchetto Python Ultralytics dai ricercatori della Tsinghua University, introduce un nuovo approccio al rilevamento di oggetti in tempo reale, affrontando sia le carenze di post-elaborazione sia quelle dell'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. Esperimenti approfonditi dimostrano i suoi superiori compromessi tra accuratezza e latenza su più scale di modello.

Assegnazione duale coerente di YOLOv10 per l'addestramento senza NMS



Guarda: Come addestrare YOLOv10 sul dataset SKU-110k utilizzando Ultralytics | Dataset al dettaglio

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 in prima linea in questa ricerca grazie al suo equilibrio tra prestazioni ed efficienza. Tuttavia, l'affidamento su NMS e le inefficienze architetturali hanno ostacolato le prestazioni ottimali. YOLOv10 affronta questi problemi introducendo assegnazioni duali coerenti per il training senza NMS e una strategia di progettazione del modello olistica guidata dall'efficienza-accuratezza.

Architettura

L'architettura di YOLOv10 si basa sui punti di forza dei precedenti modelli YOLO introducendo diverse innovazioni chiave. L'architettura del modello è costituita dai seguenti componenti:

  1. Backbone: Responsabile dell'estrazione delle feature, la backbone in YOLOv10 utilizza una versione migliorata di CSPNet (Cross Stage Partial Network) per migliorare il flusso del gradiente e ridurre la ridondanza computazionale.
  2. Neck: Il neck è progettato per aggregare le caratteristiche da diverse scale e passarle all'head. Include livelli PAN (Path Aggregation Network) per un'efficace fusione di caratteristiche multiscala.
  3. Head One-to-Many: Genera previsioni multiple per oggetto durante l'addestramento per fornire segnali di supervisione ricchi e migliorare l'accuratezza dell'apprendimento.
  4. Head One-to-One: Genera una singola previsione migliore per oggetto durante l'inferenza per eliminare la necessità di NMS, riducendo così la latenza e migliorando l'efficienza.

Caratteristiche principali

  1. Training senza NMS: Utilizza assegnazioni duali coerenti per eliminare la necessità di NMS, riducendo la latenza di inferenza.
  2. Progettazione Olistica del Modello: Ottimizzazione completa di vari componenti sia dal punto di vista dell'efficienza che dell'accuratezza, tra cui head di classificazione leggeri, down sampling spaziale-canale disaccoppiato e progettazione di blocchi guidata dal rango.
  3. Funzionalità del modello migliorate: Incorpora convoluzioni a kernel esteso e moduli di auto-attenzione parziale per migliorare le prestazioni senza costi computazionali significativi.

Varianti del modello

YOLOv10 è disponibile in varie scale di modello per soddisfare diverse esigenze applicative:

  • YOLOv10n: Versione Nano per ambienti estremamente vincolati in termini di risorse.
  • YOLOv10s: Versione piccola che bilancia velocità e precisione.
  • YOLOv10m: Versione media per uso generico.
  • YOLOv10b: Versione bilanciata con larghezza maggiore per una maggiore accuratezza.
  • YOLOv10l: Versione grande per una maggiore accuratezza a costo di maggiori risorse computazionali.
  • YOLOv10x: 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, YOLOv10s è 1,8 volte più veloce di RT-DETR-R18 con un AP simile sul dataset COCO e YOLOv10b ha il 46% in meno di latenza e il 25% in meno di parametri rispetto a YOLOv9-C con le stesse prestazioni.

Prestazioni

Latenza misurata con TensorRT FP16 su GPU T4.

Modello Dimensione Input APval FLOPs (G) Latenza (ms)
YOLOv10n 640 38.5 6.7 1.84
YOLOv10s 640 46.3 21.6 2.49
YOLOv10m 640 51.1 59.1 4.74
YOLOv10b 640 52.5 92.0 5.74
YOLOv10l 640 53.2 120.3 7.28
YOLOv10x 640 54.4 160.4 10.70

Metodologia

Assegnazioni Duali Coerenti per l'addestramento senza NMS

YOLOv10 impiega assegnazioni di etichette duali, combinando strategie one-to-many e one-to-one durante l'addestramento per garantire una supervisione ricca e un'implementazione end-to-end efficiente. La metrica di corrispondenza coerente allinea la supervisione tra entrambe le strategie, migliorando la qualità delle previsioni durante l'inferenza.

Efficienza olistica - Progettazione del modello guidata dall'accuratezza

Miglioramenti dell'Efficienza

  1. Head di classificazione leggera: Riduce il sovraccarico computazionale dell'head di classificazione utilizzando convoluzioni separabili in profondità.
  2. Sottocampionamento disaccoppiato spaziale-canale: Disaccoppia la riduzione spaziale e la modulazione del canale per ridurre al minimo la perdita di informazioni e il costo computazionale.
  3. Progettazione a blocchi guidata dal rango: Adatta la progettazione a blocchi in base alla ridondanza intrinseca dello stadio, garantendo un utilizzo ottimale dei parametri.

Miglioramenti della Precisione

  1. Convoluzione a kernel esteso: Allarga il campo recettivo per migliorare la capacità di estrazione delle caratteristiche.
  2. Auto-attenzione parziale (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 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

Confronto tra YOLOv10 e i rilevatori di oggetti SOTA

Rispetto ad altri rivelatori all'avanguardia:

  • YOLOv10s / x sono 1.8× / 1.3× più veloci di RT-DETR-R18 / R101 con una precisione simile
  • YOLOv10b ha il 25% in meno di parametri e il 46% in meno di latenza rispetto a YOLOv9-C con la stessa precisione
  • YOLOv10l / x superano YOLOv8l / x di 0.3 AP / 0.5 AP con 1.8× / 2.3× parametri in meno

Prestazioni

Ecco un confronto dettagliato delle varianti di YOLOv10 con altri modelli all'avanguardia:

Modello Parametri
(M)
FLOPs
(G)
mAPval
50-95
Latenza
(ms)
Latenza-forward
(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

Esempi di utilizzo

Per prevedere nuove immagini con YOLOv10:

Esempio

from ultralytics import YOLO

# Load a pre-trained YOLOv10n model
model = YOLO("yolov10n.pt")

# Perform object detection on an image
results = model("image.jpg")

# Display the results
results[0].show()
# Load a COCO-pretrained YOLOv10n model and run inference on the 'bus.jpg' image
yolo detect predict model=yolov10n.pt source=path/to/bus.jpg

Per addestrare YOLOv10 su un dataset personalizzato:

Esempio

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)
# Build a YOLOv10n model from scratch and train it on the COCO8 example dataset for 100 epochs
yolo train model=yolov10n.yaml data=coco8.yaml epochs=100 imgsz=640

# Build a YOLOv10n model from scratch and run inference on the 'bus.jpg' image
yolo predict model=yolov10n.yaml source=path/to/bus.jpg

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 diverse esigenze computazionali e requisiti di precisione, rendendoli versatili per una vasta gamma di applicazioni.

Modello Nomi dei file Attività Inferenza Validazione Training Esportazione
YOLOv10 yolov10n.pt yolov10s.pt yolov10m.pt yolov10l.pt yolov10x.pt Rilevamento di 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 delinea quali formati sono stati convertiti con successo utilizzando Ultralytics per YOLOv10. Sentiti libero di aprire una pull request se sei in grado di fornire una modifica di contributo per aggiungere il supporto all'esportazione di formati aggiuntivi per YOLOv10.

Formato di esportazione Supporto all'esportazione Inferenza del modello esportato Note
TorchScript Formato modello PyTorch standard.
ONNX Ampiamente supportato per la distribuzione.
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 dispositivi mobili e embedded.
TF Edge TPU Specifico per i dispositivi Edge TPU di Google.
TF.js Ambiente JavaScript per l'uso nel browser.
PaddlePaddle Popolare in Cina; meno supporto globale.
NCNN Livello torch.topk non esiste o non è registrato

Conclusione

YOLOv10 stabilisce un nuovo standard nel rilevamento di oggetti in tempo reale affrontando le carenze delle precedenti versioni di YOLO e incorporando strategie di progettazione innovative. La sua capacità di fornire un'elevata accuratezza con bassi costi computazionali lo rende una scelta ideale per una vasta gamma di applicazioni reali tra cui produzione, vendita al dettaglio e veicoli autonomi.

Citazioni e riconoscimenti

Vorremmo ringraziare gli autori di YOLOv10 della Tsinghua University per la loro vasta 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 l'implementazione dettagliata, le innovazioni architettoniche e i risultati sperimentali, fare riferimento all'articolo di ricerca YOLOv10 e al repository GitHub del team della Tsinghua University.

FAQ

Cos'è YOLOv10 e come si differenzia dalle versioni precedenti di YOLO?

YOLOv10, sviluppato dai ricercatori della Tsinghua University, introduce diverse innovazioni chiave nel rilevamento di oggetti in tempo reale. Elimina la necessità della soppressione non massima (NMS) impiegando assegnazioni duali coerenti durante l'addestramento e componenti del modello ottimizzati per prestazioni superiori con un sovraccarico computazionale ridotto. Per maggiori dettagli sulla sua architettura e sulle caratteristiche principali, consulta la sezione Panoramica di YOLOv10.

Come posso iniziare a eseguire l'inferenza usando YOLOv10?

Per una facile inferenza, puoi utilizzare la libreria Python Ultralytics YOLO o l'interfaccia a riga di comando (CLI). Di seguito sono riportati esempi di previsione di nuove immagini utilizzando YOLOv10:

Esempio

from ultralytics import YOLO

# Load the pre-trained YOLOv10n model
model = YOLO("yolov10n.pt")
results = model("image.jpg")
results[0].show()
yolo detect predict model=yolov10n.pt source=path/to/image.jpg

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 estremamente vincolati in termini di risorse
  • YOLOv10s: Bilancia velocità e precisione
  • YOLOv10m: Uso generico
  • YOLOv10b: Maggiore accuratezza con larghezza aumentata
  • YOLOv10l: Elevata accuratezza a costo di risorse computazionali
  • YOLOv10x: Massima precisione e prestazioni

Ogni variante è progettata per diverse esigenze computazionali e requisiti di accuratezza, rendendole versatili per una varietà di applicazioni. Esplora la sezione Varianti del modello per maggiori informazioni.

In che modo l'approccio senza NMS in YOLOv10 migliora le prestazioni?

YOLOv10 elimina la necessità della soppressione non massima (NMS) durante l'inferenza impiegando assegnazioni duali coerenti per l'addestramento. Questo approccio riduce la latenza dell'inferenza e migliora l'efficienza della previsione. L'architettura include anche un head one-to-one per l'inferenza, garantendo che ogni oggetto ottenga una singola previsione migliore. Per una spiegazione dettagliata, consulta 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 per YOLOv10 a causa delle sue nuove operazioni. Per i dettagli sui formati supportati e le istruzioni sull'esportazione, visita la sezione Esportazione di YOLOv10.

Quali sono i benchmark di performance per i modelli YOLOv10?

YOLOv10 supera le precedenti versioni di YOLO e altri modelli all'avanguardia sia in termini di accuratezza che di efficienza. Ad esempio, YOLOv10s è 1,8 volte più veloce di RT-DETR-R18 con un AP simile sul dataset COCO. YOLOv10b mostra il 46% in meno di latenza e il 25% in meno di parametri rispetto a YOLOv9-C con le stesse prestazioni. Benchmark dettagliati sono disponibili nella sezione Confronti.



📅 Creato 1 anno fa ✏️ Aggiornato 5 mesi fa

Commenti