Vai al contenuto

Monitoraggio degli allenamenti con Ultralytics YOLOv8 🚀

Il monitoraggio degli allenamenti attraverso la stima della posa con Ultralytics YOLOv8 migliora la valutazione degli esercizi grazie al rilevamento accurato dei principali punti di riferimento del corpo e delle articolazioni in tempo reale. Questa tecnologia fornisce un feedback immediato sulla forma dell'esercizio, traccia le routine di allenamento e misura le metriche delle prestazioni, ottimizzando le sessioni di allenamento sia per gli utenti che per gli allenatori.

Vantaggi del monitoraggio degli allenamenti?

  • Prestazioni ottimizzate: Personalizza gli allenamenti in base ai dati di monitoraggio per ottenere risultati migliori.
  • Raggiungimento degli obiettivi: Traccia e modifica gli obiettivi di fitness per ottenere progressi misurabili.
  • Personalizzazione: Piani di allenamento personalizzati basati sui dati individuali per garantire l'efficacia.
  • Consapevolezza della salute: Individuazione precoce di modelli che indicano problemi di salute o sovrallenamento.
  • Decisioni informate: Decisioni basate sui dati per modificare le routine e fissare obiettivi realistici.

Applicazioni nel mondo reale

Monitoraggio degli allenamenti Monitoraggio degli allenamenti
Conteggio delle flessioni Conteggio delle trazioni
Conteggio delle flessioni Conteggio delle trazioni

Esempio di monitoraggio degli allenamenti

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.predict(im0, verbose=False)
    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.predict(im0, verbose=False)
    im0 = gym_object.start_counting(im0, results, frame_count)
    video_writer.write(im0)

cv2.destroyAllWindows()
video_writer.release()
Supporto

"pushup", "pullup" e "abworkout" supportati

Mappa dei punti chiave

keyPoints Ordine Ultralytics YOLOv8  Pose

Argomenti set_args

Nome Tipo Predefinito Descrizione
kpts_to_check list None Elenco dei tre indici dei punti chiave, per il conteggio di un allenamento specifico, seguito da Mappa dei punti chiave
view_img bool False Visualizza il riquadro con i conteggi
line_thickness int 2 Aumenta lo spessore del valore di conteggio
pose_type str pushup Sono supportate anche le posizioni che devono essere monitorate, come "pullup" e "abworkout".
pose_up_angle int 145 Valore dell'angolo di posa in alto
pose_down_angle int 90 Valore dell'angolo di discesa della posa

Argomenti model.predict

Nome Tipo Predefinito Descrizione
source str 'ultralytics/assets' directory di origine per le immagini o i video
conf float 0.25 soglia di fiducia dell'oggetto per il rilevamento
iou float 0.7 soglia di intersezione su unione (IoU) per gli NMS
imgsz int or tuple 640 dimensione dell'immagine come scalare o come elenco (h, w), ad esempio (640, 480)
half bool False usa la mezza precisione (FP16)
device None or str None dispositivo su cui eseguire l'esecuzione, ad esempio cuda device=0/1/2/3 o device=cpu
max_det int 300 numero massimo di rilevamenti per immagine
vid_stride bool False passo della frequenza dei fotogrammi video
stream_buffer bool False bufferizza tutti i fotogrammi dello streaming (True) o restituisce il fotogramma più recente (False)
visualize bool False visualizzare le caratteristiche del modello
augment bool False applicare l'aumento dell'immagine alle fonti di predizione
agnostic_nms bool False NMS con compatibilità di classe
classes list[int] None filtrare i risultati per classe, ad esempio classi=0 o classi=[0,2,3].
retina_masks bool False utilizzare maschere di segmentazione ad alta risoluzione
embed list[int] None restituisce vettori di caratteristiche/embeddings da determinati livelli


Creato 2023-12-02, Aggiornato 2024-01-15
Autori: glenn-jocher (4), chr043416@gmail.com (2), RizwanMunawar (1)

Commenti