X
Ultralytics YOLOv8.2 FreigabeUltralytics YOLOv8.2 FreigabeUltralytics YOLOv8.2 Pfeil loslassen
Grüner Scheck
Link in die Zwischenablage kopiert

Aus der Ferne trainieren und überwachen YOLOv5 Mit ClearML

Entdecke unsere Partnerschaft mit ClearML für ein verbessertes YOLOv5 Erlebnis mit nahtloser ML-Integration, Experiment-Tracking und mehr.

Auf Ultralytics gehen wir kommerzielle Partnerschaften mit anderen Start-ups ein, die uns dabei helfen, die Forschung und Entwicklung unserer großartigen Open-Source-Tools wie YOLOv5 zu finanzieren, damit sie für alle kostenlos bleiben. Dieser Artikel kann Affiliate-Links zu diesen Partnern enthalten.

ClearML ist unser neuester Partner: eine Open-Source-Toolbox, mit der du Zeit sparen kannst.

Mit der Mission, die Einführung von ML zu beschleunigen, macht ClearML ML nahtlos in jedes Software- und Hardware-Produkt integrierbar, das es gibt.

Diese Integration macht es noch einfacher, ein Modell zu YOLOv5 Modell zu trainieren und es mit dem ClearML Experiment Manager automatisch zu verfolgen. Du kannst ganz einfach die Versionsnummer eines ClearML Datensatzes als Dateneingabe angeben, der dann automatisch zum Trainieren deines Modells verwendet wird.

Bring dein Experiment Tracking auf die nächste Stufe

  • Verfolge jeden YOLOv5 Trainingslauf im Experimentiermanager.
  • Versioniere deine benutzerdefinierten Trainingsdaten und greife mit dem integrierten ClearML Data Versioning Tool einfach darauf zu.
  • Finde die beste mAP mit ClearML Hyperparameter-Optimierung.
  • Verwandle dein neu trainiertes YOLOv5 Modell mit nur wenigen Befehlen in eine API mit ClearML Serving.

Es liegt an dir, wie viele dieser Tools du nutzen willst. Du kannst dich auf den Experimentiermanager beschränken oder sie alle zu einer beeindruckenden Pipeline zusammenfügen.

Dinge einrichten

Um den Überblick über deine Experimente und Daten zu behalten, muss ClearML mit einem Server kommunizieren. Dafür hast du zwei Möglichkeiten: Entweder du meldest dich kostenlos beim ClearML Hosted Service an oder du richtest deinen eigenen Server ein, siehe hier.

Sogar der Server ist quelloffen, wenn du also mit sensiblen Daten hantierst, ist das kein Problem!

  1. Installiere das clearml python Paket: pip install clearml
  2. Verbinde das ClearML SDK mit dem Server, indem du Zugangsdaten erstellst (gehe oben rechts zu Einstellungen -> Arbeitsbereich -> Neue Zugangsdaten erstellen), führe dann den folgenden Befehl aus und befolge die Anweisungen: clearml-init

Und voila! Du bist bereit, loszulegen...

Ausbildung YOLOv5 Mit ClearML

Um die ClearML Experimentverfolgung zu aktivieren, installiere einfach das ClearML pip-Paket.

Pip-Installation clearml

Dies ermöglicht die Integration mit dem YOLOv5 Trainingsskript. Von nun an wird jeder Trainingslauf vom ClearML experiment manager erfasst und gespeichert. Wenn du den Projekt- oder Aufgabennamen ändern möchtest, gehst du zu unserem benutzerdefinierten Logger, wo du ihn ändern kannst: utils/loggers/clearml/clearml_utils.py

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

Damit wirst du erfasst:

  • Quellcode + unbestätigte Änderungen
  • Installierte Pakete
  • (Hyper)Parameter
  • Modelldateien (benutze --save-period n, um alle n Epochen einen Checkpoint zu speichern)
  • Konsolenausgabe
  • Skalen (mAP_0.5, mAP_0.5:0.95, Präzision, Recall, Verluste, Lernraten, ...)
  • Allgemeine Informationen wie Maschinendetails, Laufzeit, Erstellungsdatum, etc.
  • Alle erstellten Diagramme wie das Label-Korrelogramm und die Konfusionsmatrix
  • Bilder mit Begrenzungsrahmen pro Epoche
  • Mosaik pro Epoche
  • Validierungsbilder pro Epoche

Gar nicht so schlecht! Jetzt können wir all diese Informationen in der ClearML UI visualisieren, um einen Überblick über unseren Trainingsfortschritt zu erhalten. Füge der Tabellenansicht benutzerdefinierte Spalten hinzu (wie z.B. mAP_0.5), damit du ganz einfach nach dem leistungsstärksten Modell sortieren kannst. Oder wähle mehrere Experimente aus und vergleiche sie direkt!

Es gibt sogar noch mehr, was wir mit all diesen Informationen machen können, z. B. Hyperparameter-Optimierung und Remote-Ausführung. Lies weiter, um zu erfahren, wie!

Verwaltung von Datensatzversionen

Es ist generell eine gute Idee, deine Daten getrennt von deinem Code zu versionieren, denn so ist es einfach, die neueste Version zu erhalten. Dieses Repository unterstützt die Angabe der Versions-ID eines Datensatzes und sorgt dafür, dass die Daten beschafft werden, wenn sie noch nicht vorhanden sind. Außerdem speichert dieser Workflow die ID des verwendeten Datensatzes als Teil der Aufgabenparameter, sodass du immer genau weißt, welche Daten in welchem Experiment verwendet wurden!

Daten, Ultralytics YOLOv5  und ClearML

Bereite deinen Datensatz vor

Das Repository YOLOv5 unterstützt eine Reihe verschiedener Datensätze, indem es YAML-Dateien mit deren Informationen verwendet. Standardmäßig werden die Datensätze in den Ordner ../datasets in Bezug auf den Stammordner des Repositorys heruntergeladen. Wenn du also den coco128-Datensatz über den Link in der YAML-Datei oder mit den von yolov5 bereitgestellten Skripten heruntergeladen hast, erhältst du diese Ordnerstruktur:

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

Aber das kann jeder Datensatz sein, den du möchtest. Du kannst auch deine eigenen verwenden, solange du dich an diese Ordnerstruktur hältst.

Als Nächstes legst du unter ⚠️copy die entsprechende YAML-Datei im Stammverzeichnis des Datasets folder⚠️ ab. Diese YAML-Dateien enthalten die Informationen, die ClearML benötigt, um das Dataset richtig zu nutzen. Du kannst sie natürlich auch selbst erstellen, folge einfach der Struktur der Beispiel-YAMLs.

Grundsätzlich brauchen wir die folgenden Schlüssel: path, train, test, val, nc, names.

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

Hochladen deines Datensatzes

Um diesen Datensatz als versionierten Datensatz in ClearML zu erhalten, gehst du zum Stammordner des Datensatzes und führst den folgenden Befehl aus:

cd coco128

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


Der Befehl clearml-data sync ist eigentlich ein Kurzbefehl. Du kannst diese Befehle auch nacheinander ausführen:

# Füge optional --parent hinzu, wenn du die Basis

# diese Version auf eine andere Datensatzversion, damit keine doppelten Dateien hochgeladen werden!

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

clearml-data add --files .

clearml-Daten schließen

Training mit einem ClearML Datensatz durchführen

Jetzt, wo du einen ClearML Datensatz hast, kannst du ihn ganz einfach verwenden, um eigene YOLOv5 Modelle zu trainieren.

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

Hyperparameter-Optimierung

Jetzt, da wir unsere Experimente und die Datenversion haben, ist es an der Zeit, einen Blick darauf zu werfen, was wir darauf aufbauen können!

Mithilfe der Code-Informationen, der installierten Pakete und der Umgebungsdetails ist das Experiment selbst nun vollständig reproduzierbar. Unter ClearML kannst du ein Experiment klonen und sogar seine Parameter ändern. Wir können es dann einfach mit diesen neuen Parametern automatisch wiederholen - das ist im Grunde das, was HPO macht!

Um die Hyperparameter-Optimierung lokal durchzuführen, haben wir ein vorgefertigtes Skript für dich bereitgestellt. Vergewissere dich einfach, dass eine Trainingsaufgabe mindestens einmal gelaufen ist, damit sie sich im ClearML Experimentmanager befindet. Wir klonen sie und ändern ihre Hyperparameter.

Du musst die ID dieser Vorlagenaufgabe in das Skript unter utils/loggers/clearml/hpo.py eintragen und es dann einfach ausführen. Du kannst task.execute_locally() in task.execute() ändern, um die Aufgabe in eine ClearML Warteschlange zu stellen und stattdessen einen entfernten Agenten mit ihr arbeiten zu lassen.

# Um optuna zu verwenden, installiere es zuerst, ansonsten kannst du den Optimierer einfach in RandomSearch ändern pip install optuna python utils/loggers/clearml/hpo.py

HPO, Ultralytics YOLOv5  und ClearML

Remote-Ausführung (Fortgeschrittene)

Running HPO locally is really handy, but what if we want to run our experiments on a remote machine instead? Maybe you have access to a very powerful GPU machine on-site or you have some budget to use cloud GPUs. This is where the ClearML Agent comes into play.

Schau dir an, was der Agent hier tun kann:

Kurz gesagt: Jedes Experiment, das vom Experiment-Manager verfolgt wird, enthält genügend Informationen, um es auf einem anderen Rechner zu reproduzieren (installierte Pakete, unbestätigte Änderungen usw.). Ein ClearML -Agent macht genau das: Er hört auf eine Warteschlange für eingehende Aufgaben und wenn er eine findet, erstellt er die Umgebung neu und führt sie aus, während er weiterhin Skalare, Plots usw. an den Experimentmanager meldet.

You can turn any machine (a cloud VM, a local GPU machine, your own laptop ... ) into a ClearML agent by simply running:

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

Klonen, Bearbeiten und Enqueuing

Wenn unser Agent läuft, können wir ihm etwas Arbeit abnehmen. Erinnerst du dich an den Abschnitt über HPO, in dem wir eine Aufgabe klonen und die Hyperparameter bearbeiten können? Das können wir auch über die Benutzeroberfläche tun!

🪄 Klone das Experiment, indem du es mit der rechten Maustaste anklickst

🎯 Bearbeite die Hyperparameter so, wie du sie haben möchtest

⏳ Stelle die Aufgabe in eine der Warteschlangen ein, indem du sie mit der rechten Maustaste anklickst.

Enqueue, Ultralytics YOLOv5  und ClearML

Eine Aufgabe aus der Ferne ausführen

Jetzt kannst du eine Aufgabe klonen, wie wir es oben erklärt haben, oder einfach dein aktuelles Skript markieren, indem du task.execute_remotely() hinzufügst. Bei der Ausführung wird es in eine Warteschlange gestellt, damit der Agent mit der Arbeit beginnen kann!

Um das Trainingsskript YOLOv5 aus der Ferne auszuführen, musst du nur diese Zeile in das Skript training.py einfügen, nachdem der Logger ClearML instanziiert worden ist:

# ... # 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 # ...

Wenn du das Trainingsskript nach dieser Änderung ausführst, führt python das Skript bis zu dieser Zeile aus. Danach wird der Code verpackt und stattdessen an die Warteschlange gesendet!

Automatisch skalierende Arbeiter

ClearML kommt auch mit automatischen Skalierern! Dieses Tool richtet automatisch neue Remote-Maschinen in der Cloud deiner Wahl ein (AWS, GCP, Azure) und verwandelt sie in ClearML Agenten für dich, sobald Experimente in der Warteschlange entdeckt werden. Sobald die Aufgaben abgearbeitet sind, schaltet der Auto-Scaler die Remote-Maschinen automatisch ab und du hörst auf zu zahlen! Sieh dir unten das Video zu den ersten Schritten des Auto-Scalers an.

Hast du Fragen? Tritt unserer Community bei und hinterlasse deine Frage noch heute!

Facebook-LogoTwitter-LogoLinkedIn-LogoKopier-Link-Symbol

Lies mehr in dieser Kategorie

Lass uns gemeinsam die Zukunft
der KI gestalten!

Beginne deine Reise in die Zukunft des maschinellen Lernens