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: For optimal CPU performance
  • TensorRT: For maximal GPU efficiency
  • OpenVINO: For Intel hardware optimization
  • CoreML, TensorFlow SavedModel , en meer: Voor diverse inzetbehoeften.

Tip

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

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, 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 Rand 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

Bekijk volledig export details in de Exporteer pagina.

FAQ

Hoe benchmark ik de prestaties van mijn YOLOv8 model met Ultralytics?

Ultralytics YOLOv8 biedt een Benchmarkmodus om de prestaties van je model in verschillende exportformaten te beoordelen. Deze modus geeft inzicht in belangrijke statistieken zoals gemiddelde precisie (mAP50-95), nauwkeurigheid en inferentietijd in milliseconden. Om benchmarks uit te voeren, kun je de commando's Python of CLI gebruiken. Om bijvoorbeeld te benchmarken op een GPU:

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

Ga voor meer informatie over benchmarkargumenten naar het onderdeel Argumenten.

Wat zijn de voordelen van het exporteren van YOLOv8 modellen naar verschillende formaten?

Door YOLOv8 modellen te exporteren naar verschillende formaten zoals ONNX, TensorRT, en OpenVINO kun je de prestaties optimaliseren op basis van je inzetomgeving. Bijvoorbeeld:

  • ONNX: Provides up to 3x CPU speedup.
  • TensorRT: Offers up to 5x GPU speedup.
  • OpenVINO: Specifically optimized for Intel hardware. These formats enhance both the speed and accuracy of your models, making them more efficient for various real-world applications. Visit the Export page for complete details.

Waarom is benchmarking cruciaal bij het evalueren van YOLOv8 modellen?

Het benchmarken van je YOLOv8 modellen is om verschillende redenen essentieel:

  • Geïnformeerde beslissingen: De afwegingen tussen snelheid en nauwkeurigheid begrijpen.
  • Toewijzing van bronnen: Meet de prestaties van verschillende hardwareopties.
  • Optimalisatie: Bepaal welk exportformaat de beste prestaties levert voor specifieke gebruikssituaties.
  • Kostenefficiëntie: Optimaliseer het gebruik van hardware op basis van benchmarkresultaten. Belangrijke meetgegevens zoals mAP50-95, Top-5 nauwkeurigheid en inferentietijd helpen bij het maken van deze evaluaties. Raadpleeg het gedeelte Belangrijke meetgegevens voor meer informatie.

Welke exportformaten worden ondersteund door YOLOv8 en wat zijn hun voordelen?

YOLOv8 ondersteunt verschillende exportformaten, elk afgestemd op specifieke hardware en gebruikssituaties:

  • ONNX: Best for CPU performance.
  • TensorRT: Ideal for GPU efficiency.
  • OpenVINO: Optimized for Intel hardware.
  • CoreML & TensorFlow: Useful for iOS and general ML applications. For a complete list of supported formats and their respective advantages, check out the Supported Export Formats section.

Welke argumenten kan ik gebruiken om mijn YOLOv8 benchmarks te verfijnen?

Bij het uitvoeren van benchmarks kunnen verschillende argumenten worden aangepast aan specifieke behoeften:

  • model: Pad naar het modelbestand (bijvoorbeeld "yolov8n.pt").
  • gegevens: Pad naar een YAML-bestand dat de dataset definieert (bijvoorbeeld "coco8.yaml").
  • imgsz: De grootte van de ingevoerde afbeelding, als een geheel getal of een tupel.
  • helft: FP16-inferentie inschakelen voor betere prestaties.
  • int8: Activeer INT8 kwantisatie voor randapparaten.
  • device: Specify the computation device (e.g., "cpu", "cuda:0").
  • verbose: Bepaal het detailniveau van de logging. Raadpleeg de sectie Argumenten voor een volledige lijst met argumenten.


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

Reacties