Modelbenchmarking met Ultralytics YOLO
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
Argumenten
Argumenten zoals model
, data
, imgsz
, half
, device
en 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)