Ultralytics YOLOv5#
Panoramica#
YOLOv5u rappresenta un'evoluzione delle metodologie di rilevamento degli oggetti. Derivato dall'architettura fondamentale del modello YOLOv5 sviluppato da Ultralytics, YOLOv5u integra la testa split priva di anchor e objectness, una funzionalità introdotta per la prima volta nei modelli YOLOv8. Questo adattamento perfeziona l'architettura del modello, migliorando il compromesso tra accuratezza e velocità nelle attività di rilevamento degli oggetti. Considerati i risultati empirici e le funzionalità derivate, YOLOv5u offre un'alternativa efficiente per chi cerca soluzioni affidabili sia nella ricerca sia nelle applicazioni pratiche.

Ultralytics fornisce una variante di YOLOv5 priva di anchor. I modelli addestrati con il repository ultralytics/yolov5 non possono essere caricati con la libreria ultralytics/ultralytics. Per usare YOLOv5 qui, addestra un nuovo modello a partire da un checkpoint Ultralytics YOLOv5u, ad esempio yolov5su.pt.
Esplora ed esegui i modelli YOLOv5 direttamente su Ultralytics Platform.
Funzionalità principali#
-
Testa split Ultralytics priva di anchor: i modelli tradizionali di rilevamento degli oggetti si basano su anchor box predefinite per prevedere la posizione degli oggetti. YOLOv5u, invece, modernizza questo approccio. Adottando una testa split Ultralytics priva di anchor, garantisce un meccanismo di rilevamento più flessibile e adattivo, migliorando di conseguenza le prestazioni in scenari diversi.
-
Compromesso tra accuratezza e velocità ottimizzato: velocità e accuratezza spesso vanno in direzioni opposte. YOLOv5u, però, mette in discussione questo compromesso. Offre un equilibrio calibrato, garantendo rilevamenti in tempo reale senza compromettere l'accuratezza. Questa funzionalità è particolarmente preziosa per le applicazioni che richiedono risposte rapide, come i veicoli autonomi, la robotica e l'analisi video in tempo reale.
-
Ampia varietà di modelli preaddestrati: poiché attività diverse richiedono strumenti diversi, YOLOv5u offre numerosi modelli preaddestrati. Che tu ti concentri su inferenza, validazione o addestramento, c'è un modello personalizzato pronto per te. Questa varietà garantisce che tu non debba usare una soluzione universale, ma un modello ottimizzato nello specifico per la tua particolare esigenza.
Attività e modalità supportate#
I modelli YOLOv5u, con diversi pesi preaddestrati, eccellono nelle attività di rilevamento degli oggetti. Supportano un'ampia gamma di modalità, risultando adatti a diverse applicazioni, dallo sviluppo alla distribuzione.
| Tipo di modello | Pesi preaddestrati | Attività | Addestramento | Convalida | Inferenza | Esportazione |
|---|---|---|---|---|---|---|
| YOLOv5u | yolov5nu, yolov5su, yolov5mu, yolov5lu, yolov5xu, yolov5n6u, yolov5s6u, yolov5m6u, yolov5l6u, yolov5x6u | Rilevamento degli oggetti | ✅ | ✅ | ✅ | ✅ |
Questa tabella offre una panoramica dettagliata delle varianti del modello YOLOv5u, evidenziandone l'applicabilità nelle attività di rilevamento degli oggetti e il supporto per diverse modalità operative, come inferenza, validazione, addestramento ed esportazione. Questo supporto completo garantisce che tu possa sfruttare appieno le funzionalità dei modelli YOLOv5u in un'ampia gamma di scenari di rilevamento degli oggetti.
Metriche delle prestazioni#
Consulta la documentazione sul rilevamento per esempi di utilizzo con questi modelli addestrati su COCO, che includono 80 classi pretrained.
| Modello | YAML | dimensione (pixel) | mAPval 50-95 | Velocità CPU ONNX (ms) | Velocità A100 TensorRT (ms) | parametri (M) | FLOPs (B) |
|---|---|---|---|---|---|---|---|
| yolov5nu.pt | yolov5n.yaml | 640 | 34.3 | 73.6 | 1.06 | 2.6 | 7.7 |
| yolov5su.pt | yolov5s.yaml | 640 | 43.0 | 120.7 | 1.27 | 9.1 | 24.0 |
| yolov5mu.pt | yolov5m.yaml | 640 | 49.0 | 233.9 | 1.86 | 25.1 | 64.2 |
| yolov5lu.pt | yolov5l.yaml | 640 | 52.2 | 408.4 | 2.50 | 53.2 | 135.0 |
| yolov5xu.pt | yolov5x.yaml | 640 | 53.2 | 763.2 | 3.81 | 97.2 | 246.4 |
| yolov5n6u.pt | yolov5n6.yaml | 1280 | 42.1 | 211.0 | 1.83 | 4.3 | 31.3 |
| yolov5s6u.pt | yolov5s6.yaml | 1280 | 48.6 | 422.6 | 2.34 | 15.3 | 97.6 |
| yolov5m6u.pt | yolov5m6.yaml | 1280 | 53.6 | 810.9 | 4.36 | 41.2 | 261.3 |
| yolov5l6u.pt | yolov5l6.yaml | 1280 | 55.7 | 1470.9 | 5.47 | 86.1 | 549.4 |
| yolov5x6u.pt | yolov5x6.yaml | 1280 | 56.8 | 2436.5 | 8.98 | 155.5 | 1002.8 |
Esempi di utilizzo#
Questo esempio fornisce semplici esempi di addestramento e inferenza con YOLOv5. Per la documentazione completa su queste e altre modalità, consulta le pagine della documentazione Predict, Train, Val ed Export.
I modelli *.pt preaddestrati con PyTorch, così come i file di configurazione *.yaml, possono essere passati alla classe YOLO() per creare un'istanza del modello in Python:
from ultralytics import YOLO
# Load a COCO-pretrained YOLOv5nu model
model = YOLO("yolov5nu.pt")
# Display model information (optional)
model.info()
# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Run inference with the YOLOv5nu model on the 'bus.jpg' image
results = model("path/to/bus.jpg")Citazioni e ringraziamenti#
Ultralytics non ha pubblicato un documento di ricerca formale su YOLOv5 a causa della rapida evoluzione dei modelli. Ci concentriamo sul progresso della tecnologia e sulla sua facilità d'uso, anziché produrre documentazione statica. Per informazioni aggiornate sull'architettura, sulle funzionalità e sull'utilizzo di YOLO, consulta il nostro repository GitHub e la nostra documentazione.
Se usi YOLOv5 o YOLOv5u nella tua ricerca, cita il repository Ultralytics YOLOv5 come segue:
@software{yolov5,
title = {Ultralytics YOLOv5},
author = {Glenn Jocher},
year = {2020},
version = {7.0},
license = {AGPL-3.0},
url = {https://github.com/ultralytics/yolov5},
doi = {10.5281/zenodo.3908559},
orcid = {0000-0001-5950-6979}
}Tieni presente che i modelli YOLOv5 sono forniti con licenze AGPL-3.0 ed Enterprise.
FAQ#
Ultralytics YOLOv5u è una versione avanzata di YOLOv5 che integra una testa split priva di anchor e objectness, migliorando il compromesso tra accuratezza e velocità nelle attività di rilevamento degli oggetti in tempo reale. A differenza del YOLOv5 tradizionale, YOLOv5u adotta un meccanismo di rilevamento privo di anchor, che lo rende più flessibile e adattivo in scenari diversi. Per informazioni più dettagliate sulle sue funzionalità, consulta la panoramica di YOLOv5.
La testa Ultralytics priva di anchor in YOLOv5u migliora le prestazioni di rilevamento degli oggetti eliminando la dipendenza dalle anchor box predefinite. Ne risulta un meccanismo di rilevamento più flessibile e adattivo, in grado di gestire con maggiore efficienza oggetti di dimensioni e forme diverse. Questo miglioramento contribuisce direttamente a un compromesso equilibrato tra accuratezza e velocità, rendendo YOLOv5u adatto alle applicazioni in tempo reale. Scopri di più sulla sua architettura nella sezione Funzionalità principali.
Sì, puoi usare modelli YOLOv5u preaddestrati per diverse attività, come il rilevamento degli oggetti. Questi modelli supportano più modalità, tra cui inferenza, validazione, addestramento ed esportazione. Questa flessibilità ti consente di sfruttare le funzionalità dei modelli YOLOv5u in base a diversi requisiti operativi. Per una panoramica dettagliata, consulta la sezione Attività e modalità supportate.
Le metriche delle prestazioni dei modelli YOLOv5u variano a seconda della piattaforma e dell'hardware utilizzato. Ad esempio, il modello YOLOv5nu raggiunge 34,3 mAP sul dataset COCO, con una velocità di 73,6 ms su CPU (ONNX) e di 1,06 ms su A100 TensorRT. Puoi trovare metriche dettagliate delle prestazioni per diversi modelli YOLOv5u nella sezione Metriche delle prestazioni, che offre un confronto completo tra vari dispositivi.
Puoi addestrare un modello YOLOv5u caricando un modello preaddestrato ed eseguendo il comando di addestramento con il tuo dataset. Ecco un breve esempio:
Esempiofrom ultralytics import YOLO # Load a COCO-pretrained YOLOv5nu model model = YOLO("yolov5nu.pt") # Display model information (optional) model.info() # Train the model on the COCO8 example dataset for 100 epochs results = model.train(data="coco8.yaml", epochs=100, imgsz=640)Per istruzioni più dettagliate, visita la sezione Esempi di utilizzo.