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 opleiding 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 automatisch wordt aangepast 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

FAQ

Hoe valideer ik mijn YOLOv8 model met Ultralytics?

Om je YOLOv8 model te valideren kun je gebruik maken van de Val modus van Ultralytics. Als je bijvoorbeeld de Python API gebruikt, kun je een model laden en de validatie uitvoeren met:

from ultralytics import YOLO

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

# Validate the model
metrics = model.val()
print(metrics.box.map)  # map50-95

Je kunt ook de opdrachtregelinterface (CLI) gebruiken:

yolo val model=yolov8n.pt

Voor verdere aanpassingen kun je verschillende argumenten aanpassen, zoals imgsz, batchen conf in de modi Python en CLI . Controleer de Argumenten voor YOLO Modelvalidatie sectie voor de volledige lijst met parameters.

Welke metriek kan ik halen uit YOLOv8 modelvalidatie?

YOLOv8 Modelvalidatie biedt een aantal belangrijke maatstaven om de prestaties van het model te beoordelen. Deze omvatten:

  • mAP50 (gemiddelde gemiddelde precisie bij IoU-drempel 0,5)
  • mAP75 (gemiddelde gemiddelde precisie bij IoU-drempel 0,75)
  • mAP50-95 (gemiddelde gemiddelde precisie over meerdere IoU-drempelwaarden van 0,5 tot 0,95)

Met de Python API heb je als volgt toegang tot deze statistieken:

metrics = model.val()  # assumes `model` has been loaded
print(metrics.box.map)  # mAP50-95
print(metrics.box.map50)  # mAP50
print(metrics.box.map75)  # mAP75
print(metrics.box.maps)  # list of mAP50-95 for each category

Voor een volledige prestatie-evaluatie is het cruciaal om al deze meetgegevens te bekijken. Raadpleeg voor meer informatie de Belangrijkste kenmerken van de modus Val.

Wat zijn de voordelen van het gebruik van Ultralytics YOLO voor validatie?

Het gebruik van Ultralytics YOLO voor validatie biedt verschillende voordelen:

  • Precisie: YOLOv8 biedt nauwkeurige prestatiecijfers, waaronder mAP50, mAP75 en mAP50-95.
  • Gemak: De modellen onthouden hun trainingsinstellingen, waardoor validatie eenvoudig is.
  • Flexibiliteit: Je kunt valideren tegen dezelfde of verschillende datasets en afbeeldingsformaten.
  • Hyperparameter afstellen: Validatiemetrieken helpen bij het afstemmen van modellen voor betere prestaties.

Deze voordelen zorgen ervoor dat je modellen grondig worden geƫvalueerd en kunnen worden geoptimaliseerd voor superieure resultaten. Lees meer over deze voordelen in het gedeelte Waarom valideren met Ultralytics YOLO .

Kan ik mijn YOLOv8 model valideren met een aangepaste dataset?

Ja, je kunt je YOLOv8 model valideren met een aangepaste dataset. Geef de data argument met het pad naar het configuratiebestand van je dataset. Dit bestand moet paden naar de validatiegegevens, klassennamen en andere relevante details bevatten.

Voorbeeld in Python:

from ultralytics import YOLO

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

# Validate with a custom dataset
metrics = model.val(data="path/to/your/custom_dataset.yaml")
print(metrics.box.map)  # map50-95

Voorbeeld met CLI:

yolo val model=yolov8n.pt data=path/to/your/custom_dataset.yaml

Voor meer aanpasbare opties tijdens de validatie, zie de sectie Voorbeeldvalidatie met argumenten.

Hoe sla ik validatieresultaten op in een JSON-bestand in YOLOv8?

Om de validatieresultaten op te slaan in een JSON-bestand, kun je de optie save_json argument naar True bij het uitvoeren van de validatie. Dit kan zowel in de Python API als op CLI.

Voorbeeld in Python:

from ultralytics import YOLO

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

# Save validation results to JSON
metrics = model.val(save_json=True)

Voorbeeld met CLI:

yolo val model=yolov8n.pt save_json=True

Deze functionaliteit is vooral handig voor verdere analyse of integratie met andere gereedschappen. Bekijk de Argumenten voor YOLO Modelvalidatie voor meer details.



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

Reacties