Bỏ qua nội dung

Theo dõi bài tập bằng cách sử dụng Ultralytics YOLO11

Giám sát bài tập mở trong Colab

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



Đồng hồ: Theo dõi bài tập bằng cách sử dụng Ultralytics YOLO11 | Chống đẩy, Kéo xà, Bài tập cơ bụng

Lợi ích của việc theo dõi quá trình tập luyện

  • Hiệu suất được tối ưu hóa: Điều chỉnh bài tập luyện dựa trên dữ liệu theo dõi để có kết quả tốt hơn.
  • Đạt được mục tiêu: Theo dõi và điều chỉnh mục tiêu thể dục để có tiến triển rõ rệt.
  • Cá nhân hóa: Kế hoạch tập luyện được 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 dấu hiệu cho thấy vấn đề sức khỏe hoặc tập luyện quá sức.
  • Quyết định sáng suốt: Quyết định dựa trên dữ liệu để điều chỉnh thói quen và đặt ra các mục tiêu thực tế.

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

Theo dõi tập luyện Theo dõi tập luyện
Đếm PushUp Đếm PullUps
Đếm PushUp Đếm PullUps

Theo dõi bài tập bằng cách sử dụng Ultralytics YOLO

# Run a workout example
yolo solutions workout show=True

# Pass a source video
yolo solutions workout source="path/to/video.mp4"

# Use keypoints for pushups
yolo solutions workout kpts="[6, 8, 10]"
import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

# Video writer
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_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Init AIGym
gym = solutions.AIGym(
    show=True,  # display the frame
    kpts=[6, 8, 10],  # keypoints 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 processing is complete.")
        break

    results = gym(im0)

    # print(results)  # access the output

    video_writer.write(results.plot_im)  # write the processed frame.

cap.release()
video_writer.release()
cv2.destroyAllWindows()  # destroy all opened windows

Bản đồ KeyPoints

Đặt hàng keyPoints Ultralytics YOLO11 Tư thế

AIGym Lập luận

Đây là một bảng với AIGym lập luận:

Lý lẽ Kiểu Mặc định Sự miêu tả
model str None Đường dẫn đến Ultralytics YOLO Tệp mẫu.
up_angle float 145.0 Ngưỡng góc cho tư thế 'lên'.
down_angle float 90.0 Ngưỡng góc cho tư thế 'xuống'.
kpts list[int, int, int] [6, 8, 10] Danh sách các điểm chính được sử dụng để theo dõi quá trình tập luyện. Các điểm chính này tương ứng với các khớp hoặc bộ phận cơ thể, chẳng hạn như vai, khuỷu tay và cổ tay, cho các bài tập như chống đẩy, kéo xà, gập người, tập cơ bụng.

Các AIGym Giải pháp này cũng hỗ trợ một loạt các tham số theo dõi đối tượng:

Lý lẽ Kiểu Mặc định Sự miêu tả
tracker str 'botsort.yaml' Chỉ định thuật toán theo dõi để sử dụng, ví dụ: bytetrack.yaml hoặc botsort.yaml.
conf float 0.3 Đặt ngưỡng tin cậy cho việc phát hiện; giá trị thấp hơn cho phép theo dõi nhiều đối tượng hơn nhưng có thể bao gồm các kết quả dương tính giả.
iou float 0.5 Đặt ngưỡng Giao điểm trên Liên hợp (IoU) để lọc các phát hiện chồng chéo.
classes list None Lọc kết quả theo chỉ số lớp. Ví dụ, classes=[0, 2, 3] chỉ theo dõi các lớp được chỉ định.
verbose bool True Kiểm soát việc hiển thị kết quả theo dõi, cung cấp hình ảnh trực quan về các đối tượng được theo dõi.
device str None Chỉ định thiết bị để suy luận (ví dụ: cpu, cuda:0 hoặc 0). Cho phép người dùng lựa chọn giữa CPU , một cụ thể GPU hoặc các thiết bị tính toán khác để thực hiện mô hình.

Ngoài ra, có thể áp dụng các cài đặt trực quan sau:

Lý lẽ Kiểu Mặc định Sự miêu tả
show bool False Nếu như True, hiển thị hình ảnh hoặc video có chú thích trong một cửa sổ. Hữu ích cho phản hồi trực quan ngay lập tức trong quá trình phát triển hoặc thử nghiệm.
line_width None or int None Chỉ định độ rộng đường của hộp giới hạn. Nếu None, độ rộng của đường được tự động điều chỉnh dựa trên kích thước hình ảnh. Cung cấp tùy chỉnh trực quan để rõ nét hơn.

CÂU HỎI THƯỜNG GẶP

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

Để theo dõi quá trình tập luyện của bạn bằng cách sử dụng Ultralytics YOLO11 , 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 điểm mốc và khớp chính của cơ thể theo 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ề hình thức tập luyện của mình, đếm số lần lặp lại và đo lường số liệu 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 các bài tập chống đẩy, kéo xà hoặc tập cơ bụng như minh họa:

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.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 processing is complete.")
        break
    results = gym(im0)

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 YOLO11 để theo dõi quá trình tập luyện?

Sử dụng Ultralytics YOLO11 để theo dõi quá trình tập luyện mang lại một số lợi ích chính:

  • Hiệu suất được tối ưu hóa: Bằng cách điều chỉnh bài tập dựa trên dữ liệu theo dõi, bạn có thể đạt được kết quả tốt hơn.
  • Đạt được mục tiêu: Dễ dàng theo dõi và điều chỉnh mục tiêu thể dục để có tiến trình đo lường được.
  • Cá nhân hóa: 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 để đạt hiệu quả tối ưu.
  • Nhận thức về sức khỏe: Phát hiện sớm các dấu hiệu cho thấy các vấn đề sức khỏe tiềm ẩn hoặc tình trạng 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 ra các mục tiêu thực tế.

Bạn có thể xem video hướng dẫn trên YouTube để thấy được những lợi ích này.

Độ chính xác là bao nhiêu? Ultralytics YOLO11 trong việc phát hiện và theo dõi các bài tập?

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

Tôi có thể sử dụng Ultralytics YOLO11 để có bài tập luyện tùy chỉnh?

Đúng, Ultralytics YOLO11 có thể được điều chỉnh cho các thói quen tập luyện tùy chỉnh. AIGym lớp hỗ trợ các loại tư thế khác nhau như pushup, pullup, Và abworkout. 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ể. Sau đây là một ví dụ thiết lập:

from ultralytics import solutions

gym = solutions.AIGym(
    line_width=2,
    show=True,
    kpts=[6, 8, 10],  # For pushups - can be customized for other exercises
)

Để biết thêm chi tiết về việc thiết lập đố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 nhiều bài tập khác nhau và tùy chỉnh các thói quen dựa trên mục tiêu thể dục.

Làm thế nào tôi có thể lưu kết quả theo dõi quá trình tập luyện bằng cách sử dụng Ultralytics YOLO11 ?

Để lưu kết quả theo dõi quá trình 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ý. Sau đây là một ví dụ:

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.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 processing is complete.")
        break
    results = gym(im0)
    video_writer.write(results.plot_im)

cap.release()
video_writer.release()
cv2.destroyAllWindows()

Thiết lập này ghi video được theo dõi vào một tệp đầu ra, cho phép bạn xem lại hiệu suất tập luyện sau đó hoặc chia sẻ với huấn luyện viên để có thêm phản hồi.

📅 Được tạo ra cách đây 1 năm ✏️ Đã cập nhật cách đây 5 ngày

Bình luận