─░├žeri─če ge├ž

Ultralytics YOLOv8 adresini kullanarak Egzersiz Takibi ­čÜÇ

ile poz tahmini yoluyla antrenmanlar─▒n izlenmesi Ultralytics YOLOv8 v├╝cudun ├Ânemli noktalar─▒n─▒ ve eklemleri ger├žek zamanl─▒ olarak do─čru bir ┼čekilde takip ederek egzersiz de─čerlendirmesini geli┼čtirir. Bu teknoloji egzersiz formu hakk─▒nda an─▒nda geri bildirim sa─člar, egzersiz rutinlerini izler ve performans ├Âl├ž├╝mlerini yaparak hem kullan─▒c─▒lar hem de e─čitmenler i├žin egzersiz seanslar─▒n─▒ optimize eder.



─░zle: Ultralytics YOLOv8 | ┼×─▒nav, Barfiks, Ab Egzersizleri Kullan─▒larak ─░zlenen Egzersizler

Egzersiz Takibinin Avantajlar─▒ Nelerdir?

  • Optimize Edilmi┼č Performans: Daha iyi sonu├žlar i├žin izleme verilerine dayal─▒ olarak antrenmanlar─▒ uyarlama.
  • Hedef Ba┼čar─▒s─▒: ├ľl├ž├╝lebilir ilerleme i├žin fitness hedeflerini takip edin ve ayarlay─▒n.
  • Ki┼čiselle┼čtirme: Etkinlik i├žin bireysel verilere dayal─▒ ├Âzelle┼čtirilmi┼č egzersiz planlar─▒.
  • Sa─čl─▒k Fark─▒ndal─▒─č─▒: Sa─čl─▒k sorunlar─▒na veya a┼č─▒r─▒ antrenmana i┼čaret eden kal─▒plar─▒n erken tespiti.
  • Bilgilendirilmi┼č Kararlar: Rutinleri ayarlamak ve ger├žek├ži hedefler belirlemek i├žin veriye dayal─▒ kararlar.

Ger├žek D├╝nya Uygulamalar─▒

Egzersiz ─░zleme Egzersiz ─░zleme
┼×─▒nav Sayma PullUps Sayma
┼×─▒nav Sayma PullUps Sayma

Antrenman ─░zleme ├ľrne─či

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],
)

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()
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],
)

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

"pushup", "pullup" ve "abworkout" desteklenir

KeyPoints Haritas─▒

keyPoints S─▒ra Ultralytics YOLOv8  Poz

Arg├╝manlar AIGym

─░sim Tip Varsay─▒lan A├ž─▒klama
kpts_to_check list None Belirli bir antrenman─▒ saymak i├žin ├╝├ž anahtar nokta dizini listesi, ard─▒ndan anahtar nokta Haritas─▒
line_thickness int 2 ├çizilen ├žizgilerin kal─▒nl─▒─č─▒.
view_img bool False G├Âr├╝nt├╝y├╝ g├Âr├╝nt├╝lemek i├žin bayrak.
pose_up_angle float 145.0 'Yukar─▒' duru┼ču i├žin a├ž─▒ e┼či─či.
pose_down_angle float 90.0 'A┼ča─č─▒' pozu i├žin a├ž─▒ e┼či─či.
pose_type str pullup Alg─▒lanacak poz t├╝r├╝ ('pullup', pushup, abworkout, squat).

Arg├╝manlar model.predict

─░sim Tip Varsay─▒lan A├ž─▒klama
source str 'ultralytics/assets' resimler veya videolar i├žin kaynak dizin
conf float 0.25 alg─▒lama i├žin nesne g├╝ven e┼či─či
iou float 0.7 NMS i├žin birle┼čim ├╝zerinde kesi┼čim (IoU) e┼či─či
imgsz int or tuple 640 skaler veya (h, w) listesi olarak g├Âr├╝nt├╝ boyutu, yani (640, 480)
half bool False yar─▒m hassasiyet (FP16) kullan─▒n
device None or str None ├╝zerinde ├žal─▒┼č─▒lacak cihaz, yani cuda device=0/1/2/3 veya device=cpu
max_det int 300 g├Âr├╝nt├╝ ba┼č─▒na maksimum alg─▒lama say─▒s─▒
vid_stride bool False video kare h─▒z─▒ ad─▒m─▒
stream_buffer bool False t├╝m ak─▒┼č karelerini arabelle─če al─▒r (True) veya en son kareyi d├Ând├╝r├╝r (False)
visualize bool False model ├Âzelliklerini g├Ârselle┼čtirin
augment bool False tahmin kaynaklar─▒na g├Âr├╝nt├╝ b├╝y├╝tme uygulay─▒n
agnostic_nms bool False s─▒n─▒f-agnostik NMS
classes list[int] None sonu├žlar─▒ s─▒n─▒fa g├Âre filtreleyin, yani classes=0 veya classes=[0,2,3]
retina_masks bool False y├╝ksek ├ž├Âz├╝n├╝rl├╝kl├╝ segmentasyon maskeleri kullan─▒n
embed list[int] None Verilen katmanlardan ├Âzellik vekt├Ârleri/g├Âmme d├Ând├╝r├╝r

Arg├╝manlar model.track

─░sim Tip Varsay─▒lan A├ž─▒klama
source im0 None resimler veya videolar i├žin kaynak dizin
persist bool False kareler aras─▒nda kal─▒c─▒ izler
tracker str botsort.yaml ─░zleme y├Ântemi 'bytetrack' veya 'botsort'
conf float 0.3 G├╝ven E┼či─či
iou float 0.5 IOU E┼či─či
classes list None sonu├žlar─▒ s─▒n─▒fa g├Âre filtreleyin, yani classes=0 veya classes=[0,2,3]
verbose bool True Nesne izleme sonu├žlar─▒n─▒ g├Âr├╝nt├╝leme


Created 2023-12-02, Updated 2024-06-10
Authors: glenn-jocher (10), IvorZhu331 (1), RizwanMunawar (4)

Yorumlar