Bỏ để qua phần nội dung

Giám sát tập luyện bằng cách sử dụng Ultralytics YOLOv8

Theo dõi tập luyện thông qua ước tính tư thế với Ultralytics YOLOv8 Tăng cường đánh giá tập thể dục bằng cách theo dõi chính xác các mốc và khớp cơ thể chính trong thời gian thực. Công nghệ này cung cấp phản hồi tức thì về hình thức tập thể dục, theo dõi thói quen tập luyện và đo lường các chỉ số hiệu suất, tối ưu hóa các buổi đào tạo cho người dùng và huấn luyện viên.



Xem: Giám sát tập luyện bằng cách sử dụng Ultralytics YOLOv8 | Chống đẩy, kéo lên, tập luyện cơ bụng

Ưu điểm của giám sát tập luyện?

  • Tối ưu hóa hiệu suất: Điều chỉnh các bài tập dựa trên dữ liệu theo dõi để có kết quả tốt hơn.
  • Thành tựu mục tiêu: Theo dõi và điều chỉnh mục tiêu tập thể dục để có tiến độ có thể đo lường được.
  • Cá nhân: Kế hoạch tập luyện tùy chỉnh dựa trên dữ liệu cá nhân để đạt hiệu quả.
  • Nhận thức về sức khỏe: Phát hiện sớm các mô hình cho thấy các vấn đề sức khỏe hoặc tập luyện quá sức.
  • Quyết định sáng suốt: Các quyết định dựa trên dữ liệu để điều chỉnh thói quen và thiết lập các mục tiêu thực tế.

Ứng dụng trong thế giới thực

Giám sát tập luyện Giám sát tập luyện
Đếm chống đẩy Đếm PullUps
Đếm chống đẩy Đếm PullUps

Ví dụ giám sát tập luyện

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()
Hỗ trợ

Hỗ trợ "chống đẩy", "pullup" và "abworkout"

Bản đồ KeyPoints

Thứ tự keyPoints Ultralytics YOLOv8 Tư thế

Lập luận AIGym

Tên Kiểu Mặc định Sự miêu tả
kpts_to_check list None Danh sách ba chỉ số chính, để đếm bài tập cụ thể, tiếp theo là Bản đồ điểm chính
line_thickness int 2 Độ dày của các đường được vẽ.
view_img bool False Gắn cờ để hiển thị hình ảnh.
pose_up_angle float 145.0 Ngưỡng góc cho tư thế 'lên'.
pose_down_angle float 90.0 Ngưỡng góc cho tư thế 'xuống'.
pose_type str pullup Loại tư thế để phát hiện ('pullup', pushup, abworkout, squat).

Lập luận model.predict

Tên Kiểu Mặc định Sự miêu tả
source str 'ultralytics/assets' Thư mục nguồn cho hình ảnh hoặc video
conf float 0.25 Ngưỡng tin cậy đối tượng để phát hiện
iou float 0.7 giao điểm trên ngưỡng hợp nhất (IoU) cho NMS
imgsz int or tuple 640 Kích thước hình ảnh dưới dạng vô hướng hoặc danh sách (h, w), tức là (640, 480)
half bool False sử dụng độ chính xác một nửa (FP16)
device None or str None thiết bị để chạy, tức là cuda thiết bị = 0/1/2/3 hoặc thiết bị =cpu
max_det int 300 Số lần phát hiện tối đa trên mỗi hình ảnh
vid_stride bool False Sải bước tốc độ khung hình video
stream_buffer bool False đệm tất cả các khung hình phát trực tuyến (True) hoặc trả về khung hình gần đây nhất (False)
visualize bool False Trực quan hóa các tính năng của mô hình
augment bool False Áp dụng tăng cường hình ảnh cho các nguồn dự đoán
agnostic_nms bool False NMS bất khả tri lớp
classes list[int] None Lọc kết quả theo lớp, tức là lớp = 0 hoặc lớp = [0,2,3]
retina_masks bool False Sử dụng mặt nạ phân đoạn có độ phân giải cao
embed list[int] None Trả về các vectơ / nhúng tính năng từ các lớp đã cho

Lập luận model.track

Tên Kiểu Mặc định Sự miêu tả
source im0 None Thư mục nguồn cho hình ảnh hoặc video
persist bool False Các rãnh liên tục giữa các khung hình
tracker str botsort.yaml Phương pháp theo dõi 'bytetrack' hoặc 'botsort'
conf float 0.3 Ngưỡng tin cậy
iou float 0.5 Ngưỡng IOU
classes list None Lọc kết quả theo lớp, tức là lớp = 0 hoặc lớp = [0,2,3]
verbose bool True Hiển thị kết quả theo dõi đối tượng

FAQ

Làm cách nào để theo dõi quá trình tập luyện của tôi bằng cách sử dụng Ultralytics YOLOv8?

Để theo dõi quá trình tập luyện của bạn bằng cách sử dụng Ultralytics YOLOv8, bạn có thể sử dụng khả năng ước tính tư thế để theo dõi và phân tích các mốc và khớp cơ thể chính trong thời gian thực. Điều này cho phép bạn nhận được phản hồi tức thì về biểu mẫu bài tập của mình, đếm số lần lặp lại và đo lường các chỉ số hiệu suất. Bạn có thể bắt đầu bằng cách sử dụng mã ví dụ được cung cấp cho bài tập chống đẩy, kéo hoặc tập cơ bụng như được hiển thị:

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

Để tùy chỉnh và cài đặt thêm, bạn có thể tham khảo phần AIGym trong tài liệu.

Lợi ích của việc sử dụng là gì Ultralytics YOLOv8 để theo dõi tập luyện?

Sử dụng Ultralytics YOLOv8 Để theo dõi tập luyện cung cấp một số lợi ích chính:

  • Tối ưu hóa hiệu suất: Bằng cách điều chỉnh tập luyện dựa trên dữ liệu theo dõi, bạn có thể đạt được kết quả tốt hơn.
  • Thành tựu mục tiêu: Dễ dàng theo dõi và điều chỉnh mục tiêu tập thể dục để đạt được tiến độ có thể đo lường được.
  • Cá nhân: Nhận kế hoạch tập luyện tùy chỉnh dựa trên dữ liệu cá nhân của bạn để có hiệu quả tối ưu.
  • Nhận thức về sức khỏe: Phát hiện sớm các mô hình cho thấy các vấn đề sức khỏe tiềm ẩn hoặc tập luyện quá sức.
  • Quyết định sáng suốt: Đưa ra quyết định dựa trên dữ liệu để điều chỉnh thói quen và đặt mục tiêu thực tế.

Bạn có thể xem video trình diễn trên YouTube để xem những lợi ích này đang hoạt động.

Độ chính xác như thế nào Ultralytics YOLOv8 trong việc phát hiện và theo dõi các bài tập?

Ultralytics YOLOv8 có độ chính xác cao trong việc phát hiện và theo dõi các bài tập do khả năng ước tính tư thế hiện đại của nó. Nó có thể theo dõi chính xác các mốc và khớp cơ thể chính, cung cấp phản hồi thời gian thực về hình thức tập thể dục và số liệu hiệu suất. Trọng lượng được đào tạo trước và kiến trúc mạnh mẽ của mô hình đảm bảo độ chính xác và độ tin cậy cao. Để biết các ví dụ trong thế giới thực, hãy xem phần ứng dụng trong thế giới thực trong tài liệu, trong đó giới thiệu các lần chống đẩy và kéo lên.

Tôi có thể sử dụng không Ultralytics YOLOv8 cho thói quen tập luyện tùy chỉnh?

Có Ultralytics YOLOv8 có thể được điều chỉnh cho thói quen tập luyện tùy chỉnh. Các AIGym Lớp học hỗ trợ các loại tư thế khác nhau như "chống đẩy", "kéo lên" và "tập luyện ab". Bạn có thể chỉ định các điểm chính và góc để phát hiện các bài tập cụ thể. Dưới đây là một thiết lập ví dụ:

from ultralytics import solutions

gym_object = solutions.AIGym(
    line_thickness=2,
    view_img=True,
    pose_type="squat",
    kpts_to_check=[6, 8, 10],
)

Để biết thêm chi tiết về cách đặt đối số, hãy tham khảo Lập luận AIGym phần. Tính linh hoạt này cho phép bạn theo dõi các bài tập khác nhau và tùy chỉnh các thói quen dựa trên nhu cầu của bạn.

Làm cách nào để lưu đầu ra theo dõi tập luyện bằng cách sử dụng Ultralytics YOLOv8?

Để lưu đầu ra giám sát tập luyện, bạn có thể sửa đổi mã để bao gồm trình ghi video lưu các khung hình đã xử lý. Đây là một ví dụ:

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

Thiết lập này ghi video được giám sát vào tệp đầu ra. Để biết thêm chi tiết, hãy tham khảo Giám sát tập luyện với lưu đầu ra phần.



Đã tạo 2023-12-02, Cập nhật 2024-07-05
Tác giả: glenn-jocher (12), bạch tuộc tham vọng (1), IvorZhu331 (1), RizwanMunawar (4)

Ý kiến