Saltar al contenido

Gu铆a paso a paso para entrenar modelos YOLOv8 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, despliegue y 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.

Puedes entrenar modelosUltralytics YOLOv8 utilizando IBM Watsonx. Es una buena opci贸n para las empresas interesadas en un entrenamiento eficiente de los modelos, el ajuste fino para tareas espec铆ficas y la mejora del rendimiento de los modelos con herramientas s贸lidas y una configuraci贸n f谩cil de usar. En esta gu铆a, te guiaremos a trav茅s del proceso de entrenamiento de YOLOv8 con IBM Watsonx, abarcando desde la configuraci贸n de tu entorno hasta la evaluaci贸n de tus modelos entrenados. 隆Vamos a empezar!

驴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 construir, 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 capacidades de colaboraci贸n agilizan el proceso de desarrollo y ayudan a gestionar y desplegar modelos de forma eficiente. Ya sea para visi贸n computerizada, 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 est谩 formado por 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 indicaciones 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 del modelo de IA y conectarse a varias API y bibliotecas.

Watsonx.datos

Watsonx.data admite despliegues tanto en la nube como en las instalaciones a trav茅s de la integraci贸n IBM Storage Fusion HCI. Su consola de f谩cil uso 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 admite 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 deriva. 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 YOLOv8 utilizando IBM Watsonx

Puedes utilizar IBM Watsonx para acelerar tu flujo de trabajo de entrenamiento de modelos YOLOv8 .

Requisitos previos

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

Paso 1: Configura tu entorno

En primer lugar, tendr谩s que configurar una cuenta IBM para utilizar un Jupyter Notebook. Accede a watsonx.ai utilizando tu cuenta de IBM Cloud.

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

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

Paso 2: Instalar e importar las bibliotecas pertinentes

A continuaci贸n, puedes 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 instalas los paquetes necesarios para YOLOv8, si encuentras alguna dificultad, consulta nuestra gu铆a de Problemas comunes para encontrar soluciones y consejos.

A continuaci贸n, puedes 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 sobre basura marina disponible en Kaggle. Con este conjunto de datos, entrenaremos a medida un modelo YOLOv8 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 en Kaggle. Una vez que hayas creado una cuenta, tendr谩s que 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, ejecuta 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.

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

Tras 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 "basura_ICRA19" se carg贸 correctamente.

Si ves "basura_ICRA19" entre los contenidos del directorio, entonces se ha cargado correctamente. Deber铆as ver tres archivos/carpetas: a config.yaml archivo, un videos_for_testing y un directorio dataset directorio. Ignoraremos el videos_for_testing as铆 que no dudes en borrarlo.

Utilizaremos el archivo config.yaml y el contenido del directorio del conjunto de datos para entrenar nuestro modelo de detecci贸n de objetos. Aqu铆 tienes una imagen de muestra de nuestro conjunto de datos sobre basura marina.

Basura marina con caja delimitadora

Paso 4: Preprocesar los datos

Afortunadamente, todas las etiquetas del conjunto de datos de basura marina 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 procesar la imagen y las etiquetas. Ahora mismo, el directorio de nuestro conjunto de datos cargado sigue esta estructura

Directorio de conjuntos de datos cargados

Pero, los modelos YOLO requieren por defecto 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:

Preprocesa 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. 脡sta 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

Ejecuta el siguiente script para borrar el contenido actual de config.yaml y sustituirlo por el contenido anterior que refleja nuestra nueva estructura de directorios del conjunto de datos. Aseg煤rate de sustituir la parte work_dir de la ruta del directorio ra铆z en la l铆nea 4 por tu propia ruta del directorio de trabajo que recuperamos antes. Deja las definiciones de los subdirectorios train, val y test. Tampoco cambies {dir_trabajo} en la l铆nea 23 del c贸digo.

Edita 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 YOLOv8

Ejecuta el siguiente c贸digo de l铆nea de comandos para afinar un modelo preentrenado por defecto YOLOv8 .

Entrena el modelo YOLOv8

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

Aqu铆 tienes un vistazo m谩s de cerca a los par谩metros del comando de entrenamiento del modelo:

  • tarea: Especifica la tarea de visi贸n por ordenador para la que utilizas el modelo YOLO y el conjunto de datos especificados.
  • Modo: Denota el prop贸sito para el que est谩s cargando el modelo y los datos especificados. Como estamos entrenando un modelo, se establece en "entrenar". M谩s adelante, cuando probemos el rendimiento de nuestro modelo, lo pondremos en "predecir".
  • 茅pocas: delimita el n煤mero de veces que YOLOv8 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 conocer en detalle el proceso de entrenamiento de modelos y las mejores pr谩cticas, consulta la gu铆aYOLOv8 Entrenamiento de modelos. Esta gu铆a te ayudar谩 a sacar el m谩ximo partido de tus experimentos y a asegurarte de que utilizas YOLOv8 con eficacia.

Paso 6: Probar el modelo

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

Prueba el modelo 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

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 predichas 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 informa al modelo para que ignore todas las predicciones con un nivel de confianza inferior al 50%.

Por 煤ltimo, iou=.5 ordena 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 pruebas con sus cuadros delimitadores predichos, acompa帽ados de etiquetas de nombres de clases 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 el archivo 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 (curva_R.png) muestra una tendencia inversa:

Curva de confianza del recuerdo

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

Puedes medir la precisi贸n de la predicci贸n calculando el IoU entre un cuadro delimitador predicho y un cuadro delimitador real del mismo objeto. Consulta el tutorial de IBM sobre entrenamiento YOLOv8 para m谩s detalles.

Resumen

Exploramos las caracter铆sticas clave de IBM Watsonx, y c贸mo entrenar un modelo YOLOv8 utilizando IBM Watsonx. Tambi茅n vimos c贸mo IBM Watsonx puede mejorar tus 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, visita la documentaci贸n oficial de IBM Watsonx.

Adem谩s, aseg煤rate de consultar la p谩gina de la gu铆a de integraci贸nUltralytics , para saber m谩s sobre diferentes integraciones interesantes.

PREGUNTAS FRECUENTES

驴C贸mo entreno un modelo YOLOv8 utilizando IBM Watsonx?

Para entrenar un modelo YOLOv8 utilizando IBM Watsonx, sigue estos pasos:

  1. Configura tu entorno: Crea una cuenta en IBM Cloud y configura un proyecto Watsonx.ai. Utiliza un Jupyter Notebook para tu entorno de codificaci贸n.
  2. Instalar bibliotecas: Instala las bibliotecas necesarias como torch, opencvy ultralytics.
  3. Cargar datos: Utiliza la API de Kaggle para cargar tu conjunto de datos en Watsonx.
  4. Preprocesar datos: Organiza tu conjunto de datos en la estructura de directorios requerida y actualiza el .yaml archivo de configuraci贸n.
  5. Entrenar al modelo: Utiliza la interfaz de l铆nea de comandos YOLO para entrenar tu modelo con par谩metros espec铆ficos como epochs, batch sizey learning rate.
  6. Probar y evaluar: Ejecuta la inferencia para probar el modelo y evaluar su rendimiento utilizando m茅tricas como la precisi贸n y el recuerdo.

Para obtener instrucciones detalladas, consulta nuestra gu铆a de formaci贸n de modelosYOLOv8 .

驴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 el sesgo y la desviaci贸n. Tambi茅n incluye cuadros de mando y herramientas de elaboraci贸n de informes para la colaboraci贸n.

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

驴Por qu茅 deber铆a utilizar IBM Watsonx para entrenar modelos Ultralytics YOLOv8 ?

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

  • Escalabilidad: Escala f谩cilmente tu modelo de formaci贸n con los servicios de IBM Cloud.
  • Integraci贸n: Int茅grate sin problemas 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 del modelo.

M谩s informaci贸n sobre Ultralytics YOLOv8 y c贸mo entrenar modelos utilizando IBM Watsonx en nuestra gu铆a de integraci贸n.

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

Para preprocesar tu conjunto de datos para el entrenamiento de YOLOv8 en IBM Watsonx:

  1. Organiza los directorios: Aseg煤rate de que tu conjunto de datos sigue la estructura de directorios YOLO , con subdirectorios separados para las im谩genes y las etiquetas dentro de la divisi贸n tren/val/prueba.
  2. Actualizar archivo .yaml: Modifica el .yaml para reflejar la nueva estructura de directorios y nombres de clases.
  3. Ejecutar script de preprocesamiento: Utiliza un script Python para reorganizar tu conjunto de datos y actualizarlo. .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, consulta nuestra gu铆a de preprocesamiento de datos.

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

Antes de empezar a entrenar un modelo YOLOv8 en IBM Watsonx, aseg煤rate de que tienes los siguientes requisitos previos:

  • Cuenta en IBM Cloud: Crea 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: Configura un entorno Jupyter Notebook dentro de Watsonx.ai para codificar y entrenar modelos.

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


馃搮 Created 1 month ago 鉁忥笍 Updated 9 days ago

Comentarios