Overslaan naar inhoud

Modelbenchmarking met Ultralytics YOLO

Ultralytics YOLO ecosysteem en integraties

Inleiding

Zodra je model getraind en gevalideerd is, is de volgende logische stap om de prestaties ervan te evalueren in verschillende scenario's in de echte wereld. De benchmarkmodus in Ultralytics YOLOv8 dient dit doel door een robuust raamwerk te bieden voor het beoordelen van de snelheid en nauwkeurigheid van je model in een reeks exportformaten.



Kijken: Ultralytics Lesmodi: Benchmark

Waarom is benchmarking cruciaal?

  • Geïnformeerde beslissingen: Inzicht krijgen in de afwegingen tussen snelheid en nauwkeurigheid.
  • Toewijzing van bronnen: Begrijpen hoe verschillende exportformaten presteren op verschillende hardware.
  • Optimalisatie: Leer welk exportformaat de beste prestaties levert voor jouw specifieke toepassing.
  • Kostenefficiëntie: Maak efficiënter gebruik van hardwarebronnen op basis van benchmarkresultaten.

Belangrijkste statistieken in benchmarkmodus

  • mAP50-95: Voor objectdetectie, segmentatie en posebepaling.
  • accuracy_top5: Voor beeldclassificatie.
  • Inferentietijd: Tijd die nodig is voor elke afbeelding in milliseconden.

Ondersteunde exportformaten

  • ONNX: Voor optimale CPU-prestaties
  • TensorRT: Voor maximale GPU-efficiëntie
  • OpenVINO: Voor Intel hardwareoptimalisatie
  • CoreML, TensorFlow SavedModel , en meer: Voor diverse inzetbehoeften.

Tip

  • Exporteer naar ONNX of OpenVINO voor tot 3x CPU-snelheid.
  • Exporteer naar TensorRT voor tot 5x GPU-snelheid.

Voorbeelden

Voer YOLOv8n benchmarks uit op alle ondersteunde exportformaten, inclusief ONNX, TensorRT enz. Zie de sectie Argumenten hieronder voor een volledige lijst van exportargumenten.

Voorbeeld

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

Argumenten

Argumenten zoals model, data, imgsz, half, deviceen verbose bieden gebruikers de flexibiliteit om de benchmarks nauwkeurig af te stemmen op hun specifieke behoeften en de prestaties van verschillende exportformaten gemakkelijk te vergelijken.

Sleutel Standaardwaarde Beschrijving
model None Geeft het pad naar het modelbestand op. Accepteert zowel .pt en .yaml formaten, bijv, "yolov8n.pt" voor voorgetrainde modellen of configuratiebestanden.
data None Pad naar een YAML-bestand dat de dataset voor benchmarking definieert, meestal inclusief paden en instellingen voor validatiegegevens. Voorbeeld: "coco8.yaml".
imgsz 640 De grootte van de ingevoerde afbeelding voor het model. Kan een enkel geheel getal zijn voor vierkante afbeeldingen of een tupel (width, height) voor niet-kwadraat, bijv, (640, 480).
half False Maakt FP16 (half-precisie) inferentie mogelijk, waardoor minder geheugen wordt gebruikt en de snelheid mogelijk toeneemt op compatibele hardware. Gebruik half=True in te schakelen.
int8 False Activeert INT8 kwantisatie voor verder geoptimaliseerde prestaties op ondersteunde apparaten, vooral handig voor randapparaten. Stel in int8=True te gebruiken.
device None Definieert de rekenmachine(s) voor benchmarking, zoals "cpu", "cuda:0"of een lijst met apparaten zoals "cuda:0,1" voor multi-GPU opstellingen.
verbose False Regelt het detailniveau van de loguitvoer. Een booleaanse waarde; ingesteld verbose=True voor gedetailleerde logbestanden of een vlotter voor drempelfouten.

Exportformaten

Benchmarks worden automatisch uitgevoerd op alle mogelijke onderstaande exportformaten.

Formaat format Argument Model Metagegevens Argumenten
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 Rand 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

Bekijk volledig export details in de Exporteer pagina.



Aangemaakt 2023-11-12, Bijgewerkt 2024-04-27
Auteurs: glenn-jocher (12), Burhan-Q (1), RizwanMunawar (1), Laughing-q (1), maianumerosky (1)

Reacties