Skip to content

Un guide étape par étape pour former les modèles YOLOv8 avec IBM Watsonx

De nos jours, les solutions de vision par ordinateur évolutives deviennent plus courantes et transforment la façon dont nous traitons les données visuelles. Un excellent exemple est IBM Watsonx, une plateforme avancée d'IA et de données qui simplifie le développement, le déploiement et la gestion des modèles d'IA. Elle offre une suite complète pour l'ensemble du cycle de vie de l'IA et une intégration transparente avec les services cloud d'IBM.

Tu peux former des modèlesUltralytics YOLOv8 à l'aide d'IBM Watsonx. C'est une bonne option pour les entreprises intéressées par une formation efficace des modèles, un réglage fin pour des tâches spécifiques et l'amélioration des performances des modèles avec des outils robustes et une configuration conviviale. Dans ce guide, nous allons t'accompagner dans le processus de formation de YOLOv8 avec IBM Watsonx, en abordant tous les aspects, de la configuration de ton environnement à l'évaluation des modèles formés. C'est parti !

Qu'est-ce que IBM Watsonx ?

Watsonx est la plateforme cloud d'IBM conçue pour l'IA générative commerciale et les données scientifiques. Les trois composantes d'IBM Watsonx - watsonx.ai, watsonx.data et watsonx.governance - s'associent pour créer une plateforme d'IA de bout en bout et digne de confiance, capable d'accélérer les projets d'IA visant à résoudre des problèmes commerciaux. Elle fournit des outils puissants pour construire, former et déployer des modèles d'apprentissage automatique et facilite la connexion avec diverses sources de données.

Présentation d'IBM Watsonx

Son interface conviviale et ses capacités de collaboration rationalisent le processus de développement et aident à la gestion et au déploiement efficaces des modèles. Que ce soit pour la vision par ordinateur, l'analyse prédictive, le traitement du langage naturel ou d'autres applications d'IA, IBM Watsonx fournit les outils et le soutien nécessaires pour stimuler l'innovation.

Principales caractéristiques d'IBM Watsonx

IBM Watsonx est constitué de trois composants principaux : watsonx.ai, watsonx.data et watsonx.governance. Chaque composant offre des fonctionnalités qui répondent à différents aspects de l'IA et de la gestion des données. Examinons-les de plus près.

Watsonx.ai

Watsonx.ai fournit de puissants outils pour le développement de l'IA et offre un accès aux modèles personnalisés soutenus par IBM, aux modèles tiers comme Llama 3, et aux propres modèles Granite d'IBM. Il comprend le Prompt Lab pour expérimenter les invites d'IA, le Tuning Studio pour améliorer les performances des modèles avec des données étiquetées, et le Flows Engine pour simplifier le développement d'applications d'IA génératives. Il offre également des outils complets pour automatiser le cycle de vie des modèles d'IA et se connecter à diverses API et bibliothèques.

Watsonx.data

Watsonx.data prend en charge les déploiements dans le nuage et sur site grâce à l'intégration IBM Storage Fusion HCI. Sa console conviviale offre un accès centralisé aux données dans tous les environnements et facilite l'exploration des données grâce à un SQL courant. Elle optimise les charges de travail avec des moteurs de requête efficaces comme Presto et Spark, accélère la connaissance des données avec une couche sémantique alimentée par l'IA, inclut une base de données vectorielle pour la pertinence de l'IA et prend en charge les formats de données ouverts pour faciliter le partage des données d'analyse et d'IA.

Watsonx.governance

Watsonx.governance facilite la conformité en identifiant automatiquement les changements réglementaires et en appliquant les politiques. Il relie les exigences aux données internes sur les risques et fournit des fiches d'information actualisées sur l'IA. La plateforme aide à gérer les risques grâce à des alertes et des outils permettant de détecter des problèmes tels que les biais et les dérives. Elle automatise également le suivi et la documentation du cycle de vie de l'IA, organise le développement de l'IA avec un inventaire des modèles et améliore la collaboration avec des tableaux de bord et des outils de reporting conviviaux.

Comment former YOLOv8 Ă  l'aide d'IBM Watsonx

Tu peux utiliser IBM Watsonx pour accélérer ton flux de travail de formation au modèle YOLOv8 .

Conditions préalables

Tu as besoin d'un compte IBM Cloud pour créer un projet watsonx.ai, et tu auras également besoin d'un compte Kaggle pour charger l'ensemble de données.

Étape 1 : Configurer ton environnement

Tout d'abord, tu devras configurer un compte IBM pour pouvoir utiliser un carnet Jupyter. Connecte-toi Ă  watsonx.ai Ă  l'aide de ton compte IBM Cloud.

Ensuite, crée un projet watsonx.ai, et un carnet Jupyter.

Une fois que tu l'auras fait, un environnement notebook s'ouvrira pour que tu puisses charger ton ensemble de données. Tu peux utiliser le code de ce tutoriel pour t'attaquer à une tâche simple de formation d'un modèle de détection d'objets.

Étape 2 : Installer et importer les bibliothèques pertinentes

Ensuite, tu peux installer et importer les bibliothèques Python nécessaires.

Installation

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

Pour des instructions détaillées et les meilleures pratiques liées au processus d'installation, consulte notre guide d'installationUltralytics . Pendant l'installation des paquets requis pour YOLOv8, si tu rencontres des difficultés, consulte notre guide des problèmes courants pour trouver des solutions et des conseils.

Ensuite, tu peux importer les paquets nécessaires.

Importer des bibliothèques pertinentes

# Import ultralytics
import ultralytics

ultralytics.checks()

# Import packages to retrieve and display image files

Étape 3 : Charger les données

Pour ce tutoriel, nous utiliserons un ensemble de données sur les déchets marins disponible sur Kaggle. Avec cet ensemble de données, nous allons entraîner sur mesure un modèle YOLOv8 pour détecter et classer les déchets et les objets biologiques dans les images sous-marines.

Nous pouvons charger l'ensemble de données directement dans le notebook à l'aide de l'API Kaggle. Tout d'abord, crée un compte Kaggle gratuit. Une fois que tu auras créé un compte, tu devras générer une clé API. Les instructions pour générer ta clé se trouvent dans la documentation de l'API Kaggle, dans la section "API credentials".

Copie et colle ton nom d'utilisateur Kaggle et ta clé API dans le code suivant. Exécute ensuite le code pour installer l'API et charger l'ensemble de données dans Watsonx.

Installation

# Install kaggle
pip install kaggle

Après avoir installé Kaggle, nous pouvons charger le jeu de données dans Watsonx.

Charger les données

# 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"))

Après avoir chargé l'ensemble de données, nous avons imprimé et sauvegardé notre répertoire de travail. Nous avons également imprimé le contenu de notre répertoire de travail pour confirmer que l'ensemble de données "trash_ICRA19" a été chargé correctement.

Si tu vois "trash_ICRA19" dans le contenu du répertoire, c'est qu'il a été chargé avec succès. Tu devrais voir trois fichiers/dossiers : un config.yaml un fichier videos_for_testing et un répertoire dataset répertoire. Nous ne tiendrons pas compte du videos_for_testing alors n'hésite pas à le supprimer.

Nous utiliserons le fichier config.yaml et le contenu du répertoire dataset pour entraîner notre modèle de détection d'objets. Voici un exemple d'image provenant de notre ensemble de données sur les déchets marins.

Déchets marins avec boîte de délimitation

Étape 4 : Prétraitement des données

Heureusement, toutes les étiquettes de l'ensemble de données sur les déchets marins sont déjà formatées sous forme de fichiers .txt à l'adresse YOLO . Cependant, nous devons réorganiser la structure des répertoires d'images et d'étiquettes afin d'aider notre modèle à traiter les images et les étiquettes. À l'heure actuelle, le répertoire de l'ensemble des données chargées suit cette structure :

Répertoire des données chargées

Mais, par défaut, les modèles YOLO nécessitent des images et des étiquettes séparées dans des sous-répertoires au sein de la division train/val/test. Nous devons réorganiser le répertoire dans la structure suivante :

Yolo Structure du répertoire

Pour réorganiser le répertoire des ensembles de données, nous pouvons exécuter le script suivant :

Prétraitement des données

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

Ensuite, nous devons modifier le fichier .yaml pour l'ensemble de données. Voici la configuration que nous utiliserons dans notre fichier .yaml. Les numéros d'identification des classes commencent à 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

Exécute le script suivant pour supprimer le contenu actuel de config.yaml et le remplacer par le contenu ci-dessus qui reflète la nouvelle structure de répertoire de notre ensemble de données. Assure-toi de remplacer la partie work_dir du chemin du répertoire racine à la ligne 4 par le chemin de ton propre répertoire de travail que nous avons récupéré plus tôt. Laisse les définitions des sous-répertoires train, val et test. Ne modifie pas non plus {work_dir} à la ligne 23 du code.

Modifier le fichier .yaml

# Contents of new confg.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.")

Étape 5 : Entraîner le modèle YOLOv8

Exécute le code de ligne de commande suivant pour affiner un modèle par défaut pré-entraîné YOLOv8 .

Entraîne le modèle YOLOv8

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

Voici un examen plus approfondi des paramètres de la commande d'apprentissage du modèle :

  • tâche: elle spĂ©cifie la tâche de vision par ordinateur pour laquelle tu utilises le modèle et l'ensemble de donnĂ©es spĂ©cifiĂ©s sur YOLO .
  • mode: Indique l'objectif pour lequel tu charges le modèle et les donnĂ©es spĂ©cifiĂ©s. Puisque nous formons un modèle, il est rĂ©glĂ© sur "former". Plus tard, lorsque nous testerons les performances de notre modèle, nous le rĂ©glerons sur "prĂ©dire".
  • epochs: Ceci dĂ©limite le nombre de fois que YOLOv8 passera par l'ensemble de nos donnĂ©es.
  • lot: La valeur numĂ©rique stipule la taille des lots de formation. Les lots correspondent au nombre d'images qu'un modèle traite avant de mettre Ă  jour ses paramètres.
  • lr0: SpĂ©cifie le taux d'apprentissage initial du modèle.
  • plots: Demande Ă  YOLO de gĂ©nĂ©rer et d'enregistrer des graphiques des mesures d'entraĂ®nement et d'Ă©valuation de notre modèle.

Pour une compréhension détaillée du processus de formation des modèles et des meilleures pratiques, consulte le guide de formation des modèlesYOLOv8 . Ce guide t'aidera à tirer le meilleur parti de tes expériences et à t'assurer que tu utilises YOLOv8 de façon efficace.

Étape 6 : Tester le modèle

Nous pouvons maintenant lancer l'inférence pour tester les performances de notre modèle affiné :

Teste le modèle YOLOv8

!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

Ce bref script génère des étiquettes prédites pour chaque image de notre ensemble de test, ainsi que de nouveaux fichiers d'image de sortie qui superposent la boîte de délimitation prédite à l'image d'origine.

Les étiquettes .txt prédites pour chaque image sont sauvegardées via le fichier save_txt=True et les images de sortie avec les superpositions de boîtes de délimitation sont générées par le biais de l'argument save=True argument.
Le paramètre conf=0.5 informe le modèle d'ignorer toutes les prédictions dont le niveau de confiance est inférieur à 50 %.

Enfin, iou=.5 demande au modèle d'ignorer les boîtes de la même classe dont le chevauchement est égal ou supérieur à 50 %. Cela permet de réduire les potentielles boîtes en double générées pour le même objet.
nous pouvons charger les images avec les superpositions de boîtes de délimitation prédites pour voir comment notre modèle fonctionne sur une poignée d'images.

Prédictions en matière d'affichage

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

Le code ci-dessus affiche dix images de l'ensemble de test avec leurs boîtes de délimitation prédites, accompagnées des étiquettes des noms de classe et des niveaux de confiance.

Étape 7 : Évaluer le modèle

Nous pouvons produire des visualisations de la précision et du rappel du modèle pour chaque classe. Ces visualisations sont enregistrées dans le répertoire personnel, sous le dossier train. Le score de précision est affiché dans le fichier P_curve.png :

Courbe de confiance de la précision

Le graphique montre une augmentation exponentielle de la précision à mesure que le niveau de confiance du modèle pour les prédictions augmente. Cependant, la précision du modèle ne s'est pas encore stabilisée à un certain niveau de confiance après deux époques.

Le graphique de rappel (R_curve.png) affiche une tendance inverse :

Courbe de confiance du rappel

Contrairement à la précision, le rappel évolue dans la direction opposée, montrant un rappel plus important avec des instances de faible confiance et un rappel plus faible avec des instances de confiance plus élevée. C'est un bon exemple du compromis entre la précision et le rappel pour les modèles de classification.

Étape 8 : Calcul de l'intersection par rapport à l'union

Tu peux mesurer la précision de la prédiction en calculant l'IoU entre une boîte de délimitation prédite et une boîte de délimitation de vérité terrain pour le même objet. Pour plus de détails, consulte le tutoriel d'IBM sur la formation YOLOv8.

Résumé

Nous avons exploré les principales fonctionnalités d'IBM Watsonx, et comment former un modèle YOLOv8 à l'aide d'IBM Watsonx. Nous avons également vu comment IBM Watsonx peut améliorer tes flux de travail d'IA avec des outils avancés pour la construction de modèles, la gestion des données et la conformité.

Pour plus de détails sur l'utilisation, consulte la documentation officielle d'IBM Watsonx.

N'oublie pas non plus de consulter la page du guide d'intégration deUltralytics , pour en savoir plus sur différentes intégrations passionnantes.

FAQ

Comment entraîner un modèle YOLOv8 à l'aide d'IBM Watsonx ?

Pour former un modèle YOLOv8 à l'aide d'IBM Watsonx, suis les étapes suivantes :

  1. Configure ton environnement: Crée un compte IBM Cloud et configure un projet Watsonx.ai. Utilise un carnet Jupyter pour ton environnement de codage.
  2. Installer les bibliothèques: Installe les bibliothèques nécessaires comme torch, opencvet ultralytics.
  3. Charger les données: Utilise l'API de Kaggle pour charger ton jeu de données dans Watsonx.
  4. Prétraitement des données: Organise ton jeu de données dans la structure de répertoire requise et mets à jour le. .yaml fichier de configuration.
  5. Forme le modèle: Utilise l'interface de ligne de commande YOLO pour entraîner ton modèle avec des paramètres spécifiques tels que epochs, batch sizeet learning rate.
  6. Tester et évaluer: Exécute l'inférence pour tester le modèle et évaluer ses performances à l'aide de mesures telles que la précision et le rappel.

Pour obtenir des instructions détaillées, reporte-toi à notre guide de formation au modèleYOLOv8 .

Quelles sont les principales caractéristiques d'IBM Watsonx pour l'entraînement des modèles d'IA ?

IBM Watsonx offre plusieurs fonctionnalités clés pour l'entraînement des modèles d'IA :

  • Watsonx.ai: Fournit des outils pour le dĂ©veloppement de l'IA, y compris l'accès aux modèles personnalisĂ©s soutenus par IBM et aux modèles tiers comme Llama 3. Il comprend le Prompt Lab, le Tuning Studio et le Flows Engine pour une gestion complète du cycle de vie de l'IA.
  • Watsonx.data: Prend en charge les dĂ©ploiements dans le cloud et sur site, offrant un accès centralisĂ© aux donnĂ©es, des moteurs de requĂŞte efficaces comme Presto et Spark, et une couche sĂ©mantique alimentĂ©e par l'IA.
  • Watsonx.governance: Automatise la conformitĂ©, gère les risques Ă  l'aide d'alertes et fournit des outils pour dĂ©tecter des problèmes tels que les biais et les dĂ©rives. Il comprend Ă©galement des tableaux de bord et des outils de reporting pour la collaboration.

Pour plus d'informations, consulte la documentation officielle d'IBM Watsonx.

Pourquoi devrais-je utiliser IBM Watsonx pour entraîner les modèles Ultralytics YOLOv8 ?

IBM Watsonx est un excellent choix pour former les modèles Ultralytics YOLOv8 grâce à sa suite complète d'outils qui rationalisent le cycle de vie de l'IA. Les principaux avantages sont les suivants :

  • ÉvolutivitĂ©: Fais facilement Ă©voluer ton modèle de formation grâce aux services IBM Cloud.
  • IntĂ©gration: IntĂ©gration transparente avec diverses sources de donnĂ©es et API.
  • Interface conviviale: Simplifie le processus de dĂ©veloppement grâce Ă  une interface collaborative et intuitive.
  • Outils avancĂ©s: Accès Ă  des outils puissants tels que Prompt Lab, Tuning Studio et Flows Engine pour amĂ©liorer les performances du modèle.

En savoir plus sur Ultralytics YOLOv8 et comment former des modèles à l'aide d'IBM Watsonx dans notre guide d'intégration.

Comment puis-je prétraiter mon ensemble de données pour la formation YOLOv8 sur IBM Watsonx ?

Pour prétraiter ton ensemble de données pour l'entraînement YOLOv8 sur IBM Watsonx :

  1. Organise les répertoires: Assure-toi que ton jeu de données suit la structure de répertoire YOLO avec des sous-répertoires séparés pour les images et les étiquettes dans la division train/val/test.
  2. Mise à jour du fichier .yaml: Modifie le .yaml pour refléter la nouvelle structure de répertoire et les nouveaux noms de classe.
  3. Exécuter le script de prétraitement: Utilise un script Python pour réorganiser ton jeu de données et mettre à jour les données. .yaml en conséquence.

Voici un exemple de script pour organiser ton ensemble de données :

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)

Pour plus de détails, reporte-toi à notre guide de prétraitement des données.

Quelles sont les conditions préalables à la formation d'un modèle YOLOv8 sur IBM Watsonx ?

Avant de commencer à former un modèle YOLOv8 sur IBM Watsonx, assure-toi de disposer des conditions préalables suivantes :

  • Compte IBM Cloud: CrĂ©e un compte sur IBM Cloud pour accĂ©der Ă  Watsonx.ai.
  • Compte Kaggle: Pour charger des ensembles de donnĂ©es, tu auras besoin d'un compte Kaggle et d'une clĂ© API.
  • Jupyter Notebook: Configure un environnement Jupyter Notebook au sein de Watsonx.ai pour le codage et l'entraĂ®nement des modèles.

Pour plus d'informations sur la configuration de ton environnement, visite notre guide d'installationUltralytics .


📅 Created 1 month ago ✏️ Updated 10 days ago

Commentaires