🐯 Detección de puntos clave en TIGRES con YOLO – ¡Hazlo tú mismo en minutos!

Por Administrador

🐯 ¡Hola, hola, Omesitos! En el post anterior aprendimos a usar los modelos de Ultralytics para detectar landmarks en el cuerpo humano, aplicando la Pose Estimation de forma sencilla con imágenes y video. Pero ahora… ¡nos ponemos salvajes! En este nuevo tutorial vamos a llevar la estimación de pose a otro nivel: entrenaremos un modelo de YOLOv11 para detectar puntos clave en tigres. 🐅

🧠 ¿Cómo crear tu propio modelo personalizado de estimación de pose con YOLOv11?

En este tutorial veremos cómo entrenar un modelo personalizado de estimación de pose (Pose Estimation) usando Ultralytics YOLOv11, aplicándolo al dataset Tiger-Pose, que contiene anotaciones con 12 puntos clave por cada tigre. El objetivo es que al finalizar, tengamos un modelo capaz de identificar automáticamente la cabeza, patas, lomo y cola de un tigre (¡y sí, puedes adaptarlo a otras especies u objetos!).

Trabajaremos con herramientas como Google Colab para facilitar el entrenamiento, y usaremos modelos preentrenados como base. A continuación, te comparto la programación utilizada durante 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. Carga del modelo YOLOv11 🤖

from ultralytics import YOLO
model = YOLO("yolo11l-pose.pt")

3. Cargar el dataset y entrenar el modelo personalizado 🤖🏋️

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

# Train the model
results = model.train(data="tiger-pose.yaml", epochs=70, imgsz=640)

Descargar video de YOUTUBE

!pip install yt-dlp
import yt_dlp

def descargar_video(url, path_destino):
    """
    Función que descarga un video de YouTube dado su URL y lo guarda en el directorio especificado.

    Argumentos:
    url -- La URL del video de YouTube a descargar
    path_destino -- La ruta del directorio donde se guardará el video
    """

    # Opciones de configuración para la descarga
    ydl_opts = {
        'outtmpl': f'{path_destino}/%(title)s.%(ext)s',  # Define la plantilla para el nombre de salida del archivo
        'format': 'bestvideo[height<=1080]+bestaudio/best', #'bestvideo[height<=1080]+bestaudio/best' # Define la calidad del video a descargar; en este caso, se descarga la mejor calidad disponible
        'postprocessors': [{  # Configura el postprocesador para realizar acciones después de la descarga
            'key': 'FFmpegVideoConvertor',  # Define el uso de FFmpeg para la conversión de video
            'preferedformat': 'mp4',  # El formato de salida deseado es mp4
        }],
    }

    # Crea una instancia de YoutubeDL con las opciones configuradas y descarga el video
    with yt_dlp.YoutubeDL(ydl_opts) as ydl:
        ydl.download([url])

# Llamada a la función descargar_video con la URL del video y la ruta donde se guardará
descargar_video("https://www.youtube.com/watch?v=MIBAT6BGE6U", "./")

🎥 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 = "./Tiger walking reference.mp4"
cap = cv2.VideoCapture(video_path)

while cap.isOpened():
    # Leemos el frame del video
    ret, frame = cap.read()
    if not ret:
        break

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

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

    # 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 detector de puntos claves en tigres 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!