Meet YOLO26: next-gen vision AI.

Link to this sectionYOLOv10: Rilevamento 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.

Assegnazione duale coerente di YOLOv10 per l'addestramento senza NMS



Watch: How to Train YOLOv10 on SKU-110k Dataset using Ultralytics | Retail Dataset

Link to this sectionPanoramica#

Il rilevamento 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 architettoniche hanno ostacolato le prestazioni ottimali. YOLOv10 risolve questi problemi introducendo assegnazioni duali coerenti per l'addestramento senza NMS e una strategia di progettazione del modello orientata all'efficienza e alla precisione olistiche.

Link to this sectionArchitettura#

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 feature, 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.
  2. Neck: Il neck è progettato per aggregare le feature da diverse scale e passarle alla head. Include strati PAN (Path Aggregation Network) per un'efficace fusione multiscala delle feature.
  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 un'unica previsione ottimale per oggetto durante l'inferenza per eliminare la necessità di NMS, riducendo così la latenza e migliorando l'efficienza.

Link to this sectionCaratteristiche principali#

  1. Addestramento senza NMS: Utilizza assegnazioni duali coerenti per eliminare la necessità di NMS, riducendo la latenza di inferenza.
  2. Design olistico 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 design a blocchi guidato dal rango.
  3. Capacità del modello migliorate: Incorpora convoluzioni a kernel ampio e moduli di auto-attenzione parziale per migliorare le prestazioni senza costi computazionali significativi.

Link to this sectionVarianti 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 maggiore larghezza 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.

Link to this sectionPerformance#

YOLOv10 supera le precedenti versioni di YOLO e altri modelli allo stato dell'arte 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.

Performance

Latenza misurata con TensorRT FP16 su GPU T4.

ModelloDimensione inputAPvalFLOPs (G)Latenza (ms)
[YOLOv10n][1]64038.56.71.84
[YOLOv10s][2]64046.321.62.49
[YOLOv10m][3]64051.159.14.74
[YOLOv10b][4]64052.592.05.74
[YOLOv10l][5]64053.2120.37.28
[YOLOv10x][6]64054.4160.410.70

Link to this sectionMetodologia#

Link to this sectionAssegnazioni 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 ricca supervisione ed un efficiente deployment end-to-end. La metrica di corrispondenza coerente allinea la supervisione tra entrambe le strategie, migliorando la qualità delle previsioni durante l'inferenza.

Link to this sectionDesign del modello orientato all'efficienza e all'accuratezza olistica#

Link to this sectionMiglioramenti all'efficienza#

  1. Lightweight Classification Head: Riduce il sovraccarico computazionale della head di classificazione utilizzando convoluzioni separabili in profondità.
  2. Downsampling disaccoppiato spaziale-canale: Disaccoppia la riduzione spaziale e la modulazione dei canali per minimizzare la perdita di informazioni e il costo computazionale.
  3. Design a blocchi guidato dal rango: Adatta il design del blocco in base alla ridondanza intrinseca dello stage, garantendo un utilizzo ottimale dei parametri.

Link to this sectionMiglioramenti all'accuratezza#

  1. Convoluzione a kernel ampio: Ingrandisce il campo ricettivo per migliorare la capacità di estrazione delle feature.
  2. Partial Self-Attention (PSA): Incorpora moduli di auto-attenzione per migliorare l'apprendimento della rappresentazione globale con un sovraccarico minimo.

Link to this sectionEsperimenti e risultati#

YOLOv10 è stato ampiamente testato su benchmark standard come COCO, dimostrando prestazioni ed efficienza superiori. Il modello raggiunge risultati allo stato dell'arte in diverse varianti, mostrando miglioramenti significativi nella latenza e nell'accuratezza rispetto alle versioni precedenti e ad altri rilevatori contemporanei.

Link to this sectionConfronti#

Confronto di YOLOv10 con rilevatori di oggetti SOTA

Rispetto ad altri rilevatori allo stato dell'arte:

  • YOLOv10s / x sono 1,8× / 1,3× più veloci di RT-DETR-R18 / R101 con un'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
Performance

Ecco un confronto dettagliato delle varianti di YOLOv10 con altri modelli allo stato dell'arte:

ModelloParams
(M)
FLOPs
(G)
mAPval
50-95
Latenza
(ms)
Latenza-forward
(ms)
YOLOv6-3.0-N4.711.437.02.691.76
Gold-YOLO-N5.612.139.62.921.82
YOLOv8n3.28.737.36.161.77
YOLOv10n2.36.739.51.841.79
YOLOv6-3.0-S18.545.344.33.422.35
Gold-YOLO-S21.546.045.43.822.73
YOLOv8s11.228.644.97.072.33
YOLOv10s7.221.646.82.492.39
RT-DETR-R1820.060.046.54.584.49
YOLOv6-3.0-M34.985.849.15.634.56
Gold-YOLO-M41.387.549.86.385.45
YOLOv8m25.978.950.69.505.09
YOLOv10m15.459.151.34.744.63
YOLOv6-3.0-L59.6150.751.89.027.90
Gold-YOLO-L75.1151.751.810.659.78
YOLOv8l43.7165.252.912.398.06
RT-DETR-R5042.0136.053.19.209.07
YOLOv10l24.4120.353.47.287.21
YOLOv8x68.2257.853.916.8612.83
RT-DETR-R10176.0259.054.313.7113.58
YOLOv10x29.5160.454.410.7010.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 mantengono l'intera architettura di addestramento e potrebbero mostrare conteggi più elevati.

Link to this sectionEsempi di Utilizzo#

Per eseguire predizioni su nuove immagini con YOLOv10. I modelli possono anche essere addestrati su GPU in cloud tramite Ultralytics Platform:

Esempio
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 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)

Link to this sectionCompiti e modalità supportati#

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 un'ampia gamma di applicazioni.

ModelloNomi fileTaskInferenzaValidazioneAddestramentoEsportazione
YOLOv10yolov10n.pt yolov10s.pt yolov10m.pt yolov10l.pt yolov10x.ptObject Detection

Link to this sectionEsportazione 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 elenca 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 formati aggiuntivi per YOLOv10.

Formato di esportazioneSupporto all'esportazioneInferenza del modello esportatoNote
TorchScriptFormato modello PyTorch standard.
ONNXAmpiamente supportato per il deployment.
OpenVINOOttimizzato per hardware Intel.
TensorRTOttimizzato per GPU NVIDIA.
CoreMLLimitato ai dispositivi Apple.
TF SavedModelFormato modello standard di TensorFlow.
TF GraphDefFormato TensorFlow legacy.
LiteRTOttimizzato per dispositivi mobili, embedded e browser (LiteRT.js).
TF Edge TPUSpecifico per i dispositivi Edge TPU di Google.
PaddlePaddlePopolare in Cina; supporto globale minore.
NCNNIl livello torch.topk non esiste o non è registrato

Link to this sectionConclusione#

YOLOv10 ha stabilito un nuovo standard nel rilevamento di oggetti in tempo reale al momento del suo rilascio, risolvendo le carenze delle precedenti versioni di YOLO e incorporando strategie di progettazione innovative. Il suo approccio senza NMS ha aperto la strada al rilevamento di oggetti end-to-end nella famiglia YOLO. Per il modello Ultralytics più recente con prestazioni migliorate e inferenza senza NMS, vedi YOLO26.

Link to this sectionCitazioni e riconoscimenti#

Desideriamo ringraziare gli autori di YOLOv10 della Tsinghua University per la loro ricerca approfondita e i contributi significativi al framework Ultralytics:

Citazione
@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 l'implementazione dettagliata, le innovazioni architettoniche e i risultati sperimentali, consulta il documento di ricerca di YOLOv10 e il repository GitHub del team della Tsinghua University.

Link to this sectionFAQ#

Link to this sectionCos'è YOLOv10 e in che modo differisce dalle precedenti versioni 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 dei non massimi (NMS) impiegando assegnazioni duali coerenti durante l'addestramento e componenti del modello ottimizzati per prestazioni superiori con un ridotto carico computazionale. Per maggiori dettagli sulla sua architettura e sulle caratteristiche principali, consulta la sezione Panoramica di YOLOv10.

Link to this sectionCome posso iniziare a eseguire l'inferenza usando 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 su nuove immagini utilizzando YOLOv10:

Esempio
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.

Link to this sectionQuali 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 aumentata
  • YOLOv10l: Alta precisione a costo di maggiori 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 Varianti del modello per maggiori informazioni.

Link to this sectionIn che modo l'approccio senza NMS in YOLOv10 migliora le prestazioni?#

YOLOv10 elimina la necessità della soppressione dei non massimi (NMS) durante l'inferenza impiegando assegnazioni duali coerenti per l'addestramento. Questo approccio riduce la latenza di inferenza e migliora l'efficienza delle predizioni. L'architettura include anche una head one-to-one per l'inferenza, garantendo che ogni oggetto ottenga una singola predizione migliore. Per una spiegazione dettagliata, vedi la sezione Assegnazioni duali coerenti per l'addestramento senza NMS.

Link to this sectionDove 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 dettagli sui formati supportati e istruzioni sull'esportazione, visita la sezione Esportazione di YOLOv10.

Link to this sectionQuali sono i benchmark delle prestazioni per i modelli YOLOv10?#

YOLOv10 supera le precedenti versioni di YOLO e altri modelli allo stato dell'arte sia in precisione che in efficienza. Ad esempio, YOLOv10s è 1,8 volte più veloce di RT-DETR-R18 con un AP simile sul set di dati COCO. YOLOv10b mostra il 46% in meno di latenza e il 25% in meno di parametri rispetto a YOLOv9-C con le stesse prestazioni. I benchmark dettagliati possono essere trovati nella sezione Confronti.

Commenti