Vai al contenuto

Benchmarking del modello con Ultralytics YOLO

Ultralytics YOLO ecosistema e integrazioni

Introduzione

Una volta che il tuo modello è stato addestrato e convalidato, il passo logico successivo è quello di valutarne le prestazioni in vari scenari reali. La modalità Benchmark di Ultralytics YOLOv8 serve a questo scopo, fornendo un quadro solido per valutare la velocità e l'accuratezza del modello in una serie di formati di esportazione.



Guarda: Ultralytics Tutorial sulle modalità: Benchmark

Perché il benchmarking è fondamentale?

  • Decisioni informate: Scopri i compromessi tra velocità e precisione.
  • Allocazione delle risorse: Capire come si comportano i diversi formati di esportazione su hardware diversi.
  • Ottimizzazione: Scopri quale formato di esportazione offre le migliori prestazioni per il tuo caso d'uso specifico.
  • Efficienza dei costi: Utilizza in modo più efficiente le risorse hardware in base ai risultati dei benchmark.

Metriche chiave in modalità Benchmark

  • mAP50-95: Per il rilevamento, la segmentazione e la stima della posa degli oggetti.
  • accuracy_top5: per la classificazione delle immagini.
  • Tempo di inferenza: tempo impiegato per ogni immagine in millisecondi.

Formati di esportazione supportati

  • ONNX: Per prestazioni ottimali della CPU
  • TensorRT: Per la massima efficienza della GPU
  • OpenVINO: Per l'ottimizzazione dell'hardware Intel
  • CoreML, TensorFlow SavedModel , e altro ancora: Per diverse esigenze di implementazione.

Suggerimento

  • Esportazione in ONNX o OpenVINO per una velocizzazione della CPU fino a 3 volte.
  • Esportazione in TensorRT per una velocizzazione della GPU fino a 5 volte.

Esempi di utilizzo

Esegue i benchmark di YOLOv8n su tutti i formati di esportazione supportati, tra cui ONNX, TensorRT ecc. Vedi la sezione Argomenti qui sotto per un elenco completo degli argomenti di esportazione.

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

Argomenti

Argomenti come model, data, imgsz, half, device, e verbose offrono agli utenti la flessibilità necessaria per adattare i benchmark alle loro esigenze specifiche e per confrontare facilmente le prestazioni di diversi formati di esportazione.

Chiave Valore predefinito Descrizione
model None Specifica il percorso del file del modello. Accetta sia .pt e .yaml formati, ad esempio, "yolov8n.pt" per i modelli pre-addestrati o i file di configurazione.
data None Percorso di un file YAML che definisce il set di dati per il benchmarking, in genere includendo i percorsi e le impostazioni per i dati di convalida. Esempio: "coco8.yaml".
imgsz 640 La dimensione dell'immagine di input per il modello. Può essere un singolo numero intero per le immagini quadrate oppure una tupla (width, height) per non quadrato, ad esempio, (640, 480).
half False Abilita l'inferenza FP16 (a mezza precisione), riducendo l'uso della memoria e possibilmente aumentando la velocità su hardware compatibile. Utilizza half=True per abilitare.
int8 False Attiva la quantizzazione INT8 per ottimizzare ulteriormente le prestazioni sui dispositivi supportati, particolarmente utile per i dispositivi edge. Imposta int8=True da utilizzare.
device None Definisce il dispositivo o i dispositivi di calcolo per il benchmarking, ad esempio "cpu", "cuda:0"o un elenco di dispositivi come "cuda:0,1" per le configurazioni multi-GPU.
verbose False Controlla il livello di dettaglio dell'output di registrazione. Un valore booleano; imposta verbose=True per i log dettagliati o un float per gli errori di soglia.

Formati di esportazione

I benchmark tenteranno di essere eseguiti automaticamente su tutti i possibili formati di esportazione indicati di seguito.

Formato format Argomento Modello Metadati Argomenti
PyTorch - yolov8n.pt ✅ -
TorchScript torchscript yolov8n.torchscript ✅ imgsz, optimize, batch
ONNX onnx yolov8n.onnx ✅ imgsz, half, dynamic, simplify, opset, batch
OpenVINO openvino yolov8n_openvino_model/ ✅ imgsz, half, int8, batch
TensorRT engine yolov8n.engine ✅ imgsz, half, dynamic, simplify, workspace, int8, batch
CoreML coreml yolov8n.mlpackage ✅ imgsz, half, int8, nms, batch
TF SavedModel saved_model yolov8n_saved_model/ ✅ imgsz, keras, int8, batch
TF GraphDef pb yolov8n.pb ❌ imgsz, batch
TF Lite tflite yolov8n.tflite ✅ imgsz, half, int8, batch
TF Bordo TPU edgetpu yolov8n_edgetpu.tflite ✅ imgsz
TF.js tfjs yolov8n_web_model/ ✅ imgsz, half, int8, batch
PaddlePaddle paddle yolov8n_paddle_model/ ✅ imgsz, batch
NCNN ncnn yolov8n_ncnn_model/ ✅ imgsz, half, batch

Vedi tutto export dettagli nella sezione Esportazione pagina.



Created 2023-11-12, Updated 2024-06-10
Authors: glenn-jocher (16), Burhan-Q (3), RizwanMunawar (1), Laughing-q (1), maianumerosky (1)

Commenti