Seguimiento de entrenamientos mediante Ultralytics YOLOv8 馃殌
Monitorizar los entrenamientos mediante la estimaci贸n de la postura con Ultralytics YOLOv8 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 con Ultralytics YOLOv8 | Flexiones, Pullups, Entrenamientos de abdominales
驴Ventajas de la monitorizaci贸n de entrenamientos?
- Rendimiento optimizado: Adapta los entrenamientos en funci贸n de los datos de seguimiento para obtener mejores resultados.
- Consecuci贸n de objetivos: Controla y ajusta los objetivos de forma f铆sica para conseguir 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 informadas: Decisiones basadas en datos para ajustar las rutinas y establecer objetivos realistas.
Aplicaciones en el mundo real
Seguimiento de los entrenamientos | Seguimiento de los entrenamientos |
---|---|
Conteo de flexiones | Conteo de PullUps |
Ejemplo de seguimiento de entrenamientos
from ultralytics import YOLO
from ultralytics.solutions import ai_gym
import cv2
model = YOLO("yolov8n-pose.pt")
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_object = ai_gym.AIGym() # init AI GYM module
gym_object.set_args(line_thickness=2,
view_img=True,
pose_type="pushup",
kpts_to_check=[6, 8, 10])
frame_count = 0
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or video processing has been successfully completed.")
break
frame_count += 1
results = model.track(im0, verbose=False) # Tracking recommended
#results = model.predict(im0) # Prediction also supported
im0 = gym_object.start_counting(im0, results, frame_count)
cv2.destroyAllWindows()
from ultralytics import YOLO
from ultralytics.solutions import ai_gym
import cv2
model = YOLO("yolov8n-pose.pt")
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_object = ai_gym.AIGym() # init AI GYM module
gym_object.set_args(line_thickness=2,
view_img=True,
pose_type="pushup",
kpts_to_check=[6, 8, 10])
frame_count = 0
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or video processing has been successfully completed.")
break
frame_count += 1
results = model.track(im0, verbose=False) # Tracking recommended
#results = model.predict(im0) # Prediction also supported
im0 = gym_object.start_counting(im0, results, frame_count)
video_writer.write(im0)
cv2.destroyAllWindows()
video_writer.release()
Ayuda
Compatible con "flexiones", "tracciones" y "ejercicios abdominales".
Mapa de KeyPoints
Argumentos set_args
Nombre | Tipo | Por defecto | Descripci贸n |
---|---|---|---|
kpts_to_check |
list |
None |
Lista del 铆ndice de tres puntos clave, para contar un entrenamiento espec铆fico, seguido del Mapa de puntos clave |
view_img |
bool |
False |
Mostrar el cuadro con los recuentos |
line_thickness |
int |
2 |
Aumenta el grosor del valor de recuento |
pose_type |
str |
pushup |
Plantea que hay que vigilar, pullup y abworkout tambi茅n apoy贸 |
pose_up_angle |
int |
145 |
Valor del 谩ngulo de subida de la pose |
pose_down_angle |
int |
90 |
Valor del 谩ngulo de pose hacia abajo |
Argumentos model.predict
Nombre | Tipo | Por defecto | Descripci贸n |
---|---|---|---|
source |
str |
'ultralytics/assets' |
directorio fuente de im谩genes o v铆deos |
conf |
float |
0.25 |
umbral de confianza del objeto para la detecci贸n |
iou |
float |
0.7 |
umbral de intersecci贸n sobre uni贸n (IoU) para NMS |
imgsz |
int or tuple |
640 |
tama帽o de la imagen como escalar o lista (h, w), por ejemplo (640, 480) |
half |
bool |
False |
utiliza media precisi贸n (FP16) |
device |
None or str |
None |
dispositivo en el que se va a ejecutar, es decir, cuda device=0/1/2/3 o device=cpu |
max_det |
int |
300 |
n煤mero m谩ximo de detecciones por imagen |
vid_stride |
bool |
False |
velocidad de fotogramas de v铆deo |
stream_buffer |
bool |
False |
almacenar en la memoria intermedia todos los fotogramas de la transmisi贸n (Verdadero) o devolver el fotograma m谩s reciente (Falso) |
visualize |
bool |
False |
visualizar las caracter铆sticas del modelo |
augment |
bool |
False |
aplicar el aumento de imagen a las fuentes de predicci贸n |
agnostic_nms |
bool |
False |
NMS de clase agn贸stica |
classes |
list[int] |
None |
filtrar los resultados por clase, es decir, classes=0, o classes=[0,2,3] |
retina_masks |
bool |
False |
utilizar m谩scaras de segmentaci贸n de alta resoluci贸n |
embed |
list[int] |
None |
devuelve vectores/incrustaciones de caracter铆sticas de las capas dadas |
Argumentos model.track
Nombre | Tipo | Por defecto | Descripci贸n |
---|---|---|---|
source |
im0 |
None |
directorio fuente de im谩genes o v铆deos |
persist |
bool |
False |
persistencia de pistas entre fotogramas |
tracker |
str |
botsort.yaml |
M茅todo de seguimiento 'bytetrack' o 'botsort' |
conf |
float |
0.3 |
Umbral de confianza |
iou |
float |
0.5 |
Umbral del pagar茅 |
classes |
list |
None |
filtrar los resultados por clase, es decir, classes=0, o classes=[0,2,3] |
verbose |
bool |
True |
Mostrar los resultados del seguimiento de objetos |