Benchmarking del modello con Ultralytics YOLO
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
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 , 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 , batch |
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.
Creato 2023-11-12, Aggiornato 2024-04-27
Autori: glenn-jocher (12), Burhan-Q (1), RizwanMunawar (1), Laughing-q (1), maianumerosky (1)