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 CPU
- TensorRT: Per la massima efficienza di GPU
- OpenVINO: Per l'ottimizzazione dell'hardware di Intel
- CoreML, TensorFlow SavedModel , e altro ancora: Per diverse esigenze di implementazione.
Suggerimento
- Esportazione in ONNX o OpenVINO per una velocità fino a 3 volte superiore a CPU .
- Esportazione in TensorRT per accelerare fino a 5 volte GPU .
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 multiGPU . |
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.
DOMANDE FREQUENTI
Come posso confrontare le prestazioni del mio modello YOLOv8 utilizzando Ultralytics?
Ultralytics YOLOv8 offre una modalità Benchmark per valutare le prestazioni del tuo modello in diversi formati di esportazione. Questa modalità fornisce informazioni su parametri chiave come la precisione media (mAP50-95), l'accuratezza e il tempo di inferenza in millisecondi. Per eseguire i benchmark puoi utilizzare i comandi Python o CLI . Ad esempio, per eseguire un benchmark su GPU:
Esempio
Per maggiori dettagli sugli argomenti dei benchmark, visita la sezione Argomenti.
Quali sono i vantaggi dell'esportazione dei modelli di YOLOv8 in diversi formati?
L'esportazione dei modelli YOLOv8 in diversi formati, come ONNX, TensorRT e OpenVINO , ti permette di ottimizzare le prestazioni in base al tuo ambiente di distribuzione. Ad esempio:
- ONNX: Fornisce una velocità fino a 3 volte superiore a CPU .
- TensorRT: Offre una velocità fino a 5 volte superiore a GPU .
- OpenVINO: Ottimizzati in modo specifico per l'hardware di Intel . Questi formati migliorano la velocità e l'accuratezza dei tuoi modelli, rendendoli più efficienti per diverse applicazioni reali. Visita la pagina Esportazione per maggiori dettagli.
Perché il benchmarking è fondamentale per valutare i modelli di YOLOv8 ?
Il benchmarking dei modelli di YOLOv8 è essenziale per diversi motivi:
- Decisioni informate: Comprendi i compromessi tra velocità e precisione.
- Allocazione delle risorse: Valuta le prestazioni delle diverse opzioni hardware.
- Ottimizzazione: Determina quale formato di esportazione offre le migliori prestazioni per casi d'uso specifici.
- Efficienza dei costi: Ottimizzare l'uso dell'hardware in base ai risultati dei benchmark. Le metriche chiave come mAP50-95, accuratezza Top-5 e tempo di inferenza aiutano a fare queste valutazioni. Per maggiori informazioni, consulta la sezione Metriche chiave.
Quali sono i formati di esportazione supportati da YOLOv8 e quali sono i loro vantaggi?
YOLOv8 supporta una varietà di formati di esportazione, ognuno dei quali è adatto a specifici hardware e casi d'uso:
- ONNX: Il migliore per le prestazioni di CPU .
- TensorRT: Ideale per l'efficienza di GPU .
- OpenVINO: Ottimizzato per l'hardware di Intel .
- CoreML & TensorFlow: Utile per iOS e per le applicazioni ML in generale. Per un elenco completo dei formati supportati e dei rispettivi vantaggi, consulta la sezione Formati di esportazione supportati.
Quali argomenti posso utilizzare per mettere a punto i miei benchmark di YOLOv8 ?
Quando si eseguono i benchmark, è possibile personalizzare diversi argomenti per soddisfare esigenze specifiche:
- modello: Percorso del file del modello (ad esempio, "yolov8n.pt").
- dati: Percorso di un file YAML che definisce il set di dati (ad esempio, "coco8.yaml").
- imgsz: la dimensione dell'immagine in ingresso, sia come singolo numero intero che come tupla.
- metà: Abilita l'inferenza FP16 per ottenere prestazioni migliori.
- int8: attiva la quantizzazione INT8 per i dispositivi edge.
- dispositivo: Specifica il dispositivo di calcolo (ad esempio, "cpu", "cuda:0").
- verboso: Controlla il livello di dettaglio della registrazione. Per un elenco completo degli argomenti, consulta la sezione Argomenti.
Creato 2023-11-12, Aggiornato 2024-07-04
Autori: glenn-jocher (18), Burhan-Q (3), RizwanMunawar (1), Laughing-q (1), maianumerosky (1)