Ultralytics YOLO11 kullanarak Egzersiz İzleme
Ultralytics YOLO11 ile poz tahmini yoluyla egzersizlerin izlenmesi, temel vücut işaretlerini ve eklemleri gerçek zamanlı olarak doğru bir şekilde izleyerek egzersiz değerlendirmesini geliştirir. Bu teknoloji, egzersiz formu hakkında anında geri bildirim sağlar, egzersiz rutinlerini izler ve performans ölçümlerini ölçerek hem kullanıcılar hem de eğitmenler için egzersiz seanslarını optimize eder.
İzle: Ultralytics YOLO11 | Şı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
import cv2
from ultralytics import solutions
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
video_writer = cv2.VideoWriter("workouts.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# Init AIGym
gym = solutions.AIGym(
show=True, # Display the frame
kpts=[6, 8, 10], # keypoints index of person for monitoring specific exercise, by default it's for pushup
model="yolo11n-pose.pt", # Path to the YOLO11 pose estimation model file
# line_width=2, # Adjust the line width for bounding boxes and text display
)
# Process video
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or video processing has been successfully completed.")
break
im0 = gym.monitor(im0)
video_writer.write(im0)
cv2.destroyAllWindows()
video_writer.release()
KeyPoints Haritası
Argümanlar AIGym
İsim | Tip | Varsayılan | Açıklama |
---|---|---|---|
kpts | list | None | Belirli bir antrenmanı saymak için üç anahtar nokta dizini listesi, ardından anahtar nokta Haritası |
line_width | int | 2 | Çizilen çizgilerin kalınlığı. |
show | bool | False | Görüntüyü görüntülemek için bayrak. |
up_angle | float | 145.0 | 'Yukarı' duruşu için açı eşiği. |
down_angle | float | 90.0 | 'Aşağı' pozu için açı eşiği. |
model | str | None | Ultralytics YOLO Poz Modeli Dosyasının Yolu |
Argümanlar model.predict
Tartışma | Tip | Varsayılan | Açıklama |
---|---|---|---|
source | str | 'ultralytics/assets' | Çıkarım için veri kaynağını belirtir. Bir görüntü yolu, video dosyası, dizin, URL veya canlı yayınlar için cihaz kimliği olabilir. Çok çeşitli formatları ve kaynakları destekleyerek farklı girdi türlerinde esnek uygulama sağlar. |
conf | float | 0.25 | Tespitler için minimum güven eşiğini ayarlar. Bu eşiğin altında güvenle tespit edilen nesneler dikkate alınmayacaktır. Bu değerin ayarlanması yanlış pozitiflerin azaltılmasına yardımcı olabilir. |
iou | float | 0.7 | Maksimum Olmayan Bastırma (NMS) için Birlik Üzerinde Kesişme (IoU) eşiği. Daha düşük değerler, üst üste binen kutuları ortadan kaldırarak daha az tespitle sonuçlanır, bu da kopyaları azaltmak için kullanışlıdır. |
imgsz | int or tuple | 640 | Çıkarım için görüntü boyutunu tanımlar. Tek bir tamsayı olabilir 640 kare yeniden boyutlandırma veya bir (yükseklik, genişlik) tuple için. Doğru boyutlandırma algılamayı iyileştirebilir doğruluk ve işlem hızı. |
half | bool | False | Desteklenen GPU'larda model çıkarımını doğruluk üzerinde minimum etkiyle hızlandırabilen yarı hassas (FP16) çıkarımı etkinleştirir. |
device | str | None | Çıkarım için cihazı belirtir (örn, cpu , cuda:0 veya 0 ). Kullanıcıların CPU, belirli bir GPU veya model yürütme için diğer hesaplama cihazları arasında seçim yapmasına olanak tanır. |
max_det | int | 300 | Görüntü başına izin verilen maksimum algılama sayısı. Modelin tek bir çıkarımda tespit edebileceği toplam nesne sayısını sınırlayarak yoğun sahnelerde aşırı çıktıları önler. |
vid_stride | int | 1 | Video girişleri için kare atlama. Zamansal çözünürlük pahasına işlemeyi hızlandırmak için videolardaki karelerin atlanmasına izin verir. 1 değeri her kareyi işler, daha yüksek değerler kareleri atlar. |
stream_buffer | bool | False | Video akışları için gelen çerçevelerin sıraya alınıp alınmayacağını belirler. Eğer False yeni kareleri yerleştirmek için eski kareler bırakılır (gerçek zamanlı uygulamalar için optimize edilmiştir). Eğer `True' ise, yeni kareleri bir tamponda sıraya koyarak hiçbir karenin atlanmamasını sağlar, ancak çıkarım FPS'si akış FPS'sinden düşükse gecikmeye neden olur. |
visualize | bool | False | Çıkarım sırasında model özelliklerinin görselleştirilmesini etkinleştirerek modelin "ne gördüğüne" dair içgörü sağlar. Hata ayıklama ve model yorumlama için kullanışlıdır. |
augment | bool | False | Tahminler için test zamanı artırımını (TTA) etkinleştirerek çıkarım hızı pahasına tespit sağlamlığını potansiyel olarak iyileştirir. |
agnostic_nms | bool | False | Farklı sınıfların örtüşen kutularını birleştiren, sınıftan bağımsız Maksimum Olmayan Bastırma (NMS) özelliğini etkinleştirir. Sınıf çakışmasının yaygın olduğu çok sınıflı algılama senaryolarında kullanışlıdır. |
classes | list[int] | None | Tahminleri bir dizi sınıf kimliğine göre filtreler. Yalnızca belirtilen sınıflara ait tespitler döndürülür. Çok sınıflı algılama görevlerinde ilgili nesnelere odaklanmak için kullanışlıdır. |
retina_masks | bool | False | Yüksek çözünürlüklü segmentasyon maskeleri döndürür. Döndürülen maskeler (masks.data ) etkinleştirilmişse orijinal görüntü boyutuyla eşleşecektir. Devre dışı bırakılırsa, çıkarım sırasında kullanılan görüntü boyutuna sahip olurlar. |
embed | list[int] | None | Özellik vektörlerinin veya katıştırmaların çıkarılacağı katmanları belirtir. Kümeleme veya benzerlik arama gibi sonraki görevler için kullanışlıdır. |
project | str | None | Tahmin çıktılarının kaydedildiği proje dizininin adı save etkinleştirilir. |
name | str | None | Tahmin çalışmasının adı. Proje klasörü içinde tahmin çıktılarının saklanacağı bir alt dizin oluşturmak için kullanılır. save etkinleştirilir. |
Argümanlar model.track
Tartışma | Tip | Varsayılan | Açıklama |
---|---|---|---|
source | str | None | Resimler veya videolar için kaynak dizini belirtir. Dosya yollarını ve URL'leri destekler. |
persist | bool | False | Video dizileri boyunca kimlikleri koruyarak nesnelerin kareler arasında kalıcı olarak izlenmesini sağlar. |
tracker | str | botsort.yaml | Kullanılacak izleme algoritmasını belirtir, örn, bytetrack.yaml veya botsort.yaml . |
conf | float | 0.3 | Algılamalar için güven eşiğini ayarlar; düşük değerler daha fazla nesnenin izlenmesine izin verir ancak yanlış pozitifler içerebilir. |
iou | float | 0.5 | Çakışan algılamaları filtrelemek için Birlik üzerinde Kesişim (IoU) eşiğini ayarlar. |
classes | list | None | Sonuçları sınıf dizinine göre filtreler. Örneğin, classes=[0, 2, 3] yalnızca belirtilen sınıfları izler. |
verbose | bool | True | İzleme sonuçlarının görüntülenmesini kontrol ederek izlenen nesnelerin görsel bir çıktısını sağlar. |
SSS
Ultralytics YOLO11 kullanarak antrenmanlarımı nasıl izleyebilirim?
Antrenmanlarınızı Ultralytics YOLO11 kullanarak izlemek için, vücudun önemli noktalarını ve eklemlerini gerçek zamanlı olarak izlemek ve analiz etmek üzere poz tahmini özelliklerinden yararlanabilirsiniz. Bu sayede egzersiz formunuz hakkında anında geri bildirim alabilir, tekrarları sayabilir ve performans metriklerini ölçebilirsiniz. Gösterildiği gibi şınav, barfiks veya ab egzersizleri için sağlanan örnek kodu kullanarak başlayabilirsiniz:
import cv2
from ultralytics import solutions
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 = solutions.AIGym(
line_width=2,
show=True,
kpts=[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
im0 = gym.monitor(im0)
cv2.destroyAllWindows()
Daha fazla özelleştirme ve ayar için belgelerdeki AIGym bölümüne başvurabilirsiniz.
Egzersiz takibi için Ultralytics YOLO11 kullanmanın faydaları nelerdir?
Antrenman takibi için Ultralytics YOLO11 adresini kullanmak birkaç önemli avantaj sağlar:
- Optimize Edilmiş Performans: Antrenmanları izleme verilerine göre uyarlayarak daha iyi sonuçlar elde edebilirsiniz.
- Hedefe Ulaşma: Ölçülebilir ilerleme için fitness hedeflerini kolayca takip edin ve ayarlayın.
- Kişiselleştirme: Optimum etkinlik için kişisel verilerinize dayalı özelleştirilmiş egzersiz planları alın.
- Sağlık Farkındalığı: Potansiyel 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 alın.
Bu faydaları uygulamalı olarak görmek için bir YouTube video gösterimini izleyebilirsiniz.
Ultralytics YOLO11 egzersizleri tespit etme ve izleme konusunda ne kadar doğru?
Ultralytics YOLO11, son teknoloji ürünü poz tahmin yetenekleri sayesinde egzersizleri tespit etme ve izleme konusunda son derece hassastır. Temel vücut işaretlerini ve eklemleri doğru bir şekilde izleyerek egzersiz formu ve performans ölçümleri hakkında gerçek zamanlı geri bildirim sağlayabilir. Modelin önceden eğitilmiş ağırlıkları ve sağlam mimarisi yüksek hassasiyet ve güvenilirlik sağlar. Gerçek dünyadan örnekler için dokümantasyondaki şınav ve barfiks sayımını gösteren gerçek dünya uygulamaları bölümüne göz atın.
Özel egzersiz rutinleri için Ultralytics YOLO11 adresini kullanabilir miyim?
Evet, Ultralytics YOLO11 özel egzersiz rutinleri için uyarlanabilir. Bu AIGym
sınıfı "pushup", "pullup" ve "abworkout" gibi farklı poz türlerini destekler. Belirli egzersizleri tespit etmek için anahtar noktaları ve açıları belirleyebilirsiniz. İşte örnek bir kurulum:
from ultralytics import solutions
gym = solutions.AIGym(
line_width=2,
show=True,
kpts=[6, 8, 10],
)
Argümanları ayarlama hakkında daha fazla bilgi için bkz. Argümanlar AIGym
bölümü. Bu esneklik, çeşitli egzersizleri izlemenize ve rutinleri ihtiyaçlarınıza göre özelleştirmenize olanak tanır.
Antrenman izleme çıktısını Ultralytics YOLO11 kullanarak nasıl kaydedebilirim?
Egzersiz izleme çıktısını kaydetmek için kodu, işlenen kareleri kaydeden bir video yazıcı içerecek şekilde değiştirebilirsiniz. İşte bir örnek:
import cv2
from ultralytics import solutions
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 = solutions.AIGym(
line_width=2,
show=True,
kpts=[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
im0 = gym.monitor(im0)
video_writer.write(im0)
cv2.destroyAllWindows()
video_writer.release()
Bu kurulum, izlenen videoyu bir çıktı dosyasına yazar. Daha fazla ayrıntı için Çıktıyı Kaydet ile İzleme Egzersizleri bölümüne bakın.