Vai al contenuto

Ultralytics YOLOv8

Panoramica

YOLOv8 è l'ultima iterazione della serie YOLO di rilevatori di oggetti in tempo reale, che offre prestazioni all'avanguardia in termini di precisione e velocità. Basandosi sui progressi delle precedenti versioni di YOLO , YOLOv8 introduce nuove funzionalità e ottimizzazioni che lo rendono la scelta ideale per varie attività di rilevamento di oggetti in un'ampia gamma di applicazioni.

Ultralytics YOLOv8



Guarda: Ultralytics YOLOv8 Panoramica del modello

Caratteristiche principali

  • Architetture backbone e neck avanzate: YOLOv8 impiega architetture backbone e neck all'avanguardia, che consentono di migliorare le prestazioni di estrazione delle caratteristiche e di rilevamento degli oggetti.
  • Testa Ultralytics divisa senza ancore: YOLOv8 adotta una testa Ultralytics divisa senza ancore, che contribuisce a una migliore accuratezza e a un processo di rilevamento più efficiente rispetto agli approcci basati sulle ancore.
  • Tradeoff precisione-velocità ottimizzato: grazie all'attenzione rivolta al mantenimento di un equilibrio ottimale tra precisione e velocità, YOLOv8 è adatto a compiti di rilevamento di oggetti in tempo reale in diverse aree applicative.
  • Varietà di modelli pre-addestrati: YOLOv8 offre una gamma di modelli pre-addestrati per soddisfare diversi compiti e requisiti di prestazione, rendendo più facile trovare il modello giusto per il vostro caso d'uso specifico.

Attività e modalità supportate

La serie YOLOv8 offre una vasta gamma di modelli, ciascuno specializzato per compiti specifici nella visione artificiale. Questi modelli sono progettati per soddisfare diverse esigenze, dal rilevamento di oggetti a compiti più complessi come la segmentazione di istanze, il rilevamento di pose/punti chiave, il rilevamento di oggetti orientati e la classificazione.

Ogni variante della serie YOLOv8 è ottimizzata per il rispettivo compito, garantendo prestazioni e accuratezza elevate. Inoltre, questi modelli sono compatibili con diverse modalità operative, tra cui Inferenza, Convalida, Formazione ed Esportazione, che ne facilitano l'uso in diverse fasi di implementazione e sviluppo.

Modello Nomi di file Compito Inferenza Convalida Formazione 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-porre yolov8n-pose.pt yolov8s-pose.pt yolov8m-pose.pt yolov8l-pose.pt yolov8x-pose.pt yolov8x-pose-p6.pt Pose/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 , evidenziandone l'applicabilità in compiti specifici e la compatibilità con diverse modalità operative quali Inferenza, Convalida, Addestramento ed Esportazione. La tabella illustra la versatilità e la robustezza della serie YOLOv8 , che la rendono adatta a una varietà di applicazioni nel campo della computer vision.

Metriche di prestazione

Prestazioni

Per gli esempi di utilizzo di questi modelli addestrati su COCO, che includono 80 classi pre-addestrate, si vedano i Detection Docs.

Modello dimensione
(pixel)
mAPval
50-95
Velocità
CPU ONNX
(ms)
Velocità
A100 TensorRT
(ms)
params
(M)
FLOP
(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

Per gli esempi di utilizzo di questi modelli addestrati su Open Image V7, che includono 600 classi pre-addestrate, si vedano i Detection Docs.

Modello dimensione
(pixel)
mAPval
50-95
Velocità
CPU ONNX
(ms)
Velocità
A100 TensorRT
(ms)
params
(M)
FLOP
(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

Per gli esempi di utilizzo di questi modelli addestrati su COCO, che includono 80 classi pre-addestrate, si veda Segmentation Docs.

Modello dimensione
(pixel)
mAPbox
50-95
mAPmask
50-95
Velocità
CPU ONNX
(ms)
Velocità
A100 TensorRT
(ms)
params
(M)
FLOP
(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

Per gli esempi di utilizzo di questi modelli addestrati su ImageNet, che includono 1000 classi pre-addestrate, si veda Classification Docs.

Modello dimensione
(pixel)
acc
top1
acc
top5
Velocità
CPU ONNX
(ms)
Velocità
A100 TensorRT
(ms)
params
(M)
FLOPs
(B) a 640
YOLOv8n-cls 224 69.0 88.3 12.9 0.31 2.7 4.3
YOLOv8s-cls 224 73.8 91.7 23.4 0.35 6.4 13.5
YOLOv8m-cls 224 76.8 93.5 85.4 0.62 17.0 42.7
YOLOv8l-cls 224 76.8 93.5 163.0 0.87 37.5 99.7
YOLOv8x-cls 224 79.0 94.6 232.0 1.01 57.4 154.8

Vedere i Pose Estimation Docs per gli esempi di utilizzo di questi modelli addestrati su COCO, che includono una classe preaddestrata, "persona".

Modello dimensione
(pixel)
mAPpose
50-95
mAPpose
50
Velocità
CPU ONNX
(ms)
Velocità
A100 TensorRT
(ms)
params
(M)
FLOP
(B)
YOLOv8n-porre 640 50.4 80.1 131.8 1.18 3.3 9.2
YOLOv8s-porre 640 60.0 86.2 233.2 1.42 11.6 30.2
YOLOv8m-porre 640 65.0 88.8 456.3 2.00 26.4 81.0
YOLOv8l-porre 640 67.6 90.0 784.5 2.59 44.4 168.6
YOLOv8x-porre 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

Per gli esempi di utilizzo di questi modelli addestrati su DOTAv1, che includono 15 classi pre-addestrate, si vedano i documenti sul rilevamento orientato.

Modello dimensione
(pixel)
mAPtest
50
Velocità
CPU ONNX
(ms)
Velocità
A100 TensorRT
(ms)
params
(M)
FLOP
(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

Questo esempio fornisce semplici esempi di addestramento e inferenza su YOLOv8 . Per una documentazione completa su queste e altre modalità, consultare le pagine dei documenti Predict, Train, Val ed Export.

Si noti che l'esempio seguente riguarda i modelli YOLOv8 Detect per il rilevamento degli oggetti. Per altri compiti supportati, vedere i documenti Segment, Classify, OBB e Pose.

Esempio

PyTorch preaddestrato *.pt modelli e la configurazione *.yaml possono essere passati al metodo YOLO() 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")

CLI sono disponibili 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 ringraziamenti

Ultralytics YOLOv8 Pubblicazione

Ultralytics non ha pubblicato un documento di ricerca formale per YOLOv8 a causa della natura in rapida evoluzione dei modelli. Ci concentriamo sul progresso della tecnologia e sulla sua facilità d'uso, piuttosto che sulla produzione di documentazione statica. Per le informazioni più aggiornate sull'architettura, le caratteristiche e l'utilizzo di YOLO , consultare il nostro repository GitHub e la documentazione.

Se nel vostro lavoro utilizzate il modello YOLOv8 o qualsiasi altro software di questo archivio, siete pregati di citarlo 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 noti che il DOI è in attesa e sarà aggiunto alla citazione non appena sarà disponibile. I modelli YOLOv8 sono forniti con le licenze AGPL-3.0 e con licenze Enterprise.

FAQ

Che cos'è YOLOv8 e come si differenzia dalle precedenti versioni di YOLO ?

YOLOv8 è l'ultima iterazione della serie Ultralytics YOLO , progettata per migliorare le prestazioni di rilevamento degli oggetti in tempo reale con funzioni avanzate. A differenza delle versioni precedenti, YOLOv8 incorpora una testa Ultralytics senza ancoraggi, architetture di backbone e collo all'avanguardia e offre un compromesso tra precisione e velocità ottimizzato, che lo rende ideale per diverse applicazioni. Per maggiori dettagli, consultare le sezioni Panoramica e Caratteristiche principali.

Come si può utilizzare YOLOv8 per diversi compiti di computer vision?

YOLOv8 supporta un'ampia gamma di compiti di computer vision, tra cui il rilevamento di oggetti, la segmentazione di istanze, il rilevamento di pose/punti chiave, il rilevamento di oggetti orientati e la classificazione. Ogni variante di modello è ottimizzata per il compito specifico e compatibile con diverse modalità operative come Inferenza, Convalida, Formazione ed Esportazione. Per ulteriori informazioni, consultare la sezione Attività e modalità supportate.

Quali sono le metriche di performance dei modelli YOLOv8 ?

YOLOv8 I modelli raggiungono prestazioni all'avanguardia su diversi set di dati di benchmarking. Ad esempio, il modello YOLOv8n raggiunge un mAP (mean Average Precision) di 37,3 sul dataset COCO e una velocità di 0,99 ms su A100 TensorRT. Le metriche dettagliate delle prestazioni di ciascuna variante del modello su diversi compiti e set di dati sono riportate nella sezione Metriche delle prestazioni.

Come si addestra un modello YOLOv8 ?

L'addestramento di un modello YOLOv8 può essere effettuato utilizzando Python o CLI. Di seguito sono riportati esempi di addestramento di un modello utilizzando un modello YOLOv8 preaddestrato da COCO sul dataset COCO8 per 100 epoch:

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 ulteriori dettagli, visitate la documentazione sulla formazione.

È possibile effettuare un benchmark delle prestazioni dei modelli YOLOv8 ?

Sì, i modelli YOLOv8 possono essere sottoposti a benchmark delle prestazioni in termini di velocità e accuratezza in vari formati di esportazione. Per il benchmarking si possono usare PyTorch, ONNX, TensorRT e altri ancora. Di seguito sono riportati alcuni esempi di comandi per il benchmarking utilizzando 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 delle prestazioni.

📅C reato 1 anno fa ✏️ Aggiornato 14 giorni fa

Commenti