Overslaan naar inhoud

Tips voor de beste trainingsresultaten

šŸ“š Deze gids legt uit hoe je de beste mAP- en trainingsresultaten kunt produceren met YOLOv5 šŸš€.

Meestal kun je goede resultaten behalen zonder de modellen of trainingsinstellingen aan te passen, mits je dataset voldoende groot en goed gelabeld is. Als je in eerste instantie geen goede resultaten krijgt, zijn er stappen die je kunt nemen om te verbeteren, maar we raden gebruikers altijd aan om eerst met alle standaardinstellingen te trainen voordat ze wijzigingen overwegen. Dit helpt bij het vaststellen van de basislijn voor prestaties en het vinden van gebieden die voor verbetering vatbaar zijn.

Als je vragen hebt over je trainingsresultaten we raden je aan zoveel mogelijk informatie te geven als je een nuttig antwoord verwacht, inclusief resultaatplots (trainverliezen, valverliezen, P, R, mAP), PR-curve, verwarringmatrix, trainingsmozaĆÆeken, testresultaten en afbeeldingen van datasetstatistieken zoals labels.png. Deze bevinden zich allemaal in je project/name map, meestal yolov5/runs/train/exp.

We hebben hieronder een volledige handleiding samengesteld voor gebruikers die de beste resultaten willen behalen met hun YOLOv5 trainingen.

Dataset

  • Afbeeldingen per klas. ā‰„ 1500 afbeeldingen per klas aanbevolen
  • Instanties per klasse. ā‰„ 10000 instanties (gelabelde objecten) per klasse aanbevolen
  • AfbeeldingsvariĆ«teit. Moet representatief zijn voor de ingezette omgeving. Voor gebruik in de echte wereld raden we beelden aan van verschillende tijden van de dag, verschillende seizoenen, verschillende weersomstandigheden, verschillende belichting, verschillende hoeken, verschillende bronnen (online geschraapt, lokaal verzameld, verschillende camera's) enz.
  • Consistentie van labels. Alle instanties van alle klassen in alle afbeeldingen moeten gelabeld worden. Gedeeltelijk labelen werkt niet.
  • Nauwkeurigheid etiketten. Labels moeten elk object nauw omsluiten. Er mag geen ruimte zijn tussen een object en zijn bounding box. Geen enkel object mag een label missen.
  • Labelverificatie. Bekijk train_batch*.jpg bij het starten van de trein om te controleren of je labels correct zijn, d.w.z. zie voorbeeld mozaĆÆek.
  • Achtergrondafbeeldingen. Achtergrondafbeeldingen zijn afbeeldingen zonder objecten die worden toegevoegd aan een dataset om fout-positieven (FP) te verminderen. We raden ongeveer 0-10% achtergrondafbeeldingen aan om FP's te helpen verminderen (COCO heeft 1000 achtergrondafbeeldingen als referentie, 1% van het totaal). Voor achtergrondafbeeldingen zijn geen labels nodig.

COCO-analyse

Modelkeuze

Grotere modellen zoals YOLOv5x en YOLOv5x6 zullen in bijna alle gevallen betere resultaten opleveren, maar hebben meer parameters, vereisen meer CUDA geheugen om te trainen en zijn langzamer om uit te voeren. Voor mobiele implementaties raden we YOLOv5s/m aan, voor cloud implementaties raden we YOLOv5l/x aan. Zie onze README tabel voor een volledige vergelijking van alle modellen.

YOLOv5 Modellen

  • Begin met voorgetrainde gewichten. Aanbevolen voor kleine tot middelgrote datasets (d.w.z. VOC, VisDrone, GlobalWheat). Geef de naam van het model door aan de --weights argument. Modellen worden automatisch gedownload van de nieuwste YOLOv5 release.
python train.py --data custom.yaml --weights yolov5s.pt
                                             yolov5m.pt
                                             yolov5l.pt
                                             yolov5x.pt
                                             custom_pretrained.pt
  • Begin bij nul. Aanbevolen voor grote datasets (d.w.z. COCO, Voorwerpen365, OIv6). Geef de modelarchitectuur YAML waarin je geĆÆnteresseerd bent door, samen met een lege --weights '' argument:
python train.py --data custom.yaml --weights '' --cfg yolov5s.yaml
                                                      yolov5m.yaml
                                                      yolov5l.yaml
                                                      yolov5x.yaml

Trainingsinstellingen

Voordat je iets wijzigt, train eerst met de standaardinstellingen om een basislijn voor de prestaties vast te stellen. Een volledige lijst van train.py instellingen is te vinden in de train.py argparser.

  • Tijdperken. Begin met 300 epochs. Als dit vroeg overfit, kun je het aantal epochs verminderen. Als overpassen niet optreedt na 300 epochs, train dan langer, d.w.z. 600, 1200 enz. epochs.
  • Afbeeldingsformaat. COCO traint met een native resolutie van --img 640vanwege het grote aantal kleine objecten in de dataset kan het echter nuttig zijn om te trainen met hogere resoluties zoals --img 1280. Als er veel kleine objecten zijn, zullen aangepaste datasets baat hebben bij training met de eigen resolutie of een hogere resolutie. De beste inferentieresultaten worden verkregen bij dezelfde --img als waarop de training is uitgevoerd, dus als je traint op --img 1280 moet je ook testen en detecteren op --img 1280.
  • Partijgrootte. Gebruik de grootste --batch-size die je hardware toelaat. Kleine batchgroottes produceren slechte batchnorm statistieken en moeten vermeden worden.
  • Hyperparameters. De standaard hyperparameters staan in hyp.scratch-laag.yaml. We raden je aan eerst te trainen met standaard hyperparameters voordat je overweegt ze te wijzigen. Over het algemeen zal het verhogen van augmentatie hyperparameters overfitting verminderen en vertragen, waardoor langere trainingen en een hogere uiteindelijke mAP mogelijk zijn. Vermindering van hyperparameters voor toename van verliescomponenten zoals hyp['obj'] zal helpen overpassen in die specifieke verliescomponenten te verminderen. Voor een geautomatiseerde methode om deze hyperparameters te optimaliseren, zie onze Hyperparameter evolutie tutorial.

Verder lezen

Als je meer wilt weten, is een goede plek om te beginnen Karpathy's 'Recept voor het trainen van neurale netwerken', met geweldige ideeƫn voor training die breed van toepassing zijn op alle ML-domeinen: https://karpathy.github.io/2019/04/25/recipe/

Veel succes šŸ€ en laat het ons weten als je nog andere vragen hebt!



Created 2023-11-12, Updated 2024-07-10
Authors: glenn-jocher (5), Burhan-Q (1)

Reacties