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 |
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ı
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 |