Seguimiento de los entrenamientos mediante Ultralytics YOLO11
El seguimiento de los entrenamientos mediante la estimaci贸n de la postura con Ultralytics YOLO11 mejora la evaluaci贸n del ejercicio mediante el seguimiento preciso de puntos de referencia corporales y articulaciones clave en tiempo real. Esta tecnolog铆a proporciona informaci贸n instant谩nea sobre la forma del ejercicio, realiza un seguimiento de las rutinas de entrenamiento y mide las m茅tricas de rendimiento, optimizando las sesiones de entrenamiento tanto para los usuarios como para los entrenadores.
Observa: Seguimiento de entrenamientos usando Ultralytics YOLO11 | Pushups, Pullups, Ab Workouts
驴Ventajas del seguimiento de los entrenamientos?
- Rendimiento optimizado: Adaptaci贸n de los entrenamientos en funci贸n de los datos de seguimiento para obtener mejores resultados.
- Consecuci贸n de objetivos: Seguimiento y ajuste de los objetivos de fitness para un progreso medible.
- Personalizaci贸n: Planes de entrenamiento personalizados basados en datos individuales para mayor eficacia.
- Conciencia de la salud: Detecci贸n precoz de patrones que indiquen problemas de salud o sobreentrenamiento.
- Decisiones fundamentadas: Decisiones basadas en datos para ajustar rutinas y fijar objetivos realistas.
Aplicaciones en el mundo real
Seguimiento de los entrenamientos | Seguimiento de los entrenamientos |
---|---|
PushUps Contando | Conteo de PullUps |
Ejemplo de seguimiento de los entrenamientos
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video/file.mp4")
assert cap.isOpened(), "Error reading video file"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
# Video writer
video_writer = cv2.VideoWriter("workouts.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# Init AIGym
gym = solutions.AIGym(
show=True, # Display the frame
kpts=[6, 8, 10], # keypoints index of person for monitoring specific exercise, by default it's for pushup
model="yolo11n-pose.pt", # Path to the YOLO11 pose estimation model file
# line_width=2, # Adjust the line width for bounding boxes and text display
)
# Process video
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or video processing has been successfully completed.")
break
im0 = gym.monitor(im0)
video_writer.write(im0)
cv2.destroyAllWindows()
video_writer.release()
Mapa de KeyPoints
Argumentos AIGym
Nombre | Tipo | Por defecto | Descripci贸n |
---|---|---|---|
kpts |
list |
None |
Lista del 铆ndice de tres puntos clave, para el recuento de un entrenamiento espec铆fico, seguido del Mapa de puntos clave |
line_width |
int |
2 |
Grosor de las l铆neas dibujadas. |
show |
bool |
False |
Bandera para mostrar la imagen. |
up_angle |
float |
145.0 |
Umbral de 谩ngulo para la postura "arriba". |
down_angle |
float |
90.0 |
Umbral de 谩ngulo para la postura "hacia abajo". |
model |
str |
None |
Ruta de acceso a Ultralytics YOLO Pose Model File |
Argumentos model.predict
Argumento | Tipo | Por defecto | Descripci贸n |
---|---|---|---|
source |
str |
'ultralytics/assets' |
Especifica la fuente de datos para la inferencia. Puede ser una ruta de imagen, un archivo de v铆deo, un directorio, una URL o el ID de un dispositivo para las transmisiones en directo. Admite una amplia gama de formatos y fuentes, lo que permite una aplicaci贸n flexible a trav茅s de diferentes tipos de entrada. |
conf |
float |
0.25 |
Establece el umbral m铆nimo de confianza para las detecciones. Los objetos detectados con una confianza inferior a este umbral no se tendr谩n en cuenta. Ajustar este valor puede ayudar a reducir los falsos positivos. |
iou |
float |
0.7 |
Umbral de intersecci贸n sobre uni贸n (IoU) para la supresi贸n no m谩xima (NMS). Los valores m谩s bajos dan lugar a menos detecciones al eliminar las cajas superpuestas, lo que resulta 煤til para reducir los duplicados. |
imgsz |
int or tuple |
640 |
Define el tama帽o de la imagen para la inferencia. Puede ser un 煤nico n煤mero entero 640 para el redimensionamiento cuadrado o una tupla (alto, ancho). Un tama帽o adecuado puede mejorar la detecci贸n precisi贸n y la velocidad de procesamiento. |
half |
bool |
False |
Permite la inferencia de media precisi贸n (FP16), lo que puede acelerar la inferencia del modelo en las GPU compatibles con un impacto m铆nimo en la precisi贸n. |
device |
str |
None |
Especifica el dispositivo para la inferencia (por ejemplo, cpu , cuda:0 o 0 ). Permite a los usuarios seleccionar entre CPU, un GPU espec铆fico u otros dispositivos de c谩lculo para la ejecuci贸n del modelo. |
max_det |
int |
300 |
N煤mero m谩ximo de detecciones permitidas por imagen. Limita el n煤mero total de objetos que el modelo puede detectar en una sola inferencia, evitando salidas excesivas en escenas densas. |
vid_stride |
int |
1 |
Salto de fotogramas para entradas de v铆deo. Permite saltar fotogramas en los v铆deos para acelerar el procesamiento a costa de la resoluci贸n temporal. Un valor de 1 procesa cada fotograma, valores superiores omiten fotogramas. |
stream_buffer |
bool |
False |
Determina si se ponen en cola los fotogramas entrantes para los flujos de v铆deo. Si False Si `True', los fotogramas antiguos se eliminan para acomodar los nuevos (optimizado para aplicaciones en tiempo real). Si es `True', pone en cola los nuevos fotogramas en un b煤fer, asegurando que no se salte ning煤n fotograma, pero causar谩 latencia si los FPS de inferencia son inferiores a los FPS de flujo. |
visualize |
bool |
False |
Activa la visualizaci贸n de las caracter铆sticas del modelo durante la inferencia, proporcionando informaci贸n sobre lo que el modelo est谩 "viendo". Resulta 煤til para la depuraci贸n y la interpretaci贸n del modelo. |
augment |
bool |
False |
Permite el aumento del tiempo de prueba (TTA) para las predicciones, mejorando potencialmente la robustez de la detecci贸n a costa de la velocidad de inferencia. |
agnostic_nms |
bool |
False |
Permite la supresi贸n no m谩xima (NMS) independiente de la clase, que fusiona los cuadros superpuestos de clases diferentes. Resulta 煤til en situaciones de detecci贸n multiclase en las que el solapamiento de clases es habitual. |
classes |
list[int] |
None |
Filtra las predicciones a un conjunto de ID de clase. S贸lo se devolver谩n las detecciones que pertenezcan a las clases especificadas. Resulta 煤til para centrarse en objetos relevantes en tareas de detecci贸n multiclase. |
retina_masks |
bool |
False |
Devuelve m谩scaras de segmentaci贸n de alta resoluci贸n. Las m谩scaras devueltas (masks.data ) coincidir谩n con el tama帽o original de la imagen si est谩n activados. Si est谩n desactivados, tendr谩n el tama帽o de imagen utilizado durante la inferencia. |
embed |
list[int] |
None |
Especifica las capas de las que extraer vectores de caracter铆sticas o incrustaciones. Resulta 煤til para tareas posteriores como la agrupaci贸n o la b煤squeda de similitudes. |
project |
str |
None |
Nombre del directorio del proyecto donde se guardan los resultados de las predicciones si save est谩 activado. |
name |
str |
None |
Nombre de la predicci贸n. Se utiliza para crear un subdirectorio dentro de la carpeta del proyecto, donde se almacenan los resultados de la predicci贸n si save est谩 activado. |
Argumentos model.track
Argumento | Tipo | Por defecto | Descripci贸n |
---|---|---|---|
source |
str |
None |
Especifica el directorio de origen de las im谩genes o v铆deos. Admite rutas de archivo y URL. |
persist |
bool |
False |
Permite el seguimiento persistente de objetos entre fotogramas, manteniendo los ID en todas las secuencias de v铆deo. |
tracker |
str |
botsort.yaml |
Especifica el algoritmo de seguimiento a utilizar, por ejemplo, bytetrack.yaml o botsort.yaml . |
conf |
float |
0.3 |
Establece el umbral de confianza para las detecciones; los valores m谩s bajos permiten rastrear m谩s objetos pero pueden incluir falsos positivos. |
iou |
float |
0.5 |
Establece el umbral de intersecci贸n sobre uni贸n (IoU) para filtrar las detecciones solapadas. |
classes |
list |
None |
Filtra los resultados por 铆ndice de clase. Por ejemplo, classes=[0, 2, 3] s贸lo rastrea las clases especificadas. |
verbose |
bool |
True |
Controla la visualizaci贸n de los resultados del rastreo, proporcionando una salida visual de los objetos rastreados. |
PREGUNTAS FRECUENTES
驴C贸mo puedo controlar mis entrenamientos con Ultralytics YOLO11 ?
Para supervisar tus entrenamientos con Ultralytics YOLO11 , puedes utilizar las funciones de estimaci贸n de la postura para realizar un seguimiento y analizar puntos de referencia corporales y articulaciones clave en tiempo real. Esto te permite recibir informaci贸n instant谩nea sobre la forma de tus ejercicios, contar repeticiones y medir m茅tricas de rendimiento. Puedes empezar utilizando el c贸digo de ejemplo proporcionado para flexiones, dominadas o ejercicios de abdominales como se muestra:
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video/file.mp4")
assert cap.isOpened(), "Error reading video file"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
gym = solutions.AIGym(
line_width=2,
show=True,
kpts=[6, 8, 10],
)
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or video processing has been successfully completed.")
break
im0 = gym.monitor(im0)
cv2.destroyAllWindows()
Para m谩s personalizaci贸n y ajustes, puedes consultar la secci贸n AIGym de la documentaci贸n.
驴Cu谩les son las ventajas de utilizar Ultralytics YOLO11 para controlar el entrenamiento?
El uso de Ultralytics YOLO11 para la monitorizaci贸n del entrenamiento proporciona varias ventajas clave:
- Rendimiento optimizado: Al adaptar los entrenamientos en funci贸n de los datos de seguimiento, puedes obtener mejores resultados.
- Consecuci贸n de objetivos: Controla y ajusta f谩cilmente los objetivos de fitness para lograr un progreso medible.
- Personalizaci贸n: Obt茅n planes de entrenamiento personalizados basados en tus datos individuales para una eficacia 贸ptima.
- Conciencia de la salud: Detecci贸n precoz de patrones que indican posibles problemas de salud o sobreentrenamiento.
- Decisiones fundamentadas: Tome decisiones basadas en datos para ajustar las rutinas y fijar objetivos realistas.
Puede ver un v铆deo de demostraci贸n en YouTube para comprobar estas ventajas en acci贸n.
驴Cu谩l es la precisi贸n de Ultralytics YOLO11 a la hora de detectar y rastrear ejercicios?
Ultralytics YOLO11 es muy preciso en la detecci贸n y el seguimiento de ejercicios gracias a sus avanzadas funciones de estimaci贸n de la postura. Puede rastrear con precisi贸n puntos de referencia y articulaciones corporales clave, proporcionando informaci贸n en tiempo real sobre la forma del ejercicio y las m茅tricas de rendimiento. Los pesos preentrenados del modelo y su robusta arquitectura garantizan una gran precisi贸n y fiabilidad. Para ver ejemplos reales, consulte la secci贸n de aplicaciones reales de la documentaci贸n, que muestra el recuento de flexiones y dominadas.
驴Puedo utilizar Ultralytics YOLO11 para rutinas de entrenamiento personalizadas?
S铆, Ultralytics YOLO11 puede adaptarse a rutinas de entrenamiento personalizadas. El AIGym
admite distintos tipos de posturas, como "flexiones", "pullups" y "ejercicios abdominales". Puede especificar puntos clave y 谩ngulos para detectar ejercicios espec铆ficos. He aqu铆 un ejemplo de configuraci贸n:
from ultralytics import solutions
gym = solutions.AIGym(
line_width=2,
show=True,
kpts=[6, 8, 10],
)
Para obtener m谩s informaci贸n sobre la configuraci贸n de argumentos, consulte la secci贸n Argumentos AIGym
secci贸n. Esta flexibilidad le permite controlar varios ejercicios y personalizar las rutinas en funci贸n de sus necesidades.
驴C贸mo puedo guardar el resultado de la monitorizaci贸n del entrenamiento utilizando Ultralytics YOLO11 ?
Para guardar la salida de la monitorizaci贸n del entrenamiento, puedes modificar el c贸digo para incluir un grabador de v铆deo que guarde los fotogramas procesados. He aqu铆 un ejemplo:
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video/file.mp4")
assert cap.isOpened(), "Error reading video file"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
video_writer = cv2.VideoWriter("workouts.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
gym = solutions.AIGym(
line_width=2,
show=True,
kpts=[6, 8, 10],
)
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or video processing has been successfully completed.")
break
im0 = gym.monitor(im0)
video_writer.write(im0)
cv2.destroyAllWindows()
video_writer.release()
Esta configuraci贸n escribe el v铆deo monitorizado en un archivo de salida. Para m谩s detalles, consulte la secci贸n Monitorizaci贸n de entrenamientos con Guardar salida.