🚶 Aprende cómo detectar posiciones del cuerpo con YOLO (¡Pose Estimation fácil!)
¡Hola, hola, Omesitos! Ahora nos introduciremos en una nueva tarea llamada, Pose Estimation, la cual consiste en identificar puntos distribuidos en el cuerpo. Para llevarlo a cabo usaremos Ultralytics, ya que nos provee distintos modelos YOLOv11. Así que, ¡vamos a por ello!
¿Qué es la Pose Estimation o Estimación de pose?
Es una técnica de visión por computador que permite detectar la posición y orientación del cuerpo de una persona a través de puntos clave o landmarks. Estos puntos pueden representar diversas partes del cuerpo.

🔧 Instalación de Ultralytics
Para llevar a cabo esta práctica debemos instalar Ultralytics, a través de:
pip install ultralytics
Puedes verificar su instalación y versión con: pip freeze
Nota: A continuación te dejo la programación usada en el video. Si quieres ver el paso a paso explicado con más detalle, ¡no te pierdas el video completo!
🖼️Estimación de pose en imágenes con YOLOv11 de Ultralytics
from ultralytics import YOLO # Cargamos el modelo YOLO model = YOLO("yolo11x-pose.pt") # Cargamos la imagen image = "./Inputs/*.jpg" # Realizamos la inferencia de YOLO results = model(image, conf=0.7) # Visualizar los resultados for res in results: res.show()
🖼️ Estimación de pose en imágenes leídas con OpenCV con YOLOv11 de Ultralytics
En este apartado veremos como acceder a los landmarks predichos.
from ultralytics import YOLO import cv2 # Cargamos la imagen de entrada image = cv2.imread("./image.jpg") # Cargamos el modelo YOLO model = YOLO("yolo11l-pose.pt") # Realizamos la inferencia sobre la imagen results = model(image, conf=0.7) # Explorando los resultados print(results[0]) print(results[0].keypoints) # Acceder a un landmark x, y, conf = results[0].keypoints.data[0][10] #cv2.circle(image, (int(x), int(y)), 5, (0,255, 255), 2) # Acceder a los landmarks de la persona detectada for x, y, conf in results[0].keypoints.data[0]: if conf > 0.5: cv2.circle(image, (int(x), int(y)), 3, (0, 255, 0), -1) cv2.imshow(f"image", image) cv2.waitKey(0) ''' # Acceder a los landmarks de cada persona detectada for person in results[0].keypoints.data: for i, (x, y, conf) in enumerate(person): color = (255, 255, 255) if conf > 0.5: if i <= 4: color = (0, 255, 0) elif i == 5: color = (0, 0, 0) elif 6 <= i <= 11: color = (255, 255, 0) cv2.circle(image, (int(x), int(y)), 5, color, 2) ''' cv2.imshow(f"image", image) cv2.waitKey(0) cv2.destroyAllWindows()
🎞️ Estimación de pose en videos con YOLOv11 de Ultralytics
from ultralytics import YOLO import cv2 # Cargamos el modelo YOLO model = YOLO("yolo11m-pose.pt") # Cargamos el video de entrada video_path = "./Inputs/video_001.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() # 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 les haya resultado útil y que se animen a probar la estimación de pose con los modelos de Ultralytics usando YOLOv11.
📌 No olviden revisar el video si desean ver todo el paso a paso en acción.
¡Nos vemos en el siguiente post!