Vai al contenuto

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-elaborazione 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 la superiorità del compromesso accuratezza-latenza su diverse scale di modelli.

YOLOv10 ha una doppia assegnazione coerente per una formazione senza NMS

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 duali coerenti per un 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 è composta dai seguenti componenti:

  1. 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.
  2. Neck: The neck is designed to aggregate features from different scales and passes them to the head. It includes PAN (Path Aggregation Network) layers for effective multi-scale feature fusion.
  3. One-to-Many Head: genera previsioni multiple per oggetto durante l'addestramento per fornire ricchi segnali di supervisione e migliorare l'accuratezza dell'apprendimento.
  4. 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

  1. Formazione senza NMS: Utilizza assegnazioni duali coerenti per eliminare la necessità di NMS, riducendo la latenza dell'inferenza.
  2. 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.
  3. Capacità di modello migliorate: Incorpora convoluzioni a kernel ampio e moduli di autoattenzione parziale per migliorare le prestazioni senza costi computazionali significativi.

Varianti del modello

YOLOv10 è disponibile in varie scale di modelli per soddisfare le diverse esigenze di applicazione:

  • 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 di calcolo.
  • YOLOv10-X: Versione extra-large per la massima precisione e performance.

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 una latenza inferiore del 46% e il 25% di parametri in meno rispetto a YOLOv9-C con le stesse prestazioni.

Modello Dimensione dell'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 GPU T4.

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 alla precisione

Miglioramenti dell'efficienza

  1. Testata di classificazione leggera: Riduce l'overhead computazionale della testa di classificazione utilizzando convoluzioni separabili in profondità.
  2. Down sampling disaccoppiato spazio-canale: Disaccoppia la riduzione spaziale e la modulazione del canale per minimizzare la perdita di informazioni e il costo computazionale.
  3. Progettazione a blocchi guidata dal ranking: Adatta la progettazione dei blocchi in base alla ridondanza intrinseca degli stadi, garantendo un utilizzo ottimale dei parametri.

Miglioramenti della precisione

  1. Convoluzione a kernel largo: Allarga il campo recettivo per migliorare la capacità di estrazione delle caratteristiche.
  2. Partial Self-Attention (PSA): incorpora moduli di auto-attenzione 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 nella latenza e nell'accuratezza rispetto alle versioni precedenti e ad altri rilevatori contemporanei.

Confronti

Confronto tra YOLOv10 e i rilevatori di oggetti SOTA

Rispetto ad altri rilevatori 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) APval (%) 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

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 set di dati 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

The YOLOv10 models series offers a range of models, each optimized for high-performance Object Detection. These models cater to varying computational needs and accuracy requirements, making them versatile for a wide array of applications.

Modello Nomi dei file Compiti Inferenza Convalida Formazione Esportazione
YOLOv10 yolov10n.pt yolov10s.pt yolov10m.pt yolov10l.pt yolov10x.pt Rilevamento degli oggetti

Exporting YOLOv10

Due to the new operations introduced with YOLOv10, not all export formats provided by Ultralytics are currently supported. The following table outlines which formats have been successfully converted using Ultralytics for YOLOv10. Feel free to open a pull request if you're able to provide a contribution change for adding export support of additional formats for YOLOv10.

Export Format Supported
TorchScript
ONNX
OpenVINO
TensorRT
CoreML
TF SavedModel
TF GraphDef
TF Lite
TF Bordo TPU
TF.js
PaddlePaddle
NCNN

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 offrire un'elevata precisione con un basso costo computazionale lo rende la 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:

@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, consulta il documento di ricerca YOLOv10 e il repository GitHub del team della Tsinghua University.



Created 2024-05-25, Updated 2024-06-24
Authors: RizwanMunawar (3), Burhan-Q (1), glenn-jocher (3)

Commenti