İç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

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

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

KeyPoints Haritası

keyPoints Sıra Ultralytics YOLOv8  Poz

Argümanlar set_args

İ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ı
view_img bool False Çerçeveyi sayımlarla görüntüleme
line_thickness int 2 Sayım değerinin kalınlığını artırın
pose_type str pushup İzlenmesi gereken pozlar, pullup ve abworkout ayrıca desteklendi
pose_up_angle int 145 Poz Yukarı Açı değeri
pose_down_angle int 90 Poz Aşağı Açı değeri

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


Oluşturma 2023-12-02, Güncelleme 2024-04-18
Yazarlar: glenn-jocher (6), RizwanMunawar (1)

Yorumlar