Ultralytics YOLOv5#
Panoramica#
YOLOv5u rappresenta un progresso nelle metodologie di rilevamento degli oggetti. Derivato dall'architettura di base del modello YOLOv5 sviluppato da Ultralytics, YOLOv5u integra la testa divisa senza anchor e senza objectness, una caratteristica introdotta in precedenza nei modelli YOLOv8. Questo adattamento perfeziona l'architettura del modello e migliora il compromesso tra accuratezza e velocità nelle attività di rilevamento degli oggetti. Considerati i risultati empirici e le caratteristiche derivate, YOLOv5u offre un'alternativa efficiente a chi cerca soluzioni affidabili sia nella ricerca sia nelle applicazioni pratiche.

Ultralytics offre una variante di YOLOv5 senza 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 partendo da un checkpoint Ultralytics YOLOv5u (ad es. yolov5su.pt).
Esplora ed esegui i modelli YOLOv5 direttamente su Ultralytics Platform.
Funzionalità principali#
-
Testa divisa Ultralytics senza anchor: i modelli tradizionali di rilevamento degli oggetti si basano su riquadri anchor predefiniti per prevedere la posizione degli oggetti. YOLOv5u modernizza questo approccio. Adottando una testa divisa Ultralytics senza anchor, garantisce un meccanismo di rilevamento più flessibile e adattabile, migliorando così le prestazioni in scenari diversi.
-
Compromesso tra accuratezza e velocità ottimizzato: velocità e accuratezza spesso sono in contrasto. YOLOv5u, però, sfida questo compromesso. Offre un equilibrio calibrato, garantendo rilevamenti in tempo reale senza compromettere l'accuratezza. Questa caratteristica è 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: consapevole che attività diverse richiedono strumenti diversi, YOLOv5u offre numerosi modelli preaddestrati. Che tu ti concentri su inferenza, validazione o addestramento, troverai un modello su misura per le tue esigenze. Questa varietà ti permette di usare non una soluzione universale, ma un modello ottimizzato appositamente per la tua sfida.
Attività e modalità supportate#
I modelli YOLOv5u, con diversi pesi preaddestrati, eccellono nelle attività di rilevamento degli oggetti. Supportano un'ampia gamma di modalità e sono adatti a molte applicazioni, dallo sviluppo alla distribuzione.
| Tipo di modello | Pesi preaddestrati | Attività | Addestramento | Validazione | Inferenza | Esporta |
|---|---|---|---|---|---|---|
| YOLOv5u | yolov5nu, yolov5su, yolov5mu, yolov5lu, yolov5xu, yolov5n6u, yolov5s6u, yolov5m6u, yolov5l6u, yolov5x6u | Rilevamento di oggetti | ✅ | ✅ | ✅ | ✅ |
Questa tabella offre una panoramica dettagliata delle varianti del modello YOLOv5u, evidenziandone l'applicabilità alle attività di rilevamento degli oggetti e il supporto per diverse modalità operative, come inferenza, validazione, addestramento ed esportazione. Questo supporto completo consente agli utenti di sfruttare appieno le funzionalità dei modelli YOLOv5u in un'ampia varietà di scenari di rilevamento degli oggetti.
Metriche di prestazione#
Consulta la documentazione sul rilevamento per esempi d'uso di questi modelli addestrati su COCO, che includono 80 classi preaddestrate.
| 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 d'uso#
Questo esempio mostra 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 e i file di configurazione *.yaml possono essere passati alla classe YOLO() per creare un'istanza del modello in Python:
from ultralytics import YOLO
# Carica un modello YOLOv5nu preaddestrato su COCO
model = YOLO("yolov5nu.pt")
# Visualizza le informazioni sul modello (facoltativo)
model.info()
# Addestra il modello sul dataset di esempio COCO8 per 100 epoche
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Esegui l'inferenza con il modello YOLOv5nu sull'immagine 'bus.jpg'
results = model("path/to/bus.jpg")Citazioni e ringraziamenti#
Ultralytics non ha pubblicato un articolo di ricerca formale su YOLOv5, data la rapida evoluzione dei modelli. Ci concentriamo sul progresso della tecnologia e sulla sua facilità d'uso, anziché produrre documentazione statica. Per le informazioni più aggiornate sull'architettura, le funzionalità e l'utilizzo di YOLO, consulta il nostro repository GitHub e la 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 distribuiti con licenze AGPL-3.0 ed Enterprise.
Domande frequenti#
Ultralytics YOLOv5u è una versione avanzata di YOLOv5 che integra una testa divisa senza anchor e senza objectness, migliorando il compromesso tra accuratezza e velocità nelle attività di rilevamento degli oggetti in tempo reale. A differenza del tradizionale YOLOv5, YOLOv5u adotta un meccanismo di rilevamento senza anchor, più flessibile e adattabile a scenari diversi. Per maggiori dettagli sulle sue funzionalità, consulta la panoramica di YOLOv5.
La testa Ultralytics senza anchor di YOLOv5u migliora le prestazioni di rilevamento degli oggetti eliminando la dipendenza dai riquadri anchor predefiniti. Ne deriva un meccanismo di rilevamento più flessibile e adattabile, 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 Caratteristiche 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à consente agli utenti di sfruttare le funzionalità dei modelli YOLOv5u per requisiti operativi diversi. Per una panoramica dettagliata, consulta la sezione Attività e modalità supportate.
Le metriche di prestazione dei modelli YOLOv5u variano in base alla piattaforma e all'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 le metriche di prestazione dettagliate dei diversi modelli YOLOv5u nella sezione Metriche di prestazione, 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 rapido esempio:
Esempiofrom ultralytics import YOLO # Carica un modello YOLOv5nu preaddestrato su COCO model = YOLO("yolov5nu.pt") # Visualizza le informazioni sul modello (facoltativo) model.info() # Addestra il modello sul dataset di esempio COCO8 per 100 epoche results = model.train(data="coco8.yaml", epochs=100, imgsz=640)Per istruzioni più dettagliate, visita la sezione Esempi d'uso.