Ir al contenido

Gu铆a paso a paso para entrenar modelos YOLO11 con IBM Watsonx

Hoy en d铆a, las soluciones escalables de visi贸n por ordenador son cada vez m谩s comunes y est谩n transformando la forma en que manejamos los datos visuales. Un gran ejemplo es IBM Watsonx, una plataforma avanzada de IA y datos que simplifica el desarrollo, el despliegue y la gesti贸n de modelos de IA. Ofrece una suite completa para todo el ciclo de vida de la IA y una integraci贸n perfecta con los servicios de IBM Cloud.

Puede entrenar modelosUltralytics YOLO11 utilizando IBM Watsonx. Es una buena opci贸n para las empresas interesadas en una formaci贸n de modelos eficiente, un ajuste preciso para tareas espec铆ficas y la mejora del rendimiento del modelo con herramientas s贸lidas y una configuraci贸n f谩cil de usar. En esta gu铆a, le guiaremos a trav茅s del proceso de formaci贸n de YOLO11 con IBM Watsonx, desde la configuraci贸n del entorno hasta la evaluaci贸n de los modelos formados. Empecemos.

驴Qu茅 es IBM Watsonx?

Watsonx es la plataforma basada en la nube de IBM dise帽ada para la IA generativa comercial y los datos cient铆ficos. Los tres componentes de IBM Watsonx (watsonx.ai, watsonx.data y watsonx.governance) se unen para crear una plataforma de IA integral y fiable que puede acelerar los proyectos de IA destinados a resolver problemas empresariales. Proporciona potentes herramientas para crear, entrenar y desplegar modelos de aprendizaje autom谩tico y facilita la conexi贸n con diversas fuentes de datos.

Visi贸n general de IBM Watsonx

Su interfaz f谩cil de usar y sus funciones de colaboraci贸n agilizan el proceso de desarrollo y ayudan a gestionar y desplegar modelos de forma eficiente. Ya sea para visi贸n por ordenador, anal铆tica predictiva, procesamiento del lenguaje natural u otras aplicaciones de IA, IBM Watsonx proporciona las herramientas y el soporte necesarios para impulsar la innovaci贸n.

Caracter铆sticas principales de IBM Watsonx

IBM Watsonx consta de tres componentes principales: watsonx.ai, watsonx.data y watsonx.governance. Cada componente ofrece funciones que atienden a diferentes aspectos de la IA y la gesti贸n de datos. Ve谩moslos m谩s de cerca.

Watsonx.ai

Watsonx.ai proporciona potentes herramientas para el desarrollo de IA y ofrece acceso a modelos personalizados compatibles con IBM, modelos de terceros como Llama 3 y los propios modelos Granite de IBM. Incluye el Prompt Lab para experimentar con instrucciones de IA, el Tuning Studio para mejorar el rendimiento del modelo con datos etiquetados y el Flows Engine para simplificar el desarrollo de aplicaciones de IA generativa. Adem谩s, ofrece herramientas completas para automatizar el ciclo de vida de los modelos de IA y conectarse a diversas API y bibliotecas.

Watsonx.datos

Watsonx.data admite despliegues tanto en cloud como en las instalaciones a trav茅s de la integraci贸n IBM Storage Fusion HCI. Su consola f谩cil de usar proporciona acceso centralizado a los datos en todos los entornos y facilita la exploraci贸n de datos con SQL com煤n. Optimiza las cargas de trabajo con motores de consulta eficientes como Presto y Spark, acelera el conocimiento de los datos con una capa sem谩ntica impulsada por IA, incluye una base de datos vectorial para la relevancia de la IA y da soporte a formatos de datos abiertos para compartir f谩cilmente los datos de anal铆tica e IA.

Watsonx.gobernanza

Watsonx.governance facilita el cumplimiento identificando autom谩ticamente los cambios normativos y aplicando las pol铆ticas. Vincula los requisitos con los datos internos de riesgo y proporciona fichas actualizadas de IA. La plataforma ayuda a gestionar el riesgo con alertas y herramientas para detectar problemas como el sesgo y la desviaci贸n. Tambi茅n automatiza el seguimiento y la documentaci贸n del ciclo de vida de la IA, organiza el desarrollo de la IA con un inventario de modelos y mejora la colaboraci贸n con cuadros de mando y herramientas de elaboraci贸n de informes f谩ciles de usar.

C贸mo entrenar YOLO11 con IBM Watsonx

Puede utilizar IBM Watsonx para acelerar su flujo de trabajo de formaci贸n de modelos YOLO11 .

Requisitos previos

Necesita una cuenta de IBM Cloud para crear un proyecto watsonx.ai, y tambi茅n necesitar谩 una cuenta de Kaggle para cargar el conjunto de datos.

Paso 1: Configure su entorno

En primer lugar, deber谩 configurar una cuenta de IBM para utilizar un Jupyter Notebook. Inicie sesi贸n en watsonx.ai con su cuenta de IBM Cloud.

A continuaci贸n, crea un proyecto watsonx.ai y un cuaderno Jupyter.

Una vez hecho esto, se abrir谩 un entorno de bloc de notas para que cargues tu conjunto de datos. Puedes utilizar el c贸digo de este tutorial para realizar una tarea sencilla de entrenamiento de un modelo de detecci贸n de objetos.

Paso 2: Instalar e importar las bibliotecas pertinentes

A continuaci贸n, puede instalar e importar las bibliotecas Python necesarias.

Instalaci贸n

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

Para obtener instrucciones detalladas y buenas pr谩cticas relacionadas con el proceso de instalaci贸n, consulta nuestra gu铆a de instalaci贸nUltralytics . Mientras instala los paquetes necesarios para YOLO11, si encuentra alguna dificultad, consulte nuestra gu铆a de problemas comunes para obtener soluciones y consejos.

A continuaci贸n, puede importar los paquetes necesarios.

Importar bibliotecas relevantes

# Import ultralytics
import ultralytics

ultralytics.checks()

# Import packages to retrieve and display image files

Paso 3: Cargar los datos

Para este tutorial, utilizaremos un conjunto de datos de basura marina disponible en Kaggle. Con este conjunto de datos, entrenaremos a medida un modelo YOLO11 para detectar y clasificar basura y objetos biol贸gicos en im谩genes submarinas.

Podemos cargar el conjunto de datos directamente en el cuaderno utilizando la API de Kaggle. En primer lugar, crea una cuenta gratuita de Kaggle. Una vez que hayas creado una cuenta, necesitar谩s generar una clave API. Puedes encontrar instrucciones para generar tu clave en la documentaci贸n de la API de Kaggle, en la secci贸n "Credenciales de la API".

Copia y pega tu nombre de usuario de Kaggle y tu clave API en el siguiente c贸digo. A continuaci贸n, ejecute el c贸digo para instalar la API y cargar el conjunto de datos en Watsonx.

Instalaci贸n

# Install kaggle
pip install kaggle

Despu茅s de instalar Kaggle, podemos cargar el conjunto de datos en Watsonx.

Cargar los datos

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

Despu茅s de cargar el conjunto de datos, hemos impreso y guardado nuestro directorio de trabajo. Tambi茅n hemos impreso el contenido de nuestro directorio de trabajo para confirmar que el conjunto de datos "trash_ICRA19" se ha cargado correctamente.

Si ves "trash_ICRA19" entre los contenidos del directorio, entonces se ha cargado correctamente. Deber铆a ver tres archivos/carpetas: a config.yaml un archivo videos_for_testing y un directorio dataset directorio. Ignoraremos el videos_for_testing as铆 que si茅ntete libre de borrarlo.

Utilizaremos el archivo config.yaml y el contenido del directorio dataset para entrenar nuestro modelo de detecci贸n de objetos. Esta es una imagen de muestra de nuestro conjunto de datos de basura marina.

Basura marina con caja delimitadora

Paso 4: Preprocesar los datos

Afortunadamente, todas las etiquetas del conjunto de datos de basuras marinas ya est谩n formateadas como archivos .txt de YOLO . Sin embargo, tenemos que reorganizar la estructura de los directorios de im谩genes y etiquetas para ayudar a nuestro modelo a procesarlas. Ahora mismo, el directorio de nuestro conjunto de datos cargado sigue esta estructura:

Directorio de conjuntos de datos cargados

Pero, los modelos YOLO por defecto requieren im谩genes y etiquetas separadas en subdirectorios dentro de la divisi贸n train/val/test. Tenemos que reorganizar el directorio en la siguiente estructura:

Yolo Estructura del directorio

Para reorganizar el directorio del conjunto de datos, podemos ejecutar el siguiente script:

Preprocesar los datos

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

A continuaci贸n, tenemos que modificar el archivo .yaml para el conjunto de datos. Esta es la configuraci贸n que utilizaremos en nuestro archivo .yaml. Los n煤meros de ID de clase empiezan por 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

Ejecute el siguiente script para eliminar el contenido actual de config.yaml y sustituirlo por el contenido anterior que refleja nuestra nueva estructura de directorios del conjunto de datos. Aseg煤rese de reemplazar la parte work_dir de la ruta del directorio ra铆z en la l铆nea 4 con su propia ruta del directorio de trabajo que recuperamos anteriormente. Deje las definiciones de los subdirectorios train, val y test. Adem谩s, no cambie {work_dir} en la l铆nea 23 del c贸digo.

Editar el archivo .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.")

Paso 5: Entrenar el modelo YOLO11

Ejecute el siguiente c贸digo de l铆nea de comandos para ajustar un modelo predeterminado preentrenado YOLO11 .

Entrenar el modelo YOLO11

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

Veamos con m谩s detalle los par谩metros del comando de entrenamiento del modelo:

  • tarea: Especifica la tarea de visi贸n por ordenador para la que est谩 utilizando el modelo YOLO y el conjunto de datos especificados.
  • Modo: Denota el prop贸sito para el que est谩 cargando el modelo y los datos especificados. Como estamos entrenando un modelo, se establece en "entrenar". M谩s tarde, cuando probemos el rendimiento de nuestro modelo, lo pondremos en "predecir".
  • epochs: delimita el n煤mero de veces que YOLO11 pasar谩 por todo nuestro conjunto de datos.
  • lote: El valor num茅rico estipula el tama帽o de los lotes de entrenamiento. Los lotes son el n煤mero de im谩genes que procesa un modelo antes de actualizar sus par谩metros.
  • lr0: Especifica la tasa de aprendizaje inicial del modelo.
  • gr谩ficos: Indica a YOLO que genere y guarde gr谩ficos de las m茅tricas de entrenamiento y evaluaci贸n de nuestro modelo.

Para obtener informaci贸n detallada sobre el proceso de formaci贸n de modelos y las mejores pr谩cticas, consulte la gu铆a de formaci贸n de modelosYOLO11 . Esta gu铆a le ayudar谩 a sacar el m谩ximo partido de sus experimentos y a asegurarse de que utiliza YOLO11 con eficacia.

Paso 6: Probar el modelo

Ahora podemos ejecutar la inferencia para comprobar el rendimiento de nuestro modelo ajustado:

Pruebe el modelo YOLO11

!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

Este breve script genera etiquetas predichas para cada imagen de nuestro conjunto de pruebas, as铆 como nuevos archivos de imagen de salida que superponen el cuadro delimitador predicho sobre la imagen original.

Las etiquetas .txt pronosticadas para cada imagen se guardan mediante la funci贸n save_txt=True y las im谩genes de salida con superposiciones de cuadros delimitadores se generan mediante el argumento save=True argumento.
El par谩metro conf=0.5 indica al modelo que ignore todas las predicciones con un nivel de confianza inferior al 50%.

Por 煤ltimo, iou=.5 indica al modelo que ignore las cajas de la misma clase con un solapamiento del 50% o superior. Ayuda a reducir las posibles cajas duplicadas generadas para el mismo objeto.
podemos cargar las im谩genes con superposiciones de cuadros delimitadores predichos para ver c贸mo funciona nuestro modelo en un pu帽ado de im谩genes.

Predicciones de visualizaci贸n

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

El c贸digo anterior muestra diez im谩genes del conjunto de prueba con sus cuadros delimitadores previstos, acompa帽ados de etiquetas de nombres de clase y niveles de confianza.

Paso 7: Evaluar el modelo

Podemos producir visualizaciones de la precisi贸n y la recuperaci贸n del modelo para cada clase. Estas visualizaciones se guardan en el directorio principal, en la carpeta train. La puntuaci贸n de precisi贸n se muestra en P_curve.png:

Curva de confianza de precisi贸n

El gr谩fico muestra un aumento exponencial de la precisi贸n a medida que aumenta el nivel de confianza del modelo para las predicciones. Sin embargo, la precisi贸n del modelo a煤n no se ha estabilizado en un determinado nivel de confianza despu茅s de dos 茅pocas.

El gr谩fico de recuerdo (R_curve.png) muestra una tendencia inversa:

Curva de confianza

A diferencia de la precisi贸n, la recuperaci贸n se mueve en la direcci贸n opuesta, mostrando una mayor recuperaci贸n con instancias de menor confianza y una menor recuperaci贸n con instancias de mayor confianza. Este es un buen ejemplo del equilibrio entre precisi贸n y recuperaci贸n en los modelos de clasificaci贸n.

Paso 8: C谩lculo de la intersecci贸n sobre la uni贸n

Puede medir la precisi贸n de la predicci贸n calculando el IoU entre un cuadro delimitador predicho y un cuadro delimitador real para el mismo objeto. Consulte el tutorial de IBM sobre formaci贸n YOLO11 para obtener m谩s informaci贸n.

Resumen

Exploramos las caracter铆sticas clave de IBM Watsonx y c贸mo entrenar un modelo YOLO11 con IBM Watsonx. Tambi茅n vimos c贸mo IBM Watsonx puede mejorar sus flujos de trabajo de IA con herramientas avanzadas para la creaci贸n de modelos, la gesti贸n de datos y la conformidad.

Para m谩s detalles sobre su uso, visite la documentaci贸n oficial de IBM Watsonx.

Adem谩s, no deje de consultar la p谩gina de la gu铆a de integraci贸nUltralytics , para obtener m谩s informaci贸n sobre diferentes integraciones interesantes.

PREGUNTAS FRECUENTES

驴C贸mo se entrena un modelo YOLO11 con IBM Watsonx?

Para entrenar un modelo YOLO11 con IBM Watsonx, siga estos pasos:

  1. Configure su entorno: Cree una cuenta de IBM Cloud y configure un proyecto Watsonx.ai. Utilice un Jupyter Notebook para su entorno de codificaci贸n.
  2. Instalar bibliotecas: Instale las bibliotecas necesarias como torch, opencvy ultralytics.
  3. Cargar datos: Utilice la API de Kaggle para cargar su conjunto de datos en Watsonx.
  4. Preprocesamiento de datos: Organice su conjunto de datos en la estructura de directorios requerida y actualice el .yaml archivo de configuraci贸n.
  5. Entrenar el modelo: Utilice la interfaz de l铆nea de comandos YOLO para entrenar su modelo con par谩metros espec铆ficos como epochs, batch sizey learning rate.
  6. Probar y evaluar: Ejecute la inferencia para probar el modelo y evaluar su rendimiento utilizando m茅tricas como la precisi贸n y la recuperaci贸n.

Para obtener instrucciones detalladas, consulte nuestra gu铆a de formaci贸n de modelosYOLO11 .

驴Cu谩les son las principales caracter铆sticas de IBM Watsonx para el entrenamiento de modelos de IA?

IBM Watsonx ofrece varias funciones clave para el entrenamiento de modelos de IA:

  • Watsonx.ai: Proporciona herramientas para el desarrollo de IA, incluido el acceso a modelos personalizados compatibles con IBM y modelos de terceros como Llama 3. Incluye Prompt Lab, Tuning Studio y Flows Engine para una gesti贸n integral del ciclo de vida de la IA.
  • Watsonx.data: Admite implementaciones en la nube y en las instalaciones, y ofrece acceso centralizado a los datos, motores de consulta eficientes como Presto y Spark, y una capa sem谩ntica potenciada por IA.
  • Watsonx.governance: Automatiza el cumplimiento, gestiona el riesgo con alertas y proporciona herramientas para detectar problemas como sesgos y desviaciones. Tambi茅n incluye cuadros de mando y herramientas de elaboraci贸n de informes para la colaboraci贸n.

Para m谩s informaci贸n, visite la documentaci贸n oficial de IBM Watsonx.

驴Por qu茅 deber铆a utilizar IBM Watsonx para entrenar los modelos de Ultralytics YOLO11 ?

IBM Watsonx es una opci贸n excelente para entrenar modelos de Ultralytics YOLO11 gracias a su completo conjunto de herramientas que agilizan el ciclo de vida de la IA. Entre las principales ventajas se incluyen:

  • Escalabilidad: Escale f谩cilmente su formaci贸n de modelos con los servicios de IBM Cloud.
  • Integraci贸n: Integre a la perfecci贸n con diversas fuentes de datos y API.
  • Interfaz f谩cil de usar: Simplifica el proceso de desarrollo con una interfaz colaborativa e intuitiva.
  • Herramientas avanzadas: Acceso a potentes herramientas como Prompt Lab, Tuning Studio y Flows Engine para mejorar el rendimiento de los modelos.

Obtenga m谩s informaci贸n sobre Ultralytics YOLO11 y c贸mo entrenar modelos con IBM Watsonx en nuestra gu铆a de integraci贸n.

驴C贸mo puedo preprocesar mi conjunto de datos para el entrenamiento de YOLO11 en IBM Watsonx?

Para preprocesar su conjunto de datos para el entrenamiento de YOLO11 en IBM Watsonx:

  1. Organice los directorios: Aseg煤rese de que su conjunto de datos sigue la estructura de directorios YOLO con subdirectorios separados para im谩genes y etiquetas dentro de la divisi贸n entrenamiento/val/prueba.
  2. Actualizaci贸n del archivo .yaml: Modificar el .yaml para reflejar la nueva estructura de directorios y nombres de clases.
  3. Ejecutar script de preprocesamiento: Utilice un script Python para reorganizar su conjunto de datos y actualizar los .yaml en consecuencia.

Aqu铆 tienes un script de ejemplo para organizar tu conjunto de datos:

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)

Para m谩s detalles, consulte nuestra gu铆a de preprocesamiento de datos.

驴Cu谩les son los requisitos previos para entrenar un modelo YOLO11 en IBM Watsonx?

Antes de empezar a entrenar un modelo YOLO11 en IBM Watsonx, aseg煤rese de que dispone de los siguientes requisitos previos:

  • Cuenta en IBM Cloud: Cree una cuenta en IBM Cloud para acceder a Watsonx.ai.
  • Cuenta Kaggle: Para cargar conjuntos de datos, necesitar谩s una cuenta de Kaggle y una clave API.
  • Cuaderno Jupyter: Configure un entorno Jupyter Notebook dentro de Watsonx.ai para codificar y entrenar modelos.

Para m谩s informaci贸n sobre c贸mo configurar su entorno, visite nuestra gu铆a de instalaci贸nUltralytics .

Creado hace 3 meses 鉁忥笍 Actualizado hace 1 mes

Comentarios