Overslaan naar inhoud

Modelvalidatie met Ultralytics YOLO

Ultralytics YOLO ecosysteem en integraties

Inleiding

Validatie is een kritieke stap in de machine learning pijplijn, waarmee je de kwaliteit van je getrainde modellen kunt beoordelen. De modus Val in Ultralytics YOLOv8 biedt een robuuste reeks hulpmiddelen en statistieken voor het evalueren van de prestaties van je objectdetectiemodellen. Deze gids is een compleet hulpmiddel om te begrijpen hoe je de modus Val effectief kunt gebruiken om ervoor te zorgen dat je modellen zowel nauwkeurig als betrouwbaar zijn.



Kijken: Ultralytics Lesmodi: Validatie

Waarom valideren met Ultralytics YOLO ?

Dit is waarom het gebruik van YOLOv8's Val modus voordelig is:

  • Precisie: Krijg nauwkeurige meetgegevens zoals mAP50, mAP75 en mAP50-95 om je model uitgebreid te evalueren.
  • Gemak: Maak gebruik van ingebouwde functies die trainingsinstellingen onthouden, wat het validatieproces vereenvoudigt.
  • Flexibiliteit: Valideer je model met dezelfde of verschillende datasets en afbeeldingsformaten.
  • Hyperparameter afstellen: Gebruik validatiemetrieken om je model te verfijnen voor betere prestaties.

Belangrijkste kenmerken van de modus Val

Dit zijn de opvallende functionaliteiten die worden aangeboden door YOLOv8's Val modus:

  • Geautomatiseerde instellingen: Modellen onthouden hun trainingsconfiguraties voor eenvoudige validatie.
  • Ondersteuning voor meerdere meetmethoden: Evalueer je model op basis van een reeks nauwkeurigheidsmetingen.
  • CLI en Python API: Kies uit de opdrachtregelinterface of Python API op basis van je voorkeur voor validatie.
  • Compatibiliteit gegevens: Werkt naadloos met datasets die tijdens de trainingsfase zijn gebruikt en met aangepaste datasets.

Tip

  • YOLOv8 modellen onthouden automatisch hun trainingsinstellingen, zodat je een model op dezelfde afbeeldingsgrootte en op de oorspronkelijke dataset eenvoudig kunt valideren met slechts yolo val model=yolov8n.pt of model('yolov8n.pt').val()

Voorbeelden

Valideer de nauwkeurigheid van het getrainde YOLOv8n model op de COCO8 dataset. Er hoeven geen argumenten te worden doorgegeven als de model behoudt zijn training data en argumenten als modelattributen. Zie het gedeelte Argumenten hieronder voor een volledige lijst van exportargumenten.

Voorbeeld

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n.pt')  # load an official model
model = YOLO('path/to/best.pt')  # load a custom model

# Validate the model
metrics = model.val()  # no arguments needed, dataset and settings remembered
metrics.box.map    # map50-95
metrics.box.map50  # map50
metrics.box.map75  # map75
metrics.box.maps   # a list contains map50-95 of each category
yolo detect val model=yolov8n.pt  # val official model
yolo detect val model=path/to/best.pt  # val custom model

Argumenten voor YOLO Modelvalidatie

Bij het valideren van YOLO modellen kunnen verschillende argumenten worden ingesteld om het evaluatieproces te optimaliseren. Deze argumenten bepalen aspecten zoals de grootte van de invoerafbeelding, batchverwerking en prestatiedrempels. Hieronder staat een gedetailleerd overzicht van elk argument om je te helpen je validatie-instellingen effectief aan te passen.

Argument Type Standaard Beschrijving
data str None Geeft het pad op naar het configuratiebestand van de dataset (bijv, coco8.yaml). Dit bestand bevat paden naar validatiegegevens, namen van klassen en het aantal klassen.
imgsz int 640 Bepaalt de grootte van invoerafbeeldingen. Alle afbeeldingen worden verkleind tot deze afmeting voordat ze worden verwerkt.
batch int 16 Stelt het aantal afbeeldingen per batch in. Gebruik -1 voor AutoBatch, die zich automatisch aanpast op basis van de beschikbaarheid van GPU-geheugen.
save_json bool False Als Trueslaat de resultaten op in een JSON-bestand voor verdere analyse of integratie met andere tools.
save_hybrid bool False Als Trueslaat een hybride versie van labels op die originele annotaties combineert met extra modelvoorspellingen.
conf float 0.001 Stelt de minimale betrouwbaarheidsdrempel voor detecties in. Detecties met een betrouwbaarheid onder deze drempel worden genegeerd.
iou float 0.6 Stelt de drempelwaarde voor Intersection Over Union (IoU) in voor Non-Maximum Suppression (NMS). Helpt bij het verminderen van dubbele detecties.
max_det int 300 Beperkt het maximum aantal detecties per afbeelding. Nuttig in dichte scènes om overmatige detecties te voorkomen.
half bool True Maakt half-precisie (FP16) berekeningen mogelijk, waardoor minder geheugen wordt gebruikt en de snelheid mogelijk toeneemt met minimale invloed op de nauwkeurigheid.
device str None Specificeert het apparaat voor validatie (cpu, cuda:0enz.). Biedt flexibiliteit in het gebruik van CPU- of GPU-bronnen.
dnn bool False Als Truemaakt gebruik van de OpenCV DNN module voor ONNX modelinferentie en biedt daarmee een alternatief voor PyTorch inferentiemethoden.
plots bool False Wanneer ingesteld op Truegenereert en bewaart plots van voorspellingen versus de grondwaarheid voor visuele evaluatie van de prestaties van het model.
rect bool False Als Truemaakt gebruik van rechthoekige inferentie voor batching, waardoor opvulling wordt verminderd en de snelheid en efficiëntie mogelijk worden verhoogd.
split str val Bepaalt de datasetsplitsing om te gebruiken voor validatie (val, testof train). Biedt flexibiliteit bij het kiezen van het gegevenssegment voor prestatie-evaluatie.

Elk van deze instellingen speelt een belangrijke rol in het validatieproces, waardoor een aanpasbare en efficiënte evaluatie van YOLO modellen mogelijk is. Door deze parameters aan te passen aan je specifieke behoeften en middelen kun je de beste balans bereiken tussen nauwkeurigheid en prestaties.

Voorbeeld validatie met argumenten

De onderstaande voorbeelden tonen YOLO modelvalidatie met aangepaste argumenten in Python en CLI.

Voorbeeld

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n.pt')

# Customize validation settings
validation_results = model.val(data='coco8.yaml',
                               imgsz=640,
                               batch=16,
                               conf=0.25,
                               iou=0.6,
                               device='0')
yolo val model=yolov8n.pt data=coco8.yaml imgsz=640 batch=16 conf=0.25 iou=0.6 device=0


Aangemaakt 2023-11-12, Bijgewerkt 2024-04-18
Auteurs: glenn-jocher (9), Burhan-Q (1), RizwanMunawar (1)

Reacties