Un guide étape par étape pour former les modèles YOLO11 avec IBM Watsonx
Aujourd'hui, les solutions évolutives de vision par ordinateur sont de plus en plus courantes et transforment la façon dont nous traitons les données visuelles. Un bon 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 IBM Cloud.
Vous pouvez former des modèlesUltralytics YOLO11 à l'aide d'IBM Watsonx. Il s'agit d'une bonne option pour les entreprises intéressées par la formation efficace de modèles, le 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 vous guider à travers le processus de formation de YOLO11 avec IBM Watsonx, en couvrant tous les aspects, de la configuration de votre environnement à l'évaluation de vos modèles formés. C'est parti !
Qu'est-ce que IBM Watsonx ?
Watsonx est la plateforme IBM basée sur le cloud conçue pour l'IA générative commerciale et les données scientifiques. Les trois composants d'IBM Watsonx - watsonx.ai, watsonx.data et watsonx.governance - s'associent pour créer une plateforme d'IA fiable de bout en bout qui peut 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.
Son interface conviviale et ses capacités de collaboration rationalisent le processus de développement et contribuent à une gestion et à un déploiement efficaces des modèles. Qu'il s'agisse de vision artificielle, d'analyse prédictive, de 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 se compose de trois éléments 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 des outils puissants pour le développement de l'IA et donne accès à des modèles personnalisés soutenus par IBM, à des modèles tiers comme Llama 3 et aux propres modèles Granite d'IBM. Il comprend le Prompt Lab pour expérimenter des messages-guides 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érative. 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 langage SQL courant. Elle optimise les charges de travail avec des moteurs de requête efficaces tels que Presto et Spark, accélère la compréhension 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 YOLO11 Ă l'aide d'IBM Watsonx
Vous pouvez utiliser IBM Watsonx pour accélérer votre flux de travail de formation de modèles YOLO11 .
Conditions préalables
Vous avez besoin d'un compte IBM Cloud pour créer un projet watsonx.ai, et vous aurez également besoin d'un compte Kaggle pour charger l'ensemble de données.
Étape 1 : Mise en place de l'environnement
Tout d'abord, vous devrez configurer un compte IBM pour utiliser un carnet Jupyter. Connectez-vous Ă watsonx.ai Ă l'aide de votre compte IBM Cloud.
Ensuite, créez un projet watsonx.ai et un carnet Jupyter.
Une fois que vous l'avez fait, un environnement notebook s'ouvrira pour que vous puissiez charger votre ensemble de données. Vous pouvez utiliser le code de ce tutoriel pour réaliser une tâche simple d'apprentissage d'un modèle de détection d'objets.
Étape 2 : Installer et importer les bibliothèques pertinentes
Ensuite, vous pouvez installer et importer les bibliothèques Python nécessaires.
Installation
Pour des instructions détaillées et les meilleures pratiques liées au processus d'installation, consultez notre guide d'installationUltralytics . Lors de l'installation des paquets requis pour YOLO11, si vous rencontrez des difficultés, consultez notre guide des problèmes courants pour obtenir des solutions et des conseils.
Ensuite, vous pouvez importer les paquets nécessaires.
Importer des bibliothèques pertinentes
É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 YOLO11 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 en utilisant l'API Kaggle. Tout d'abord, créez un compte Kaggle gratuit. Une fois votre compte créé, vous devrez générer une clé API. Les instructions pour générer votre clé se trouvent dans la documentation de l'API Kaggle, dans la section "API credentials" (informations d'identification de l'API).
Copiez et collez votre nom d'utilisateur Kaggle et votre clé API dans le code suivant. Exécutez ensuite le code pour installer l'API et charger l'ensemble de données dans Watsonx.
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 vous voyez "trash_ICRA19" dans le contenu du répertoire, c'est qu'il a été chargé avec succès. Vous devriez voir trois fichiers/dossiers : a config.yaml
un fichier videos_for_testing
et un répertoire dataset
répertoire. Nous ne tiendrons pas compte de l'élément videos_for_testing
donc n'hésitez 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.
É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 ( 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 la structure suivante :
Cependant, les modèles YOLO nécessitent par défaut 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 :
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écutez 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. Veillez à remplacer la partie work_dir du chemin du répertoire racine à la ligne 4 par le chemin de votre propre répertoire de travail que nous avons récupéré plus tôt. Laissez les définitions des sous-répertoires train, val et test. Ne modifiez 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înement du modèle YOLO11
Exécutez le code de ligne de commande suivant pour affiner un modèle par défaut pré-entraîné YOLO11 .
Former le modèle YOLO11
Voici un examen plus approfondi des paramètres de la commande d'apprentissage du modèle :
- tâche: elle indique la tâche de vision par ordinateur pour laquelle vous utilisez le modèle et l'ensemble de données spécifiés sur le site YOLO .
- mode: Indique l'objectif pour lequel vous chargez le modèle et les données spécifiés. Étant donné que nous formons un modèle, il est défini sur "train". Plus tard, lorsque nous testerons les performances de notre modèle, nous le réglerons sur "prédire".
- epochs: ce nombre délimite le nombre de fois que YOLO11 passera par l'ensemble de nos données.
- lot: La valeur numérique stipule la taille des lots d'apprentissage. 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: Indique à YOLO de générer et d'enregistrer des graphiques des mesures d'apprentissage 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, consultez le guide de formation des modèlesYOLO11 . Ce guide vous aidera à tirer le meilleur parti de vos expériences et à vous assurer que vous utilisez YOLO11 de manière efficace.
Étape 6 : Tester le modèle
Nous pouvons maintenant lancer l'inférence pour tester les performances de notre modèle affiné :
Tester le modèle YOLO11
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 originale.
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
indique au 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 le nombre de boîtes générées en double pour un même objet.
nous pouvons charger les images avec des superpositions de boîtes englobantes prédites pour voir comment notre modèle fonctionne sur une poignée d'images.
Prédictions en matière d'affichage
Le code ci-dessus affiche dix images de l'ensemble de test avec leurs boîtes de délimitation prédites, accompagnées d'étiquettes de noms de classes et de 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 :
Le graphique montre une augmentation exponentielle de la précision au fur et à mesure que le niveau de confiance du modèle pour les prédictions augmente. Toutefois, 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 :
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. Il s'agit d'un bon exemple du compromis entre la précision et le rappel pour les modèles de classification.
Étape 8 : Calcul de l'intersection sur l'union
Vous pouvez 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, consultez le didacticiel d'IBM sur la formation YOLO11.
Résumé
Nous avons exploré les principales caractéristiques d'IBM Watsonx et la manière d'entraîner un modèle YOLO11 à l'aide d'IBM Watsonx. Nous avons également vu comment IBM Watsonx peut améliorer vos 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, consultez la documentation officielle d'IBM Watsonx.
N'oubliez pas non plus de consulter la page du guide d'intégration deUltralytics , pour en savoir plus sur les différentes intégrations intéressantes.
FAQ
Comment entraîner un modèle YOLO11 à l'aide d'IBM Watsonx ?
Pour former un modèle YOLO11 à l'aide d'IBM Watsonx, procédez comme suit :
- Configurez votre environnement: Créez un compte IBM Cloud et configurez un projet Watsonx.ai. Utilisez un carnet Jupyter pour votre environnement de codage.
- Installer les bibliothèques: Installer les bibliothèques nécessaires comme
torch
,opencv
etultralytics
. - Charger les données: Utilisez l'API Kaggle pour charger votre jeu de données dans Watsonx.
- Prétraitement des données: Organisez votre ensemble de données dans la structure de répertoire requise et mettez à jour le fichier de données.
.yaml
fichier de configuration. - Former le modèle: Utilisez l'interface en ligne de commande YOLO pour entraîner votre modèle avec des paramètres spécifiques tels que
epochs
,batch size
etlearning rate
. - Test et évaluation: Exécuter 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 des instructions détaillées, consultez notre guide de formation au modèleYOLO11 .
Quelles sont les principales caractéristiques d'IBM Watsonx pour l'apprentissage des modèles d'IA ?
IBM Watsonx offre plusieurs fonctionnalités clés pour la formation de 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 tels que 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 nuage et sur site, offrant un accès centralisé aux données, des moteurs de recherche efficaces tels que 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, consultez la documentation officielle d'IBM Watsonx.
Pourquoi utiliser IBM Watsonx pour la formation des modèles Ultralytics YOLO11 ?
IBM Watsonx est un excellent choix pour la formation des modèles Ultralytics YOLO11 en raison de sa suite complète d'outils qui rationalisent le cycle de vie de l'IA. Les principaux avantages sont les suivants :
- Évolutivité: Faites évoluer facilement votre 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 des modèles.
En savoir plus sur Ultralytics YOLO11 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 YOLO11 sur IBM Watsonx ?
Pour prétraiter votre ensemble de données pour la formation YOLO11 sur IBM Watsonx :
- Organisez les répertoires: Veillez à ce que votre ensemble de données respecte la structure de répertoire YOLO , avec des sous-répertoires distincts pour les images et les étiquettes dans la division train/val/test.
- Mise Ă jour du fichier .yaml: Modifier le
.yaml
pour refléter la nouvelle structure de répertoire et les nouveaux noms de classe. - Exécuter le script de prétraitement: Utilisez un script Python pour réorganiser votre jeu de données et mettre à jour les données.
.yaml
en conséquence.
Voici un exemple de script pour organiser votre 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, consultez notre guide sur le prétraitement des données.
Quelles sont les conditions préalables à la formation d'un modèle YOLO11 sur IBM Watsonx ?
Avant de commencer à former un modèle YOLO11 sur IBM Watsonx, assurez-vous que vous disposez des conditions préalables suivantes :
- Compte IBM Cloud: Créez un compte sur IBM Cloud pour accéder à Watsonx.ai.
- Compte Kaggle: Pour charger des ensembles de données, vous aurez besoin d'un compte Kaggle et d'une clé API.
- Jupyter Notebook: Configurez 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 votre environnement, consultez notre guide d'installationUltralytics .