Esplora Ultralytics YOLOv8
Panoramica
YOLOv8 è stato rilasciato da Ultralytics il 10 gennaio 2023, offrendo prestazioni all'avanguardia in termini di accuratezza e velocità. Basandosi sui progressi delle versioni precedenti di YOLO, YOLOv8 ha introdotto nuove funzionalità e ottimizzazioni che lo rendono una scelta ideale per varie attività di object detection in una vasta gamma di applicazioni.
Guarda: Panoramica del modello Ultralytics YOLOv8
Caratteristiche principali di YOLOv8
- Architetture avanzate di Backbone e Neck: YOLOv8 impiega architetture backbone e neck all'avanguardia, ottenendo prestazioni migliorate nell' estrazione delle caratteristiche e nel rilevamento degli oggetti.
- Head Ultralytics split senza ancore: YOLOv8 adotta un head Ultralytics split senza ancore, che contribuisce a una migliore accuratezza e a un processo di detection più efficiente rispetto agli approcci basati su ancore.
- Compromesso Ottimizzato tra Precisione e Velocità: Con un focus sul mantenimento di un equilibrio ottimale tra precisione e velocità, YOLOv8 è adatto per attività di object detection in tempo reale in diverse aree applicative.
- Varietà di modelli pre-addestrati: YOLOv8 offre una gamma di modelli pre-addestrati per soddisfare varie attività e requisiti di prestazioni, rendendo più facile trovare il modello giusto per il tuo caso d'uso specifico.
Attività e modalità supportate
La serie YOLOv8 offre una vasta gamma di modelli, ciascuno specializzato per attività specifiche nella computer vision. Questi modelli sono progettati per soddisfare varie esigenze, dal rilevamento di oggetti a compiti più complessi come la segmentazione di istanze, il rilevamento di pose/keypoint, il rilevamento di oggetti orientati e la classificazione.
Ogni variante della serie YOLOv8 è ottimizzata per la rispettiva attività, garantendo alte prestazioni e accuratezza. Inoltre, questi modelli sono compatibili con varie modalità operative tra cui Inference, Validation, Training ed Export, facilitandone l'uso in diverse fasi di implementazione e sviluppo.
Modello | Nomi dei file | Task | Inferenza | Validazione | Training | Esportazione |
---|---|---|---|---|---|---|
YOLOv8 | yolov8n.pt yolov8s.pt yolov8m.pt yolov8l.pt yolov8x.pt |
Rilevamento | ✅ | ✅ | ✅ | ✅ |
YOLOv8-seg | yolov8n-seg.pt yolov8s-seg.pt yolov8m-seg.pt yolov8l-seg.pt yolov8x-seg.pt |
Segmentazione delle istanze | ✅ | ✅ | ✅ | ✅ |
YOLOv8-pose | yolov8n-pose.pt yolov8s-pose.pt yolov8m-pose.pt yolov8l-pose.pt yolov8x-pose.pt yolov8x-pose-p6.pt |
Posa/Punti chiave | ✅ | ✅ | ✅ | ✅ |
YOLOv8-obb | yolov8n-obb.pt yolov8s-obb.pt yolov8m-obb.pt yolov8l-obb.pt yolov8x-obb.pt |
Rilevamento orientato | ✅ | ✅ | ✅ | ✅ |
YOLOv8-cls | yolov8n-cls.pt yolov8s-cls.pt yolov8m-cls.pt yolov8l-cls.pt yolov8x-cls.pt |
Classificazione | ✅ | ✅ | ✅ | ✅ |
Questa tabella fornisce una panoramica delle varianti del modello YOLOv8, evidenziando la loro applicabilità in attività specifiche e la loro compatibilità con varie modalità operative come Inferenza, Validazione, Addestramento ed Esportazione. Mostra la versatilità e la robustezza della serie YOLOv8, rendendola adatta a una varietà di applicazioni nella computer vision.
Metriche di performance
Prestazioni
Vedere Documentazione sul rilevamento per esempi di utilizzo con questi modelli addestrati su COCO, che includono 80 classi pre-addestrate.
Modello | dimensione (pixel) |
mAPval 50-95 |
Velocità CPU ONNX (ms) |
Velocità A100 TensorRT (ms) |
parametri (M) |
FLOPs (B) |
---|---|---|---|---|---|---|
YOLOv8n | 640 | 37.3 | 80.4 | 0.99 | 3.2 | 8.7 |
YOLOv8s | 640 | 44.9 | 128.4 | 1.20 | 11.2 | 28.6 |
YOLOv8m | 640 | 50.2 | 234.7 | 1.83 | 25.9 | 78.9 |
YOLOv8l | 640 | 52.9 | 375.2 | 2.39 | 43.7 | 165.2 |
YOLOv8x | 640 | 53.9 | 479.1 | 3.53 | 68.2 | 257.8 |
Consulta la documentazione sul rilevamento per esempi di utilizzo con questi modelli addestrati su Open Image V7, che include 600 classi pre-addestrate.
Modello | dimensione (pixel) |
mAPval 50-95 |
Velocità CPU ONNX (ms) |
Velocità A100 TensorRT (ms) |
parametri (M) |
FLOPs (B) |
---|---|---|---|---|---|---|
YOLOv8n | 640 | 18.4 | 142.4 | 1.21 | 3.5 | 10.5 |
YOLOv8s | 640 | 27.7 | 183.1 | 1.40 | 11.4 | 29.7 |
YOLOv8m | 640 | 33.6 | 408.5 | 2.26 | 26.2 | 80.6 |
YOLOv8l | 640 | 34.9 | 596.9 | 2.43 | 44.1 | 167.4 |
YOLOv8x | 640 | 36.3 | 860.6 | 3.56 | 68.7 | 260.6 |
Consulta la documentazione sulla segmentazione per esempi di utilizzo con questi modelli addestrati su COCO, che include 80 classi pre-addestrate.
Modello | dimensione (pixel) |
mAPbox 50-95 |
mAPmask 50-95 |
Velocità CPU ONNX (ms) |
Velocità A100 TensorRT (ms) |
parametri (M) |
FLOPs (B) |
---|---|---|---|---|---|---|---|
YOLOv8n-seg | 640 | 36.7 | 30.5 | 96.1 | 1.21 | 3.4 | 12.6 |
YOLOv8s-seg | 640 | 44.6 | 36.8 | 155.7 | 1.47 | 11.8 | 42.6 |
YOLOv8m-seg | 640 | 49.9 | 40.8 | 317.0 | 2.18 | 27.3 | 110.2 |
YOLOv8l-seg | 640 | 52.3 | 42.6 | 572.4 | 2.79 | 46.0 | 220.5 |
YOLOv8x-seg | 640 | 53.4 | 43.4 | 712.1 | 4.02 | 71.8 | 344.1 |
Consulta la documentazione sulla classificazione per esempi di utilizzo con questi modelli addestrati su ImageNet, che include 1000 classi pre-addestrate.
Modello | dimensione (pixel) |
acc top1 |
acc top5 |
Velocità CPU ONNX (ms) |
Velocità A100 TensorRT (ms) |
parametri (M) |
FLOPs (B) a 224 |
---|---|---|---|---|---|---|---|
YOLOv8n-cls | 224 | 69.0 | 88.3 | 12.9 | 0.31 | 2.7 | 0.5 |
YOLOv8s-cls | 224 | 73.8 | 91.7 | 23.4 | 0.35 | 6.4 | 1.7 |
YOLOv8m-cls | 224 | 76.8 | 93.5 | 85.4 | 0.62 | 17.0 | 5.3 |
YOLOv8l-cls | 224 | 76.8 | 93.5 | 163.0 | 0.87 | 37.5 | 12.3 |
YOLOv8x-cls | 224 | 79.0 | 94.6 | 232.0 | 1.01 | 57.4 | 19.0 |
Consulta la documentazione sulla stima della posa per esempi di utilizzo con questi modelli addestrati su COCO, che include 1 classe pre-addestrata, 'persona'.
Modello | dimensione (pixel) |
mAPpose 50-95 |
mAPpose 50 |
Velocità CPU ONNX (ms) |
Velocità A100 TensorRT (ms) |
parametri (M) |
FLOPs (B) |
---|---|---|---|---|---|---|---|
YOLOv8n-pose | 640 | 50.4 | 80.1 | 131.8 | 1.18 | 3.3 | 9.2 |
YOLOv8s-pose | 640 | 60.0 | 86.2 | 233.2 | 1.42 | 11.6 | 30.2 |
YOLOv8m-pose | 640 | 65.0 | 88.8 | 456.3 | 2.00 | 26.4 | 81.0 |
YOLOv8l-pose | 640 | 67.6 | 90.0 | 784.5 | 2.59 | 44.4 | 168.6 |
YOLOv8x-pose | 640 | 69.2 | 90.2 | 1607.1 | 3.73 | 69.4 | 263.2 |
YOLOv8x-pose-p6 | 1280 | 71.6 | 91.2 | 4088.7 | 10.04 | 99.1 | 1066.4 |
Consulta la documentazione sul rilevamento orientato per esempi di utilizzo con questi modelli addestrati su DOTAv1, che include 15 classi pre-addestrate.
Modello | dimensione (pixel) |
mAPtest 50 |
Velocità CPU ONNX (ms) |
Velocità A100 TensorRT (ms) |
parametri (M) |
FLOPs (B) |
---|---|---|---|---|---|---|
YOLOv8n-obb | 1024 | 78.0 | 204.77 | 3.57 | 3.1 | 23.3 |
YOLOv8s-obb | 1024 | 79.5 | 424.88 | 4.07 | 11.4 | 76.3 |
YOLOv8m-obb | 1024 | 80.5 | 763.48 | 7.61 | 26.4 | 208.6 |
YOLOv8l-obb | 1024 | 80.7 | 1278.42 | 11.83 | 44.5 | 433.8 |
YOLOv8x-obb | 1024 | 81.36 | 1759.10 | 13.23 | 69.5 | 676.7 |
Esempi di utilizzo di YOLOv8
Questo esempio fornisce semplici esempi di training e inferenza YOLOv8. Per la documentazione completa su questi e altri modi, consultare le pagine della documentazione Predict, Train, Val ed Export.
Si noti che l'esempio seguente è per i modelli YOLOv8 Detect per il rilevamento di oggetti. Per ulteriori attività supportate, consultare i documenti Segment, Classify, OBB e i documenti Pose.
Esempio
PyTorch pre-addestrato *.pt
modelli, così come la configurazione *.yaml
file possono essere passati alla YOLO()
classe per creare un'istanza del modello in python:
from ultralytics import YOLO
# Load a COCO-pretrained YOLOv8n model
model = YOLO("yolov8n.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 YOLOv8n model on the 'bus.jpg' image
results = model("path/to/bus.jpg")
Sono disponibili comandi CLI per eseguire direttamente i modelli:
# Load a COCO-pretrained YOLOv8n model and train it on the COCO8 example dataset for 100 epochs
yolo train model=yolov8n.pt data=coco8.yaml epochs=100 imgsz=640
# Load a COCO-pretrained YOLOv8n model and run inference on the 'bus.jpg' image
yolo predict model=yolov8n.pt source=path/to/bus.jpg
Citazioni e riconoscimenti
Pubblicazione di Ultralytics YOLOv8
Ultralytics non ha pubblicato un documento di ricerca formale per YOLOv8 a causa della rapida evoluzione dei modelli. Ci concentriamo sul progresso della tecnologia e sul renderla più facile da usare, piuttosto che sulla produzione di documentazione statica. Per le informazioni più aggiornate sull'architettura, le caratteristiche e l'utilizzo di YOLO, fare riferimento al nostro repository GitHub e alla documentazione.
Se utilizzi il modello YOLOv8 o qualsiasi altro software da questo repository nel tuo lavoro, citalo utilizzando il seguente formato:
@software{yolov8_ultralytics,
author = {Glenn Jocher and Ayush Chaurasia and Jing Qiu},
title = {Ultralytics YOLOv8},
version = {8.0.0},
year = {2023},
url = {https://github.com/ultralytics/ultralytics},
orcid = {0000-0001-5950-6979, 0000-0002-7603-6750, 0000-0003-3783-7069},
license = {AGPL-3.0}
}
Si prega di notare che il DOI è in sospeso e verrà aggiunto alla citazione non appena sarà disponibile. I modelli YOLOv8 sono forniti con licenze AGPL-3.0 ed Enterprise.
FAQ
Cos'è YOLOv8 e in cosa differisce dalle versioni precedenti di YOLO?
YOLOv8 è progettato per migliorare le prestazioni dell'object detection in tempo reale con funzionalità avanzate. A differenza delle versioni precedenti, YOLOv8 incorpora un head Ultralytics split anchor-free, architetture backbone e neck all'avanguardia e offre un tradeoff accuratezza-velocità ottimizzato, rendendolo ideale per diverse applicazioni. Per maggiori dettagli, consulta le sezioni Panoramica e Funzionalità chiave.
Come posso usare YOLOv8 per diversi task di computer vision?
YOLOv8 supporta una vasta gamma di attività di computer vision, tra cui il rilevamento di oggetti, la segmentazione di istanze, il rilevamento di pose/keypoint, il rilevamento di oggetti orientati e la classificazione. Ogni variante del modello è ottimizzata per la sua specifica attività ed è compatibile con varie modalità operative come Inference, Validation, Training ed Export. Fare riferimento alla sezione Attività e modalità supportate per ulteriori informazioni.
Quali sono le metriche di performance per i modelli YOLOv8?
I modelli YOLOv8 raggiungono prestazioni all'avanguardia in vari dataset di benchmarking. Ad esempio, il modello YOLOv8n raggiunge una mAP (precisione media media) di 37.3 sul dataset COCO e una velocità di 0.99 ms su A100 TensorRT. Metriche di performance dettagliate per ogni variante del modello su diverse attività e dataset sono disponibili nella sezione Metriche di performance.
Come posso addestrare un modello YOLOv8?
L'addestramento di un modello YOLOv8 può essere eseguito utilizzando Python o CLI. Di seguito sono riportati esempi per l'addestramento di un modello utilizzando un modello YOLOv8 pre-addestrato su COCO sul dataset COCO8 per 100 epoche:
Esempio
from ultralytics import YOLO
# Load a COCO-pretrained YOLOv8n model
model = YOLO("yolov8n.pt")
# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
yolo train model=yolov8n.pt data=coco8.yaml epochs=100 imgsz=640
Per maggiori dettagli, consulta la documentazione relativa al Training.
Posso eseguire il benchmark dei modelli YOLOv8 per valutarne le prestazioni?
Sì, è possibile valutare i modelli YOLOv8 in termini di velocità e accuratezza in vari formati di esportazione. È possibile utilizzare PyTorch, ONNX, TensorRT e altro per il benchmarking. Di seguito sono riportati comandi di esempio per il benchmarking tramite Python e CLI:
Esempio
from ultralytics.utils.benchmarks import benchmark
# Benchmark on GPU
benchmark(model="yolov8n.pt", data="coco8.yaml", imgsz=640, half=False, device=0)
yolo benchmark model=yolov8n.pt data='coco8.yaml' imgsz=640 half=False device=0
Per ulteriori informazioni, consultare la sezione Metriche di performance.