Giám sát luyện tập bằng Ultralytics YOLO11
Giám sát 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 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 luyện, theo dõi các 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 tập luyện cho cả người dùng và huấn luyện viên.
Xem: Cách Theo dõi các Bài tập Thể dục với Ultralytics YOLO | Squats, Leg Extension, Pushups và các bài khác
Ưu điểm của Giám sát Luyện tập
- Hiệu suất được tối ưu hóa: Điều chỉnh các bài tập dựa trên dữ liệu giám sát để có kết quả tốt hơn.
- Đạt được mục tiêu: Theo dõi và điều chỉnh các mục tiêu tập luyện để có được tiến trình có thể đo lường được.
- Cá nhân hóa: Các 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 biết về sức khỏe: Phát hiện sớm các mẫu chỉ ra các vấn đề về sức khỏe hoặc luyện tập 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à đặt mục tiêu thực tế.
Các ứng dụng thực tế
Theo dõi luyện tập | Theo dõi luyện tập |
---|---|
![]() |
![]() |
Đếm số lần chống đẩy | Đếm số lần hít xà |
Giám sát quá trình tập luyện bằ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 đồ Điểm then chốt
AIGym
Các đối số
Đây là bảng với AIGym
các đối số:
Đối số | Loại | Mặc định | Mô tả |
---|---|---|---|
model |
str |
None |
Đường dẫn đến Tệp Mô hình Ultralytics YOLO. |
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à, squat, tập cơ bụng. |
Hàm AIGym
giải pháp cũng hỗ trợ một loạt các tham số theo dõi đối tượng:
Đối số | Loại | Mặc định | Mô 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 cá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 Intersection over Union (IoU) để lọc các phát hiện trùng lặp. |
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 đầu ra trực quan về các đối tượng được theo dõi. |
device |
str |
None |
Chỉ định thiết bị cho 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 GPU cụ thể hoặc các thiết bị tính toán khác để thực thi mô hình. |
Ngoài ra, có thể áp dụng các cài đặt hiển thị sau:
Đối số | Loại | Mặc định | Mô tả |
---|---|---|---|
show |
bool |
False |
Nếu True , hiển thị hình ảnh hoặc video đã chú thích trong một cửa sổ. Hữu ích để có 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 đường kẻ đượ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õ ràng hơn. |
show_conf |
bool |
True |
Hiển thị điểm tin cậy cho mỗi lần phát hiện cùng với nhãn. Cung cấp cái nhìn sâu sắc về độ chắc chắn của mô hình cho mỗi lần phát hiện. |
show_labels |
bool |
True |
Hiển thị nhãn cho mỗi lần phát hiện trong đầu ra trực quan. Cung cấp sự hiểu biết ngay lập tức về các đối tượng được phát hiện. |
Câu hỏi thường gặp
Làm cách nào để theo dõi quá trình luyện tập của tôi bằng Ultralytics YOLO11?
Để theo dõi quá trình tập luyện của bạn bằ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 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ề hình thức tập luyện, đế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 các bài tập chống đẩy, kéo xà hoặc gập bụng như được hiển thị:
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()
Để biết thêm các tùy chỉnh và cài đặt, bạn có thể tham khảo phần AIGym trong tài liệu.
Những lợi ích khi sử dụng Ultralytics YOLO11 để theo dõi quá trình tập luyện là gì?
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 các bài tập dựa trên dữ liệu giám sát, 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 các mục tiêu tập luyện để có được tiến trình có thể đo lường được.
- Cá nhân hóa: Nhận các 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 biết 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 các 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 để thấy những lợi ích này trong thực tế.
Ultralytics YOLO11 chính xác đến mức nào 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ờ các khả năng ước tính tư thế hiện đại. Nó có thể theo dõi chính xác các điểm mốc và khớp cơ thể chính, cung cấp phản hồi theo thời gian thực về hình thức tập luyện và các chỉ số hiệu suất. Trọng số đượ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. Để xem 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 việc đếm số lần chống đẩy và kéo xà.
Tôi có thể sử dụng Ultralytics YOLO11 cho các thói quen tập luyện tùy chỉnh không?
Có, Ultralytics YOLO11 có thể được điều chỉnh cho các bài tập tùy chỉnh. Các AIGym
lớp hỗ trợ các loại dáng 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ể. Dưới đây là một ví dụ về 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ề cách thiết lập các đối số, hãy tham khảo Các đối số AIGym
phần. Sự 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 mục tiêu về thể chất.
Làm thế nào để lưu kết quả theo dõi quá trình luyện tập bằng Ultralytics YOLO11?
Để lưu kết quả giám sát quá trình tập luyện, bạn có thể sửa đổi code để thêm một video writer lưu các frame đã xử lý. Đâ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 lại 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 của mình sau này hoặc chia sẻ nó với huấn luyện viên để nhận thêm phản hồi.