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 le prestazioni di diversi formati di esportazione con facilità.

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: "coco128.yaml".
imgsz 640 La dimensione dell'immagine di input per il modello. Può essere un singolo numero intero per le immagini quadrate o 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
ONNX onnx yolov8n.onnx ✅ imgsz, half, dynamic, simplify, opset
OpenVINO openvino yolov8n_openvino_model/ ✅ imgsz, half, int8
TensorRT engine yolov8n.engine ✅ imgsz, half, dynamic, simplify, workspace
CoreML coreml yolov8n.mlpackage ✅ imgsz, half, int8, nms
TF SavedModel saved_model yolov8n_saved_model/ ✅ imgsz, keras, int8
TF GraphDef pb yolov8n.pb ❌ imgsz
TF Lite tflite yolov8n.tflite ✅ imgsz, half, int8
TF Bordo TPU edgetpu yolov8n_edgetpu.tflite ✅ imgsz
TF.js tfjs yolov8n_web_model/ ✅ imgsz, half, int8
PaddlePaddle paddle yolov8n_paddle_model/ ✅ imgsz
ncnn ncnn yolov8n_ncnn_model/ ✅ imgsz, half

Vedi tutto export dettagli nella sezione Esportazione pagina.



Creato 2023-11-12, Aggiornato 2024-02-17
Autori: glenn-jocher (9), chr043416@gmail.com (1), Laughing-q (1), maianumerosky (1)

Commenti