Benchmark dei modelli con Ultralytics YOLO#
Visualizzazione del benchmark#
Introduzione#
Una volta addestrato e validato il tuo modello, il passo logico successivo è valutarne le prestazioni in vari scenari del mondo reale. La modalità Benchmark in Ultralytics YOLO26 serve a questo scopo fornendo un framework robusto per valutare la velocità e la accuracy del tuo modello su una gamma di formati di esportazione.
Watch: Benchmark Ultralytics YOLO26 Models | How to Compare Model Performance on Different Hardware?
Perché il benchmarking è fondamentale?#
- Decisioni informate: ottieni informazioni sui compromessi tra velocità e accuratezza.
- Allocazione delle risorse: comprendi come i diversi formati di esportazione si comportano su diversi hardware.
- 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 del benchmark.
Metriche chiave nella modalità benchmark#
- mAP50-95: Per object detection, segmentazione e stima della posta.
- accuracy_top1: Per l'image classification.
- Tempo di inferenza: tempo impiegato per ogni immagine in millisecondi.
Formati di esportazione supportati#
- ONNX: per prestazioni CPU ottimali
- TensorRT: per la massima efficienza della GPU
- OpenVINO: per l'ottimizzazione dell'hardware Intel
- CoreML, TensorFlow SavedModel e altro: per diverse esigenze di distribuzione.
- Esporta in ONNX o OpenVINO per un incremento di velocità della CPU fino a 3x.
- Esporta in TensorRT per un incremento di velocità della GPU fino a 5x.
Esempi di Utilizzo#
Installa Ultralytics con le dipendenze di esportazione prima di eseguire il benchmarking per evitare di perdere pacchetti.
pip install ultralytics[export]Esegui i benchmark di YOLO26n su tutti i formati di esportazione supportati (ONNX, TensorRT, ecc.). Vedi la sezione Argomenti qui sotto per un elenco completo delle opzioni di esportazione.
from ultralytics.utils.benchmarks import benchmark
# Benchmark on GPU
benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, device=0)
# Benchmark specific export format
benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, format="onnx")Argomenti#
Argomenti come model, data, imgsz, quantize, device, verbose e format offrono agli utenti la flessibilità di ottimizzare i benchmark in base alle proprie specifiche esigenze e confrontare facilmente le prestazioni di diversi formati di esportazione.
| Chiave | Valore predefinito | Descrizione |
|---|---|---|
model | None | Specifica il percorso del file del modello. Accetta entrambi i formati .pt e .yaml, ad esempio "yolo26n.pt" per modelli pre-addestrati o file di configurazione. |
data | None | Percorso del file YAML del dataset per il benchmarking, che include tipicamente percorsi e impostazioni per i validation data. Esempio: "coco8.yaml". Per la classificazione viene invece accettata una directory di dataset o il nome di un dataset integrato (ad es. imagenet10). |
imgsz | 640 | La dimensione dell'immagine di input per il modello. Deve essere un singolo numero intero per le immagini quadrate (ad es. 640); benchmark() supporta solo dimensioni di immagini quadrate. |
quantize | None | Precisione di quantizzazione: 16 (FP16) o 8 (INT8/PTQ; richiede calibrazione data/fraction); 32/non impostato è FP32. Sostituisce i flag deprecati half/int8. |
device | 'cpu' | Definisce il/i dispositivo/i di calcolo per il benchmarking, come "cpu" o "cuda:0". |
verbose | False | Controlla il livello di dettaglio nell'output di log. Imposta verbose=True per log dettagliati. |
eps | 0.001 | Piccola epsilon (millisecondi) aggiunta al tempo di inferenza per immagine prima di convertirlo in FPS, per evitare la divisione per zero. Modificata raramente. |
format | '' | Esegue il benchmark solo del formato di esportazione specificato (ad es. format=onnx). Lascialo vuoto per testare automaticamente ogni formato supportato. |
La funzione standalone benchmark() (from ultralytics.utils.benchmarks import benchmark) utilizza i propri valori predefiniti della firma anziché i valori della tabella sopra, in particolare model="yolo26n.pt" e imgsz=160; passa imgsz in modo esplicito per corrispondere alla CLI yolo benchmark.
Formati di esportazione#
I benchmark tenteranno di essere eseguiti automaticamente su tutti i possibili formati di esportazione elencati di seguito. In alternativa, puoi eseguire i benchmark per un formato specifico utilizzando l'argomento format, che accetta uno qualsiasi dei formati menzionati di seguito.
| Formato | Argomento format | Modello | Metadati | Argomenti |
|---|---|---|---|---|
| PyTorch | - | yolo26n.pt | ✅ | - |
| TorchScript | torchscript | yolo26n.torchscript | ✅ | imgsz, quantize, dynamic, nms, batch, device |
| ONNX | onnx | yolo26n.onnx | ✅ | imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device |
| OpenVINO | openvino | yolo26n_openvino_model/ | ✅ | imgsz, quantize, dynamic, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n.engine | ✅ | imgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n.mlpackage | ✅ | imgsz, dynamic, quantize, nms, batch, device |
| TF SavedModel | saved_model | yolo26n_saved_model/ | ✅ | imgsz, keras, quantize, opset, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n.pb | ❌ | imgsz, opset, batch, device |
| TF Edge TPU | edgetpu | yolo26n_edgetpu.tflite | ✅ | imgsz, quantize, opset, data, fraction, device |
| PaddlePaddle | paddle | yolo26n_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n.mnn | ✅ | imgsz, batch, dynamic, quantize, simplify, opset, nms, device |
| NCNN | ncnn | yolo26n_ncnn_model/ | ✅ | imgsz, quantize, batch, device |
| IMX500 | imx | yolo26n_imx_model/ | ✅ | imgsz, quantize, data, fraction, nms, device |
| RKNN | rknn | yolo26n_rknn_model/ | ✅ | imgsz, batch, name, quantize, simplify, opset, data, fraction, device |
| ExecuTorch | executorch | yolo26n_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n_axelera_model/ | ✅ | imgsz, batch, quantize, data, fraction, device |
| DEEPX | deepx | yolo26n_deepx_model/ | ✅ | imgsz, quantize, simplify, opset, data, optimize, device |
| Qualcomm QNN | qnn | yolo26n_qnn.onnx | ✅ | imgsz, batch, name, quantize, simplify, opset, data, fraction, device |
| LiteRT | litert | yolo26n.tflite | ✅ | imgsz, quantize, batch, data, fraction, device |
| Hailo | hailo | yolo26n_hailo_model/ | ✅ | imgsz, name, quantize, data, fraction, simplify, conf, iou |
| Huawei Ascend | ascend | yolo26n_ascend_model/ | ✅ | imgsz, batch, name, quantize, opset, simplify, nms |
Visualizza i dettagli completi di export nella pagina Export.
FAQ#
Ultralytics YOLO26 offre una modalità Benchmark per valutare le prestazioni del tuo modello su diversi formati di esportazione. Questa modalità fornisce informazioni su metriche chiave come mean Average Precision (mAP50-95), precisione e tempo di inferenza in millisecondi. Per eseguire i benchmark, puoi utilizzare comandi Python o CLI. Ad esempio, per eseguire il benchmark su una GPU:
Esempiofrom ultralytics.utils.benchmarks import benchmark # Benchmark on GPU benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, device=0)Per maggiori dettagli sugli argomenti dei benchmark, visita la sezione Arguments.
Esportare i modelli YOLO26 in formati diversi come ONNX, TensorRT e OpenVINO consente di ottimizzare le prestazioni in base al tuo ambiente di distribuzione. Ad esempio:
- ONNX: Fornisce fino a 3x di velocizzazione su CPU.
- TensorRT: Offre fino a 5x di velocizzazione su GPU.
- OpenVINO: Specificamente ottimizzato per hardware Intel.
Questi formati migliorano sia la velocità che la precisione dei tuoi modelli, rendendoli più efficienti per varie applicazioni del mondo reale. Visita la pagina Export per i dettagli completi.
Il benchmarking dei tuoi modelli YOLO26 è essenziale per diverse ragioni:
- Decisioni informate: Comprendi i compromessi tra velocità e precisione.
- Allocazione delle risorse: Valuta le prestazioni su diverse opzioni hardware.
- Ottimizzazione: Determina quale formato di esportazione offre le migliori prestazioni per casi d'uso specifici.
- Efficienza dei costi: Ottimizza l'utilizzo dell'hardware in base ai risultati del benchmark.
Metriche chiave come mAP50-95, precisione Top-1 e tempo di inferenza aiutano a effettuare queste valutazioni. Fai riferimento alla sezione Key Metrics per ulteriori informazioni.
YOLO26 supporta una varietà di formati di esportazione, ognuno su misura per hardware e casi d'uso specifici:
- ONNX: Ideale per le prestazioni su CPU.
- TensorRT: Ideale per l'efficienza su GPU.
- OpenVINO: Ottimizzato per hardware Intel.
- CoreML & TensorFlow: Utili per iOS e applicazioni ML generali.
Per un elenco completo dei formati supportati e dei rispettivi vantaggi, controlla la sezione Supported Export Formats.
Quando esegui i benchmark, diversi argomenti possono essere personalizzati per soddisfare esigenze specifiche:
- model: Percorso del file del modello (es. "yolo26n.pt").
- data: Percorso al file YAML del dataset (ad es.
"coco8.yaml"); la classificazione accetta invece una directory del dataset o un nome di dataset integrato (ad es.imagenet10). - imgsz: La dimensione dell'immagine di input quadrata come singolo intero, come
640. La modalità Benchmark utilizza la stessa dimensione dell'immagine quadrata tra PyTorch e i formati esportati per un confronto equo. - quantize: Precisione di quantizzazione:
16per FP16,8per INT8 (utile per dispositivi edge);32/non impostato è FP32. - device: Specifica il dispositivo di calcolo (es. "cpu", "cuda:0").
- verbose: Controlla il livello di dettaglio del logging.
Per un elenco completo degli argomenti, fai riferimento alla sezione Arguments.