Workouts Überwachung mit Ultralytics YOLOv8
Die Überwachung des Trainings durch Posenschätzung mit Ultralytics YOLOv8 verbessert die Trainingsbeurteilung durch die genaue Verfolgung wichtiger Körperpunkte und Gelenke in Echtzeit. Diese Technologie liefert sofortiges Feedback zur Trainingsform, verfolgt Trainingsroutinen und misst Leistungsdaten, um die Trainingseinheiten für Nutzer und Trainer gleichermaßen zu optimieren.
Pass auf: Workouts Überwachung mit Ultralytics YOLOv8 | Pushups, Pullups, Ab Workouts
Vorteile der Workout-Überwachung?
- Optimierte Leistung: Anpassungen des Trainings auf Basis der Überwachungsdaten für bessere Ergebnisse.
- Zielerreichung: Verfolge deine Fitnessziele und passe sie an, um messbare Fortschritte zu erzielen.
- Personalisierung: Maßgeschneiderte Trainingspläne, die auf individuellen Daten basieren, um effektiv zu sein.
- Gesundheitsbewusstsein: Frühzeitige Erkennung von Mustern, die auf gesundheitliche Probleme oder Übertraining hinweisen.
- Informierte Entscheidungen: Datengestützte Entscheidungen, um Routinen anzupassen und realistische Ziele zu setzen.
Anwendungen in der realen Welt
Workouts Überwachung | Workouts Überwachung |
---|---|
PushUps Zählen | PullUps Zählen |
Beispiel für die Überwachung von Workouts
import cv2
from ultralytics import YOLO, solutions
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 = solutions.AIGym(
line_thickness=2,
view_img=True,
pose_type="pushup",
kpts_to_check=[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
results = model.track(im0, verbose=False) # Tracking recommended
# results = model.predict(im0) # Prediction also supported
im0 = gym_object.start_counting(im0, results)
cv2.destroyAllWindows()
import cv2
from ultralytics import YOLO, solutions
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 = solutions.AIGym(
line_thickness=2,
view_img=True,
pose_type="pushup",
kpts_to_check=[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
results = model.track(im0, verbose=False) # Tracking recommended
# results = model.predict(im0) # Prediction also supported
im0 = gym_object.start_counting(im0, results)
video_writer.write(im0)
cv2.destroyAllWindows()
video_writer.release()
Unterstütze
"pushup", "pullup" und "abworkout" unterstützt
KeyPoints Karte
Argumente AIGym
Name | Typ | Standard | Beschreibung |
---|---|---|---|
kpts_to_check |
list |
None |
Liste der drei Keypoints Index, für das Zählen des spezifischen Workouts, gefolgt von Keypoint Map |
line_thickness |
int |
2 |
Die Dicke der gezeichneten Linien. |
view_img |
bool |
False |
Flagge, um das Bild anzuzeigen. |
pose_up_angle |
float |
145.0 |
Winkelschwelle für die "Up"-Pose. |
pose_down_angle |
float |
90.0 |
Winkelschwelle für die Pose "unten". |
pose_type |
str |
pullup |
Art der zu erkennenden Pose ('pullup ', pushup , abworkout , squat ). |
Argumente model.predict
Name | Typ | Standard | Beschreibung |
---|---|---|---|
source |
str |
'ultralytics/assets' |
Quellverzeichnis für Bilder oder Videos |
conf |
float |
0.25 |
Objektkonfidenzschwelle für die Erkennung |
iou |
float |
0.7 |
intersection over union (IoU) Schwelle für NMS |
imgsz |
int or tuple |
640 |
Bildgröße als Skalar oder (h, w) Liste, z.B. (640, 480) |
half |
bool |
False |
halbe Genauigkeit verwenden (FP16) |
device |
None or str |
None |
Gerät, auf dem es laufen soll, d.h. cuda device=0/1/2/3 oder device=cpu |
max_det |
int |
300 |
maximale Anzahl von Erkennungen pro Bild |
vid_stride |
bool |
False |
Video-Frame-Rate-Schritt |
stream_buffer |
bool |
False |
alle Streaming-Frames puffern (True) oder den letzten Frame zurückgeben (False) |
visualize |
bool |
False |
Modelleigenschaften visualisieren |
augment |
bool |
False |
Bildvergrößerung auf Vorhersagequellen anwenden |
agnostic_nms |
bool |
False |
klassenunabhängige NMS |
classes |
list[int] |
None |
Ergebnisse nach Klassen filtern, d.h. classes=0, oder classes=[0,2,3] |
retina_masks |
bool |
False |
hochauflösende Segmentierungsmasken verwenden |
embed |
list[int] |
None |
Feature-Vektoren/Embeddings aus den gegebenen Schichten zurückgeben |
Argumente model.track
Name | Typ | Standard | Beschreibung |
---|---|---|---|
source |
im0 |
None |
Quellverzeichnis für Bilder oder Videos |
persist |
bool |
False |
Spuren zwischen Frames beibehalten |
tracker |
str |
botsort.yaml |
Tracking-Methode 'bytetrack' oder 'botsort' |
conf |
float |
0.3 |
Konfidenzschwelle |
iou |
float |
0.5 |
IOU-Schwelle |
classes |
list |
None |
Ergebnisse nach Klassen filtern, d.h. classes=0, oder classes=[0,2,3] |
verbose |
bool |
True |
Anzeige der Ergebnisse der Objektverfolgung |
FAQ
Wie überwache ich mein Training mit Ultralytics YOLOv8 ?
Um dein Training mit Ultralytics YOLOv8 zu überwachen, kannst du die Posenschätzungsfunktionen nutzen, um wichtige Körperpunkte und Gelenke in Echtzeit zu verfolgen und zu analysieren. So erhältst du sofortiges Feedback zu deiner Trainingsform, kannst Wiederholungen zählen und Leistungsdaten messen. Du kannst mit dem mitgelieferten Beispielcode für Liegestütze, Klimmzüge oder Bauchmuskeltraining beginnen, wie gezeigt:
import cv2
from ultralytics import YOLO, solutions
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 = solutions.AIGym(
line_thickness=2,
view_img=True,
pose_type="pushup",
kpts_to_check=[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
results = model.track(im0, verbose=False)
im0 = gym_object.start_counting(im0, results)
cv2.destroyAllWindows()
Für weitere Anpassungen und Einstellungen kannst du den Abschnitt AIGym in der Dokumentation lesen.
Was sind die Vorteile von Ultralytics YOLOv8 für die Trainingsüberwachung?
Die Verwendung von Ultralytics YOLOv8 zur Trainingsüberwachung bietet mehrere wichtige Vorteile:
- Optimierte Leistung: Indem du dein Training anhand von Überwachungsdaten anpasst, kannst du bessere Ergebnisse erzielen.
- Zielerreichung: Verfolge ganz einfach deine Fitnessziele und passe sie an, um messbare Fortschritte zu erzielen.
- Personalisierung: Erhalte maßgeschneiderte Trainingspläne, die auf deinen individuellen Daten basieren, für optimale Effektivität.
- Gesundheitsbewusstsein: Frühzeitige Erkennung von Mustern, die auf mögliche Gesundheitsprobleme oder Übertraining hinweisen.
- Informierte Entscheidungen: Triff datengestützte Entscheidungen, um Routinen anzupassen und realistische Ziele zu setzen.
Du kannst dir ein YouTube-Video ansehen, um diese Vorteile in Aktion zu sehen.
Wie genau ist Ultralytics YOLOv8 beim Aufspüren und Verfolgen von Übungen?
Ultralytics YOLOv8 ist dank seiner hochmodernen Posenschätzungsfunktionen äußerst präzise bei der Erkennung und Verfolgung von Übungen. Es kann die wichtigsten Körpermerkmale und Gelenke genau verfolgen und liefert so Echtzeit-Feedback zur Bewegungsform und zu den Leistungsdaten. Die vortrainierten Gewichte und die robuste Architektur des Modells sorgen für hohe Präzision und Zuverlässigkeit. Beispiele aus der Praxis findest du in der Dokumentation, in der du Liegestütze und Klimmzüge zählen kannst.
Kann ich Ultralytics YOLOv8 für benutzerdefinierte Workout-Routinen verwenden?
Ja, Ultralytics YOLOv8 kann für individuelle Workout-Routinen angepasst werden. Die AIGym
Klasse unterstützt verschiedene Haltungstypen wie "Liegestütz", "Klimmzug" und "Bauchmuskeltraining". Du kannst Schlüsselpunkte und Winkel festlegen, um bestimmte Übungen zu erkennen. Hier ist ein Beispiel für eine Einstellung:
from ultralytics import solutions
gym_object = solutions.AIGym(
line_thickness=2,
view_img=True,
pose_type="squat",
kpts_to_check=[6, 8, 10],
)
Weitere Details zum Setzen von Argumenten findest du in der Argumente AIGym
Abschnitt. Diese Flexibilität ermöglicht es dir, verschiedene Übungen zu überwachen und die Routine an deine Bedürfnisse anzupassen.
Wie kann ich die Ergebnisse der Trainingsüberwachung mit Ultralytics YOLOv8 speichern?
Um die Ergebnisse der Trainingsüberwachung zu speichern, kannst du den Code so ändern, dass er einen Video Writer enthält, der die verarbeiteten Bilder speichert. Hier ist ein Beispiel:
import cv2
from ultralytics import YOLO, solutions
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 = solutions.AIGym(
line_thickness=2,
view_img=True,
pose_type="pushup",
kpts_to_check=[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
results = model.track(im0, verbose=False)
im0 = gym_object.start_counting(im0, results)
video_writer.write(im0)
cv2.destroyAllWindows()
video_writer.release()
Bei dieser Einstellung wird das überwachte Video in eine Ausgabedatei geschrieben. Weitere Informationen findest du im Abschnitt Workouts Überwachung mit Ausgabe speichern.
Erstellt 2023-12-02, Aktualisiert 2024-07-05
Autoren: glenn-jocher (12), ambitious-octopus (1), IvorZhu331 (1), RizwanMunawar (4)