X
Ultralytics YOLOv8.2 LoslatenUltralytics YOLOv8.2 LoslatenUltralytics YOLOv8.2 Pijl loslaten
Groene cheque
Link gekopieerd naar klembord

Op afstand YOLOv5 trainen en bewaken met ClearML

Ontdek onze samenwerking met ClearML voor een verbeterde YOLOv5 ervaring met naadloze ML integratie, het volgen van experimenten en meer.

Facebook-logoTwitter-logoLinkedIn logoSymbool voor kopiëren-linken

Op Ultralytics werken we commercieel samen met andere startups om ons te helpen het onderzoek en de ontwikkeling van onze geweldige open-source tools te financieren, zoals YOLOv5, zodat ze gratis blijven voor iedereen. Dit artikel kan affiliate links naar die partners bevatten.

ClearML is onze nieuwste partner: een open-source toolbox die is ontworpen om je tijd te besparen.

Met de missie om ML-adoptie te versnellen, zorgt ClearML ervoor dat ML naadloos kan worden geïntegreerd in elk beschikbaar software- en hardwareproduct.

Deze integratie maakt het nog eenvoudiger om een YOLOv5 model te trainen en de ClearML experiment manager te gebruiken om het automatisch te volgen. Je kunt eenvoudig een ClearML dataset versie ID opgeven als de gegevensinvoer en deze zal automatisch worden gebruikt om je model te trainen.

Breng het volgen van je experimenten naar een hoger niveau

  • Volg elke YOLOv5 trainingsrun in de experimentmanager.
  • Versieer en krijg eenvoudig toegang tot je aangepaste trainingsgegevens met de geïntegreerde ClearML Data Versioning Tool.
  • Krijg het allerbeste mAP met ClearML Hyperparameter Optimalisatie.
  • Verander je pas getrainde YOLOv5 model in een API met slechts een paar commando's met ClearML Serving.

Het is aan jou hoeveel van deze tools je wilt gebruiken, je kunt het bij de experimentmanager houden of ze allemaal aan elkaar koppelen tot een indrukwekkende pijplijn.

Dingen opzetten

Om je experimenten en gegevens bij te houden, moet ClearML communiceren met een server. Hiervoor heb je twee opties: je gratis aanmelden bij de ClearML Hosted Service of je eigen server opzetten, zie hier.

Zelfs de server is open-source, dus als je te maken hebt met gevoelige gegevens, is dat geen probleem!

  1. Installeer het pakket clearml python : pip install clearml
  2. Verbind de ClearML SDK met de server door referenties aan te maken (ga rechtsboven naar Instellingen -> Werkruimte -> Nieuwe referenties aanmaken), voer dan de onderstaande opdracht uit en volg de instructies: clearml-init

En voila! Je bent klaar om te beginnen...

Training YOLOv5 Met ClearML

Om ClearML experiment tracking in te schakelen, installeer je eenvoudig het pip-pakket ClearML .

pip installeren clearml

Dit maakt integratie met het YOLOv5 trainingsscript mogelijk. Elke trainingsrun wordt vanaf nu vastgelegd en opgeslagen door de ClearML experiment manager. Als je de project_naam of taak_naam wilt veranderen, ga dan naar onze aangepaste logger, waar je het kunt veranderen: utils/loggers/clearml/clearml_utils.py

python train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --gewichten yolov5s.pt --cache

Dit legt vast:

  • Broncode + niet-vastgelegde wijzigingen
  • Geïnstalleerde pakketten
  • (Hyper)parameters
  • Modelbestanden (gebruik --save-period n om elke n epochs een controlepunt op te slaan)
  • Uitgang console
  • Scalars (mAP_0.5, mAP_0.5:0.95, precisie, recall, verliezen, leerpercentages, ...)
  • Algemene informatie zoals machinedetails, runtime, aanmaakdatum, enz.
  • Alle geproduceerde plots zoals labelcorrelogram en verwarringmatrix
  • Afbeeldingen met bounding boxes per tijdvak
  • Mozaïek per tijdperk
  • Validatiebeelden per epoch

Niet slecht! Nu kunnen we al deze informatie visualiseren in de ClearML UI om een overzicht te krijgen van onze trainingsvoortgang. Voeg aangepaste kolommen toe aan de tabelweergave (zoals bijvoorbeeld mAP_0.5) zodat je eenvoudig kunt sorteren op het best presterende model. Of selecteer meerdere experimenten en vergelijk ze direct!

Er is nog meer dat we met al deze informatie kunnen doen, zoals hyperparameter optimalisatie en uitvoering op afstand, dus blijf lezen om te leren hoe!

Versiebeheer datasets

Het is over het algemeen een goed idee om je gegevens apart van je code te versiebeheer en het maakt het ook gemakkelijk om de laatste versie te verkrijgen. Deze repository ondersteunt het leveren van een dataset versie ID en zal ervoor zorgen dat de data wordt verkregen als die er nog niet is. Daarnaast slaat deze workflow ook de gebruikte dataset ID op als onderdeel van de taakparameters, zodat je altijd zeker weet welke gegevens in welk experiment zijn gebruikt!

Gegevens, Ultralytics YOLOv5  en ClearML

Je dataset voorbereiden

Het YOLOv5 archief ondersteunt een aantal verschillende datasets door gebruik te maken van YAML bestanden die hun informatie bevatten. Standaard worden datasets gedownload naar de map ../datasets ten opzichte van de hoofdmap van het archief. Dus als je de coco128 dataset hebt gedownload met de link in de YAML of met de scripts van yolov5, dan krijg je deze mapstructuur:

..
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ LICENSE
|_ README.txt

Maar dit kan elke dataset zijn die je wilt. Voel je vrij om je eigen dataset te gebruiken, zolang je je maar aan deze mappenstructuur houdt.

Vervolgens ⚠️copy je het bijbehorende YAML-bestand naar de root van de dataset folder⚠️. Deze YAML-bestanden bevatten de informatie die ClearML nodig heeft om de dataset goed te kunnen gebruiken. Je kunt dit natuurlijk ook zelf maken, volg gewoon de structuur van de voorbeeld YAML's.

In principe hebben we de volgende sleutels nodig: path, train, test, val, nc, names.

..
|_ yolov5
|_ datasets
    |_ coco128
        |_ images
        |_ labels
        |_ coco128.yaml # <---- HERE!
        |_ LICENSE
        |_ README.txt

Je dataset uploaden

Om deze dataset als een geversioneerde dataset in ClearML te krijgen, ga je naar de hoofdmap van de dataset en voer je het volgende commando uit:

cd coco128

clearml-data sync --project YOLOv5 --name coco128 --folder .


De opdracht clearml-data sync is eigenlijk een kort commando. Je kunt deze commando's ook achter elkaar uitvoeren:

# Voeg optioneel --parent toe als je het wilt baseren op

# deze versie op een andere datasetversie, zodat er geen dubbele bestanden worden geüpload!

clearml-data create --name coco128 -project YOLOv5/p>

clearml-data add --files .

clearml-gegevens sluiten

Training uitvoeren met een ClearML dataset

Nu je een ClearML dataset hebt, kun je deze heel eenvoudig gebruiken om aangepaste YOLOv5 modellen te trainen.

python train.py --img 640 --batch 16 --epochs 3 --data clearml:// --gewichten yolov5s.pt --cache

Hyperparameter optimalisatie

Nu we onze experimenten en gegevensversie hebben, is het tijd om te kijken wat we erop kunnen bouwen!

Met behulp van de code-informatie, geïnstalleerde pakketten en omgevingsdetails is het experiment zelf nu volledig reproduceerbaar. Met ClearML kun je zelfs een experiment klonen en de parameters veranderen. We kunnen het dan gewoon automatisch opnieuw uitvoeren met deze nieuwe parameters, dit is in feite wat HPO doet!

Om hyperparameter optimalisatie lokaal uit te voeren, hebben we een kant-en-klaar script voor je bijgevoegd. Zorg ervoor dat een trainingstaak ten minste één keer is uitgevoerd, zodat deze in de ClearML experimentmanager staat. We zullen deze in wezen klonen en de hyperparameters ervan wijzigen.

Je moet de ID van deze sjabloontaak invullen in het script dat je kunt vinden op utils/loggers/clearml/hpo.py en het dan gewoon uitvoeren. Je kunt task.execute_locally() veranderen in task.execute() om hem in een ClearML wachtrij te zetten en er een agent op afstand aan te laten werken.

# Om optuna te gebruiken, installeer je het eerst, anders kun je de optimizer veranderen in gewoon RandomSearch pip install optuna python utils/loggers/clearml/hpo.py

HPO, Ultralytics YOLOv5  en ClearML

Executie op afstand (geavanceerd)

HPO lokaal uitvoeren is erg handig, maar wat als we onze experimenten op een externe machine willen uitvoeren? Misschien heb je toegang tot een zeer krachtige GPU machine op locatie of heb je wat budget om cloud GPU's te gebruiken. Dit is waar de ClearML Agent om de hoek komt kijken.

Bekijk hier wat de agent kan doen:

In het kort: elk experiment dat wordt bijgehouden door de experimentmanager bevat genoeg informatie om het te reproduceren op een andere machine (geïnstalleerde pakketten, niet-vastgelegde wijzigingen, enzovoort). Dus een ClearML agent doet precies dat: hij luistert naar een wachtrij voor binnenkomende taken en als hij er een vindt, recreëert hij de omgeving en voert die uit terwijl hij nog steeds scalars, plots enz. rapporteert aan de experimentmanager.

Je kunt elke machine (een cloud VM, een lokale GPU machine, je eigen laptop ... ) veranderen in een ClearML agent door deze simpelweg uit te voeren:

clearml-agent daemon --queue [--docker]

Klonen, bewerken en enqueuing

Nu onze agent draait, kunnen we hem aan het werk zetten. Weet je nog uit het HPO gedeelte dat we een taak kunnen klonen en de hyperparameters kunnen bewerken? Dat kunnen we ook vanuit de interface doen!

Kloon het experiment door er met de rechtermuisknop op te klikken

🎯 Bewerk de hyperparameters naar wat je wilt dat ze zijn

⏳ Zet de taak in een wachtrij door er met de rechtermuisknop op te klikken

Enqueue, Ultralytics YOLOv5  en ClearML

Een taak op afstand uitvoeren

Nu kun je een taak klonen zoals we hierboven hebben uitgelegd, of gewoon je huidige script markeren door task.execute_remotely() toe te voegen en bij uitvoering wordt het in een wachtrij geplaatst, zodat de agent ermee aan de slag kan!

Om het YOLOv5 trainingsscript op afstand uit te voeren, hoef je alleen maar deze regel toe te voegen aan het training.py script nadat de ClearML logger is geïnstantieerd:

# ... # Loggers data_dict = None if RANK in {-1, 0}: loggers = Loggers(save_dir, weights, opt, hyp, LOGGER) # loggers instance if loggers.clearml: loggers.clearml.task.execute_remotely(queue='my_queue') # <------ ADD THIS LINE # Data_dict is either None is user did not choose for ClearML dataset or is filled in by ClearML data_dict = loggers.clearml.data_dict # ...

Bij het uitvoeren van het trainingsscript na deze wijziging, zal python het script tot aan die regel uitvoeren, waarna het de code zal verpakken en in plaats daarvan naar de wachtrij zal sturen!

Werkers automatisch schalen

ClearML komt ook met auto scalers! Deze tool zal automatisch nieuwe externe machines opstarten in de cloud van jouw keuze (AWS, GCP, Azure) en ze voor jou veranderen in ClearML agents wanneer er experimenten in de wachtrij worden gedetecteerd. Zodra de taken zijn verwerkt, sluit de auto scaler automatisch de externe machines en stop je met betalen! Bekijk de video over de auto scalers hieronder.

Heb je nog vragen? Word lid van onze community en laat vandaag nog je vraag achter!

Laten we samen bouwen aan de toekomst
van AI!

Begin je reis met de toekomst van machine learning

Lees meer in deze categorie