Crea tu propio clasificador de imágenes con YOLOv11 (Ejemplo con posturas de yoga 🧘)

Por Administrador

¡Hola, hola, Omesitos! En el último post y video sobre Ultralytics vimos como aplicar la Clasificación de imágenes. Vimos que los modelos de Ultralytics fueron entrenados con el ImageNet, por lo que se pueden identificar 1000 clases o categorías. En esta ocasión vamos a usar los modelos de YOLO para entrenar nuestro propio modelo personalizado, que permitirá clasificar posturas de yoga (aunque podrías aplicarlo en tus propios proyectos), para ello vamos a usar: Ultralytics, Roboflow y Google Colab. Así que… ¡vamos a por ello! 

🧠 ¿Cómo crear tu propio modelo personalizado de clasificación de imágenes con YOLOv11?

En este tutorial trabajamos con Ultralytics, Roboflow y Google Colab para crear un modelo de clasificación, que pueda identificar distintas posturas de yoga. A continuación, te comparto el código base que se explicó en el video.

📌 Nota importante: Esta sección contiene únicamente la programación empleada. Si deseas una explicación paso a paso con mayor detalle, no olvides revisar el video completo disponible en el canal.

1.  Instalación de librerías necesarias 🛠️

!pip install roboflow ultralytics

2. Descarga de dataset personalizado desde Roboflow 🗂️

Puedes acceder al dataset usado en el video a través de este link.

from roboflow import Roboflow

rf = Roboflow(api_key="YOUR-API-KEY")  # ⚠️ Reemplaza con tu propia API KEY
project = rf.workspace("upi-awhgd").project("train-7-pose")
version = project.version(1)
dataset = version.download("folder")

3. Carga del modelo base YOLOv11 de Ultralytics 🤖

Recuerda que puedes escoger cualquier modelo de segmentación que ofrece Ultralytics. En este ejemplo he escogido el modelo medium.

from ultralytics import YOLO
model = YOLO("yolo11m-cls.pt")

4. Entrenamiento del modelo personalizado 🤖🏋️

data_path = "/content/train-7-pose-1"
results = model.train(data=data_path,
                      epochs=20)

5. ¡A hacer predicciones! 🤖

# Cargamos el modelo ya entrenado
custom_model = YOLO("/content/runs/classify/train/weights/best.pt")

# Realizamos predicciones sobre algunas imágenes
res = custom_model("/content/train-7-pose-1/test/warrior pose")

# Visualizamos los resultados
for r in res:
    r.show()

🎥 Bonus: Prueba tu modelo en video en vivo (Webcam)

from ultralytics import YOLO
import cv2

# Cargamos el modelo YOLO
model = YOLO("best.pt")

# Cargamos el video de entrada
video_path = "./video_001.mp4"
cap = cv2.VideoCapture(video_path)

while cap.isOpened():
    # Leemos el frame del video
    ret, frame = cap.read()
    if not ret:
        break
    
    frame[:180, :300] = (255, 0, 255)

    # Realizamos la inferencia de YOLO sobre el frame
    results = model(frame)

    # Extraemos los resultados
    annotated_frame = results[0].plot()

    # Visualizamos los resultados
    cv2.imshow("YOLO Inference", annotated_frame)

    # El ciclo se rompe al presionar "Esc"
    if cv2.waitKey(1) & 0xFF == 27:
        break

cap.release()
cv2.destroyAllWindows()

Y eso ha sido todo por este post, Omesitos. 😊
Espero que te haya sido útil y que te animes a crear tu propio clasificador de imágenes con YOLOv11.
Si quieres ver el proceso paso a paso y en acción, no te olvides de visitar el video completo en el canal. 🎥
¡Cuídate mucho y nos vemos en el siguiente tutorial!