Overslaan naar inhoud

Training volgen met Ultralytics YOLOv8 🚀

Het volgen van trainingen door het schatten van houdingen met Ultralytics YOLOv8 verbetert de trainingsbeoordeling door de belangrijkste lichaamskenmerken en gewrichten nauwkeurig en in real-time te volgen. Deze technologie geeft direct feedback over de vorm van de oefening, volgt trainingsroutines en meet prestatiegegevens, waardoor de trainingssessies voor zowel gebruikers als trainers worden geoptimaliseerd.



Kijken: Workouts die Ultralytics YOLOv8 gebruiken | Pushups, Pullups, Ab Workouts

Voordelen van trainingsmonitoring?

  • Geoptimaliseerde prestaties: Trainingen afstemmen op basis van controlegegevens voor betere resultaten.
  • Doelen bereiken: Houd fitnessdoelen bij en pas ze aan voor meetbare vooruitgang.
  • Personalisatie: Aangepaste trainingsplannen op basis van individuele gegevens voor effectiviteit.
  • Bewustzijn van gezondheid: Vroegtijdige detectie van patronen die wijzen op gezondheidsproblemen of overtraining.
  • Geïnformeerde beslissingen: Gegevensgestuurde beslissingen om routines aan te passen en realistische doelen te stellen.

Toepassingen in de echte wereld

Training volgen Training volgen
PushUps Tellen PullUps Tellen
PushUps Tellen PullUps Tellen

Voorbeeld van trainingen

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()
Ondersteuning

"pushup", "pullup" en "abworkout" ondersteund

KeyPoints Kaart

sleutelPunten Volgorde Ultralytics YOLOv8  Houding

Argumenten set_args

Naam Type Standaard Beschrijving
kpts_to_check list None Lijst met index van drie sleutelpunten, voor het tellen van specifieke trainingen, gevolgd door sleutelpunt Kaart
view_img bool False Geef het kader met tellingen weer
line_thickness int 2 Verhoog de dikte van de telwaarde
pose_type str pushup Stellen die in de gaten gehouden moeten worden, pullup en abworkout ook ondersteund
pose_up_angle int 145 Hoekwaarde omhoog
pose_down_angle int 90 Waarde neerwaartse hoek

Argumenten model.predict

Naam Type Standaard Beschrijving
source str 'ultralytics/assets' bronmap voor afbeeldingen of video's
conf float 0.25 objectbetrouwbaarheidsdrempel voor detectie
iou float 0.7 intersectie over unie (IoU) drempel voor NMS
imgsz int or tuple 640 afbeeldingsgrootte als scalair of (h, w) lijst, bijv. (640, 480)
half bool False gebruik halve precisie (FP16)
device None or str None apparaat om op te draaien, bijvoorbeeld cuda device=0/1/2/3 of device=cpu
max_det int 300 maximum aantal detecties per afbeelding
vid_stride bool False video frame-rate stap
stream_buffer bool False buffer alle streaming frames (True) of retourneer het meest recente frame (False)
visualize bool False modeleigenschappen visualiseren
augment bool False beeldvergroting toepassen op voorspellingsbronnen
agnostic_nms bool False klassennagnostische NMS
classes list[int] None filter resultaten op klasse, d.w.z. classes=0, of classes=[0,2,3]
retina_masks bool False segmentatiemaskers met hoge resolutie gebruiken
embed list[int] None retourneer kenmerkvectoren/embeddingen van gegeven lagen

Argumenten model.track

Naam Type Standaard Beschrijving
source im0 None bronmap voor afbeeldingen of video's
persist bool False Blijvende sporen tussen frames
tracker str botsort.yaml Volgmethode 'bytetrack' of 'botsort'
conf float 0.3 Vertrouwensdrempel
iou float 0.5 Drempel IOU
classes list None filter resultaten op klasse, d.w.z. classes=0, of classes=[0,2,3]
verbose bool True De resultaten van het volgen van objecten weergeven


Aangemaakt 2023-12-02, Bijgewerkt 2024-04-18
Auteurs: glenn-jocher (6), RizwanMunawar (1)

Reacties