Zum Inhalt springen

Eine Schritt-für-Schritt-Anleitung zum Trainieren von YOLO11-Modellen mit IBM Watsonx

Heutzutage werden skalierbare Computer Vision-Lösungen immer häufiger und verändern die Art und Weise, wie wir mit visuellen Daten umgehen. Ein gutes Beispiel ist IBM Watsonx, eine fortschrittliche KI- und Datenplattform, die die Entwicklung, Bereitstellung und Verwaltung von KI-Modellen vereinfacht. Sie bietet eine komplette Suite für den gesamten KI-Lebenszyklus und eine nahtlose Integration mit IBM Cloud Services.

Sie können Ultralytics YOLO11 Modelle mit IBM Watsonx trainieren. Dies ist eine gute Option für Unternehmen, die an effizientem Modelltraining, Feinabstimmung für spezifische Aufgaben und der Verbesserung der Modellleistung mit robusten Tools und einem benutzerfreundlichen Setup interessiert sind. In dieser Anleitung führen wir Sie durch den Prozess des YOLO11-Trainings mit IBM Watsonx und behandeln alles von der Einrichtung Ihrer Umgebung bis zur Bewertung Ihrer trainierten Modelle. Los geht's!

Was ist IBM Watsonx?

Watsonx ist die Cloud-basierte Plattform von IBM, die für kommerzielle Zwecke entwickelt wurde Generative KI und wissenschaftliche Daten. Die drei Komponenten von IBM Watsonx - watsonx.ai, watsonx.dataund watsonx.governance - zusammenkommen, um eine durchgängige, vertrauenswürdige KI-Plattform zu schaffen, die KI-Projekte zur Lösung von Geschäftsproblemen beschleunigen kann. Sie bietet leistungsstarke Tools für den Aufbau, das Training und Bereitstellung von Machine-Learning-Modellen und erleichtert die Verbindung mit verschiedenen Datenquellen.

Überblick über IBM Watsonx

Seine benutzerfreundliche Oberfläche und die Möglichkeiten zur Zusammenarbeit rationalisieren den Entwicklungsprozess und helfen bei der effizienten Modellverwaltung und -bereitstellung. Ob für Computer Vision, Predictive Analytics, Natural Language Processing oder andere KI-Anwendungen, IBM Watsonx bietet die Werkzeuge und die Unterstützung, die erforderlich sind, um Innovationen voranzutreiben.

Hauptmerkmale von IBM Watsonx

IBM Watsonx besteht aus drei Hauptkomponenten: watsonx.ai, watsonx.dataund watsonx.governance. Jede Komponente bietet Funktionen, die auf verschiedene Aspekte von KI und Datenmanagement zugeschnitten sind. Werfen wir einen genaueren Blick darauf.

Watsonx.ai

Watsonx.ai bietet leistungsstarke Tools für die KI-Entwicklung und ermöglicht den Zugriff auf von IBM unterstützte, benutzerdefinierte Modelle, Drittanbietermodelle wie Llama 3 und IBMs eigene Granite-Modelle. Es umfasst das Prompt Lab zum Experimentieren mit KI-Prompts, das Tuning Studio zur Verbesserung der Modellleistung mit beschrifteten Daten und die Flows Engine zur Vereinfachung der generativen KI-Anwendungsentwicklung. Darüber hinaus bietet es umfassende Tools zur Automatisierung des KI-Modelllebenszyklus und zur Verbindung mit verschiedenen APIs und Bibliotheken.

Watsonx.data

Watsonx.data unterstützt sowohl Cloud- als auch On-Premises-Bereitstellungen durch die IBM Storage Fusion HCI-Integration. Die benutzerfreundliche Konsole bietet zentralen Zugriff auf Daten in verschiedenen Umgebungen und erleichtert die Datenerkundung mit gängigem SQL. Es optimiert Workloads mit effizienten Query Engines wie Presto und Spark, beschleunigt Dateneinblicke mit einer KI-gestützten semantischen Schicht, umfasst eine Vektordatenbank für KI-Relevanz und unterstützt offene Datenformate für die einfache gemeinsame Nutzung von Analyse- und KI-Daten.

Watsonx.governance

Watsonx.governance vereinfacht die Compliance durch die automatische Identifizierung regulatorischer Änderungen und die Durchsetzung von Richtlinien. Es verknüpft Anforderungen mit internen Risikodaten und stellt aktuelle KI-Factsheets bereit. Die Plattform hilft bei der Risikoverwaltung mit Warnmeldungen und Tools zur Erkennung von Problemen wie Bias und Drift. Es automatisiert auch die Überwachung und Dokumentation des KI-Lebenszyklus, organisiert die KI-Entwicklung mit einem Modellinventar und verbessert die Zusammenarbeit mit benutzerfreundlichen Dashboards und Reporting-Tools.

So trainieren Sie YOLO11 mit IBM Watsonx

Sie können IBM Watsonx verwenden, um Ihren YOLO11-Modelltrainingsworkflow zu beschleunigen.

Voraussetzungen

Sie benötigen ein IBM Cloud-Konto, um ein watsonx.ai-Projekt zu erstellen, und Sie benötigen außerdem ein Kaggle-Konto, um den Datensatz zu laden.

Schritt 1: Richten Sie Ihre Umgebung ein

Zuerst müssen Sie ein IBM-Konto einrichten, um ein Jupyter Notebook zu verwenden. Melden Sie sich mit Ihrem IBM Cloud-Konto bei watsonx.ai an.

Erstellen Sie dann ein watsonx.ai-Projekt und ein Jupyter Notebook.

Sobald Sie dies getan haben, öffnet sich eine Notebook-Umgebung, in der Sie Ihren Datensatz laden können. Sie können den Code aus diesem Tutorial verwenden, um eine einfache Trainingsaufgabe für ein Objekterkennungsmodell zu bewältigen.

Schritt 2: Installieren und Importieren relevanter Bibliotheken

Als Nächstes können Sie die notwendigen Python-Bibliotheken installieren und importieren.

Installation

# Install the required packages
pip install torch torchvision torchaudio
pip install opencv-contrib-python-headless
pip install ultralytics==8.0.196

Detaillierte Anweisungen und Best Practices zum Installationsprozess finden Sie in unserem Ultralytics Installationshandbuch. Wenn Sie bei der Installation der erforderlichen Pakete für YOLO11 auf Schwierigkeiten stoßen, konsultieren Sie unser Handbuch zu häufigen Problemen für Lösungen und Tipps.

Anschließend können Sie die benötigten Pakete importieren.

Relevante Bibliotheken importieren

# Import ultralytics
import ultralytics

ultralytics.checks()

# Import packages to retrieve and display image files

Schritt 3: Die Daten laden

Für dieses Tutorial verwenden wir einen auf Kaggle verfügbaren Marine Litter Datensatz. Mit diesem Datensatz werden wir ein benutzerdefiniertes YOLO11-Modell trainieren, um Müll und biologische Objekte in Unterwasserbildern zu erkennen und zu klassifizieren.

Wir können den Datensatz mit der Kaggle-API direkt in das Notebook laden. Erstellen Sie zunächst ein kostenloses Kaggle-Konto. Sobald Sie ein Konto erstellt haben, müssen Sie einen API-Schlüssel generieren. Anweisungen zum Generieren Ihres Schlüssels finden Sie in der Kaggle-API-Dokumentation unter dem Abschnitt "API-Anmeldeinformationen".

Kopieren Sie Ihren Kaggle-Benutzernamen und API-Schlüssel in den folgenden Code. Führen Sie dann den Code aus, um die API zu installieren und den Datensatz in Watsonx zu laden.

Installation

# Install kaggle
pip install kaggle

Nach der Installation von Kaggle können wir den Datensatz in Watsonx laden.

Daten laden

# Replace "username" string with your username
os.environ["KAGGLE_USERNAME"] = "username"
# Replace "apiKey" string with your key
os.environ["KAGGLE_KEY"] = "apiKey"

# Load dataset
os.system("kaggle datasets download atiqishrak/trash-dataset-icra19 --unzip")

# Store working directory path as work_dir
work_dir = os.getcwd()

# Print work_dir path
print(os.getcwd())

# Print work_dir contents
print(os.listdir(f"{work_dir}"))

# Print trash_ICRA19 subdirectory contents
print(os.listdir(f"{work_dir}/trash_ICRA19"))

Nach dem Laden des Datensatzes haben wir unser Arbeitsverzeichnis ausgedruckt und gespeichert. Wir haben auch den Inhalt unseres Arbeitsverzeichnisses ausgedruckt, um zu bestätigen, dass der Datensatz "trash_ICRA19" ordnungsgemäß geladen wurde.

Wenn Sie "trash_ICRA19" im Verzeichnisinhalt sehen, wurde es erfolgreich geladen. Sie sollten drei Dateien/Ordner sehen: a config.yaml Datei, eine videos_for_testing Verzeichnis und ein dataset Verzeichnis. Wir werden das videos_for_testing Verzeichnis. Sie können es gerne löschen.

Wir werden die folgenden Schritte durchführen: config.yaml Datei und den Inhalt des Datensatzverzeichnisses, um unser Modell zu trainieren Objekterkennung durchzuführen Modell. Hier ist ein Beispielbild aus unserem Datensatz für Meeresmüll.

Meeresmüll mit Bounding Box

Schritt 4: Die Daten vorverarbeiten

Glücklicherweise sind alle Labels im Datensatz für Meeresmüll bereits als YOLO .txt-Dateien formatiert. Wir müssen jedoch die Struktur der Bild- und Label-Verzeichnisse neu anordnen, um unserem Modell die Verarbeitung von Bild und Labels zu erleichtern. Im Moment folgt unser geladenes Datensatzverzeichnis dieser Struktur:

Geladenes Datensatzverzeichnis

YOLO-Modelle benötigen standardmäßig separate Bilder und Beschriftungen in Unterverzeichnissen innerhalb der Train/Val/Test-Aufteilung. Wir müssen das Verzeichnis in die folgende Struktur umorganisieren:

YOLO-Verzeichnisstruktur

Um das Datenverzeichnis neu zu organisieren, können wir das folgende Skript ausführen:

Daten vorverarbeiten

# Function to reorganize dir
def organize_files(directory):
    for subdir in ["train", "test", "val"]:
        subdir_path = os.path.join(directory, subdir)
        if not os.path.exists(subdir_path):
            continue

        images_dir = os.path.join(subdir_path, "images")
        labels_dir = os.path.join(subdir_path, "labels")

        # Create image and label subdirs if non-existent
        os.makedirs(images_dir, exist_ok=True)
        os.makedirs(labels_dir, exist_ok=True)

        # Move images and labels to respective subdirs
        for filename in os.listdir(subdir_path):
            if filename.endswith(".txt"):
                shutil.move(os.path.join(subdir_path, filename), os.path.join(labels_dir, filename))
            elif filename.endswith(".jpg") or filename.endswith(".png") or filename.endswith(".jpeg"):
                shutil.move(os.path.join(subdir_path, filename), os.path.join(images_dir, filename))
            # Delete .xml files
            elif filename.endswith(".xml"):
                os.remove(os.path.join(subdir_path, filename))


if __name__ == "__main__":
    directory = f"{work_dir}/trash_ICRA19/dataset"
    organize_files(directory)

Als Nächstes müssen wir die .yaml-Datei für das Dataset ändern. Dies ist das Setup, das wir in unserer .yaml-Datei verwenden werden. Klassen-ID-Nummern beginnen bei 0:

path: /path/to/dataset/directory # root directory for dataset
train: train/images # train images subdirectory
val: train/images # validation images subdirectory
test: test/images # test images subdirectory

# Classes
names:
    0: plastic
    1: bio
    2: rov

Führen Sie das folgende Skript aus, um den aktuellen Inhalt von zu löschen config.yaml und ersetzen Sie diese durch die obigen Inhalte, die unsere neue Datenverzeichnisstruktur widerspiegeln. Achten Sie darauf, den work_dir-Abschnitt des Stammverzeichnispfads in Zeile 4 durch Ihren eigenen Arbeitspfad zu ersetzen, den wir zuvor abgerufen haben. Lassen Sie die Unterverzeichnisdefinitionen train, val und test unverändert. Ändern Sie auch {work_dir} in Zeile 23 des Codes nicht.

Bearbeiten Sie die .yaml-Datei

# Contents of new config.yaml file
def update_yaml_file(file_path):
    data = {
        "path": "work_dir/trash_ICRA19/dataset",
        "train": "train/images",
        "val": "train/images",
        "test": "test/images",
        "names": {0: "plastic", 1: "bio", 2: "rov"},
    }

    # Ensures the "names" list appears after the sub/directories
    names_data = data.pop("names")
    with open(file_path, "w") as yaml_file:
        yaml.dump(data, yaml_file)
        yaml_file.write("\n")
        yaml.dump({"names": names_data}, yaml_file)


if __name__ == "__main__":
    file_path = f"{work_dir}/trash_ICRA19/config.yaml"  # .yaml file path
    update_yaml_file(file_path)
    print(f"{file_path} updated successfully.")

Schritt 5: Das YOLO11-Modell trainieren

Führen Sie den folgenden Befehlszeilen-Code aus, um ein vortrainiertes Standard-YOLO11-Modell feinabzustimmen.

Trainieren Sie das YOLO11-Modell

!yolo task=detect mode=train data={work_dir}/trash_ICRA19/config.yaml model=yolo11n.pt epochs=2 batch=32 lr0=.04 plots=True

Hier ist eine genauere Betrachtung der Parameter im Modelltrainingsbefehl:

  • Task: Sie legt die Computer Vision-Aufgabe fest, für die Sie das angegebene YOLO-Modell und den Datensatz verwenden.
  • Modus: Bezeichnet den Zweck, für den Sie das angegebene Modell und die Daten laden. Da wir ein Modell trainieren, ist es auf "train" gesetzt. Später, wenn wir die Leistung unseres Modells testen, werden wir es auf "predict" setzen.
  • Epochen: Dies begrenzt die Anzahl der Durchläufe, die YOLO11 durch unseren gesamten Datensatz durchführt.
  • Batch: Der numerische Wert legt die Trainings-Batch-Größen fest. Batches sind die Anzahl der Bilder, die ein Modell verarbeitet, bevor es seine Parameter aktualisiert.
  • lr0: Gibt die anfängliche Lernrate des Modells an.
  • plots: Weist YOLO an, Diagramme unserer Modelltrainings- und Bewertungsmetriken zu erstellen und zu speichern.

Für ein detailliertes Verständnis des Modelltrainingsprozesses und der Best Practices lesen Sie den YOLO11 Modelltrainingsleitfaden. Dieser Leitfaden hilft Ihnen, das Beste aus Ihren Experimenten herauszuholen und sicherzustellen, dass Sie YOLO11 effektiv einsetzen.

Schritt 6: Das Modell testen

Wir können jetzt eine Inferenz ausführen, um die Leistung unseres feinabgestimmten Modells zu testen:

Testen des YOLO11-Modells

!yolo task=detect mode=predict source={work_dir}/trash_ICRA19/dataset/test/images model={work_dir}/runs/detect/train/weights/best.pt conf=0.5 iou=.5 save=True save_txt=True

Dieses kurze Skript generiert vorhergesagte Labels für jedes Bild in unserem Testdatensatz sowie neue Ausgabebilddateien, die den vorhergesagten Begrenzungsrahmen über dem Originalbild überlagern.

Vorhergesagte .txt-Labels für jedes Bild werden über den save_txt=True Argument und die Ausgabebilder mit Begrenzungsrahmen-Overlays werden durch den folgenden Code generiert save=True Argument.
Der Parameter conf=0.5 weist das Modell an, alle Vorhersagen mit einem Konfidenzniveau von weniger als 50 % zu ignorieren.

Abschließend iou=.5 weist das Modell an, Boxen in derselben Klasse mit einer Überlappung von 50 % oder mehr zu ignorieren. Es hilft, potenziell doppelte Boxen zu reduzieren, die für dasselbe Objekt generiert werden.
Wir können die Bilder mit den vorhergesagten Begrenzungsrahmen-Overlays laden, um zu sehen, wie unser Modell auf einer Handvoll Bilder funktioniert.

Vorhersagen anzeigen

# Show the first ten images from the preceding prediction task
for pred_dir in glob.glob(f"{work_dir}/runs/detect/predict/*.jpg")[:10]:
    img = Image.open(pred_dir)
    display(img)

Der obige Code zeigt zehn Bilder aus dem Testdatensatz mit ihren vorhergesagten Begrenzungsrahmen, zusammen mit Klassennamen-Labels und Konfidenzniveaus.

Schritt 7: Das Modell evaluieren

Wir können Visualisierungen der Präzision und der Wiedergabegenauigkeit des Modells für jede Klasse erstellen. Diese Visualisierungen werden im Home-Verzeichnis unter dem Ordner "train" gespeichert. Die Präzisionsbewertung wird in der P_curve.png angezeigt:

Präzisions-Konfidenz-Kurve

Das Diagramm zeigt einen exponentiellen Anstieg der Präzision mit zunehmendem Konfidenzniveau des Modells für Vorhersagen. Die Modellpräzision hat sich jedoch nach zwei Epochen noch nicht auf einem bestimmten Konfidenzniveau eingependelt.

Der Recall-Graph (R_curve.png) zeigt einen umgekehrten Trend:

Recall-Konfidenzkurve

Anders als die Präzision bewegt sich die Trefferquote in die entgegengesetzte Richtung und zeigt eine höhere Trefferquote bei Instanzen mit geringerem Vertrauen und eine niedrigere Trefferquote bei Instanzen mit höherem Vertrauen. Dies ist ein treffendes Beispiel für den Kompromiss zwischen Präzision und Trefferquote bei Klassifizierungsmodellen.

Schritt 8: Berechnung der Intersection Over Union

Sie können die Genauigkeit der Vorhersage messen, indem Sie die IoU zwischen einem vorhergesagten Begrenzungsrahmen und einem Ground-Truth-Begrenzungsrahmen für dasselbe Objekt berechnen. Weitere Informationen finden Sie im IBM-Tutorial zum Training von YOLO11.

Zusammenfassung

Wir haben die wichtigsten Funktionen von IBM Watsonx untersucht und erfahren, wie man ein YOLO11-Modell mit IBM Watsonx trainiert. Wir haben auch gesehen, wie IBM Watsonx Ihre KI-Workflows mit fortschrittlichen Tools für Modellentwicklung, Datenmanagement und Compliance verbessern kann.

Weitere Informationen zur Verwendung finden Sie in der offiziellen IBM Watsonx-Dokumentation.

Besuchen Sie auch die Ultralytics-Integrationsleitfadenseite, um mehr über verschiedene spannende Integrationen zu erfahren.

FAQ

Wie trainiere ich ein YOLO11-Modell mit IBM Watsonx?

Um ein YOLO11-Modell mit IBM Watsonx zu trainieren, führen Sie die folgenden Schritte aus:

  1. Richten Sie Ihre Umgebung ein: Erstellen Sie ein IBM Cloud-Konto und richten Sie ein Watsonx.ai-Projekt ein. Verwenden Sie ein Jupyter Notebook für Ihre Programmierumgebung.
  2. Bibliotheken installieren: Installieren Sie die erforderlichen Bibliotheken wie torch, opencvund ultralytics.
  3. Daten laden: Verwenden Sie die Kaggle API, um Ihren Datensatz in Watsonx zu laden.
  4. Datenvorverarbeitung: Organisieren Sie Ihren Datensatz in der erforderlichen Verzeichnisstruktur und aktualisieren Sie die .yaml Konfigurationsdatei.
  5. Modell trainieren: Verwenden Sie die YOLO-Befehlszeilenschnittstelle, um Ihr Modell mit bestimmten Parametern wie zu trainieren epochs, batch sizeund learning rate.
  6. Testen und Evaluieren: Führen Sie Inferenz aus, um das Modell zu testen und seine Leistung anhand von Metriken wie Präzision und Recall zu bewerten.

Detaillierte Anweisungen finden Sie in unserem YOLO11 Modelltrainingsleitfaden.

Was sind die wichtigsten Funktionen von IBM Watsonx für das Training von KI-Modellen?

IBM Watsonx bietet mehrere Schlüsselfunktionen für das Training von KI-Modellen:

  • Watsonx.ai: Bietet Tools für die KI-Entwicklung, einschließlich des Zugriffs auf von IBM unterstützte benutzerdefinierte Modelle und Modelle von Drittanbietern wie Llama 3. Es umfasst Prompt Lab, Tuning Studio und Flows Engine für ein umfassendes KI-Lifecycle-Management.
  • Watsonx.data: Unterstützt Cloud- und On-Premises-Bereitstellungen und bietet zentralisierten Datenzugriff, effiziente Query Engines wie Presto und Spark sowie eine KI-gestützte semantische Schicht.
  • Watsonx.governance: Automatisiert die Compliance, verwaltet Risiken mit Warnmeldungen und bietet Tools zur Erkennung von Problemen wie Bias und Drift. Es umfasst auch Dashboards und Reporting-Tools für die Zusammenarbeit.

Weitere Informationen finden Sie in der offiziellen IBM Watsonx-Dokumentation.

Warum sollte ich IBM Watsonx für das Training von Ultralytics YOLO11-Modellen verwenden?

IBM Watsonx ist eine ausgezeichnete Wahl für das Training von Ultralytics YOLO11-Modellen, da es eine umfassende Suite von Tools bietet, die den KI-Lebenszyklus optimieren. Zu den wichtigsten Vorteilen gehören:

  • Skalierbarkeit: Skalieren Sie Ihr Modelltraining einfach mit IBM Cloud-Services.
  • Integration: Nahtlose Integration mit verschiedenen Datenquellen und APIs.
  • Benutzerfreundliche Oberfläche: Vereinfacht den Entwicklungsprozess durch eine kollaborative und intuitive Oberfläche.
  • Erweiterte Tools: Zugriff auf leistungsstarke Tools wie Prompt Lab, Tuning Studio und Flows Engine zur Verbesserung der Modellleistung.

Erfahren Sie mehr über Ultralytics YOLO11 und wie Sie Modelle mit IBM Watsonx in unserer Integrationsanleitung trainieren können.

Wie kann ich meinen Datensatz für das YOLO11-Training auf IBM Watsonx vorbereiten?

So bereiten Sie Ihren Datensatz für das YOLO11-Training auf IBM Watsonx vor:

  1. Verzeichnisse organisieren: Stellen Sie sicher, dass Ihr Datensatz der YOLO-Verzeichnisstruktur folgt, mit separaten Unterverzeichnissen für Bilder und Beschriftungen innerhalb der Train/Val/Test-Aufteilung.
  2. .yaml-Datei aktualisieren: Ändern Sie die .yaml Konfigurationsdatei, um die neue Verzeichnisstruktur und Klassennamen widerzuspiegeln.
  3. Preprocessing-Skript ausführen: Verwenden Sie ein Python-Skript, um Ihren Datensatz neu zu organisieren und die .yaml Datei entsprechend an.

Hier ist ein Beispielskript, um Ihren Datensatz zu organisieren:

import os
import shutil


def organize_files(directory):
    for subdir in ["train", "test", "val"]:
        subdir_path = os.path.join(directory, subdir)
        if not os.path.exists(subdir_path):
            continue

        images_dir = os.path.join(subdir_path, "images")
        labels_dir = os.path.join(subdir_path, "labels")

        os.makedirs(images_dir, exist_ok=True)
        os.makedirs(labels_dir, exist_ok=True)

        for filename in os.listdir(subdir_path):
            if filename.endswith(".txt"):
                shutil.move(os.path.join(subdir_path, filename), os.path.join(labels_dir, filename))
            elif filename.endswith(".jpg") or filename.endswith(".png") or filename.endswith(".jpeg"):
                shutil.move(os.path.join(subdir_path, filename), os.path.join(images_dir, filename))


if __name__ == "__main__":
    directory = f"{work_dir}/trash_ICRA19/dataset"
    organize_files(directory)

Weitere Informationen finden Sie in unserem Leitfaden zur Datenvorverarbeitung.

Was sind die Voraussetzungen für das Training eines YOLO11-Modells auf IBM Watsonx?

Bevor Sie mit dem Training eines YOLO11-Modells auf IBM Watsonx beginnen, stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllen:

  • IBM Cloud-Konto: Erstellen Sie ein Konto in der IBM Cloud, um auf Watsonx.ai zuzugreifen.
  • Kaggle-Konto: Zum Laden von Datensätzen benötigen Sie ein Kaggle-Konto und einen API-Schlüssel.
  • Jupyter Notebook: Richten Sie eine Jupyter Notebook-Umgebung innerhalb von Watsonx.ai für die Codierung und das Modelltraining ein.

Weitere Informationen zur Einrichtung Ihrer Umgebung finden Sie in unserer Ultralytics Installationsanleitung.



📅 Vor 1 Jahr erstellt ✏️ Vor 1 Monat aktualisiert

Kommentare