🐯 ¡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!