Giám sát bài tập thể dục bằng Ultralytics YOLO26#
Giám sát bài tập thể dục bằng ước tính tư thế với Ultralytics YOLO26 giúp đánh giá bài tập hiệu quả hơn nhờ theo dõi chính xác các điểm mốc và khớp quan trọng trên cơ thể theo thời gian thực. Công nghệ này cung cấp phản hồi tức thì về tư thế tập, theo dõi lịch trình tập luyện và đo lường các chỉ số hiệu suất, giúp tối ưu hóa buổi tập cho cả người tập lẫn huấn luyện viên.
Xem: Cách giám sát bài tập thể dục bằng Ultralytics YOLO | Squat, duỗi chân, chống đẩy và nhiều bài tập khác
Ưu điểm của việc giám sát bài tập thể dục#
- Tối ưu hiệu suất: Điều chỉnh bài tập dựa trên dữ liệu giám sát để đạt kết quả tốt hơn.
- Đạt mục tiêu: Theo dõi và điều chỉnh mục tiêu thể chất để ghi nhận tiến độ có thể đo lường.
- Cá nhân hóa: Xây dựng kế hoạch tập luyện tùy chỉnh dựa trên dữ liệu cá nhân để nâng cao hiệu quả.
- Nâng cao nhận thức về sức khỏe: Phát hiện sớm các kiểu 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 dựa trên thông tin: Đưa ra quyết định dựa trên dữ liệu để điều chỉnh lịch tập và đặt mục tiêu thực tế.
Ứng dụng thực tế#
| Giám sát bài tập thể dục | Giám sát bài tập thể dục |
|---|---|
![]() | ![]() |
| Đếm lần chống đẩy | Đếm lần kéo xà |
Giám sát bài tập thể dục bằng YOLO26#
Solution AIGym thực hiện ước tính tư thế và đếm số lần lặp bằng cách đo góc tạo bởi ba keypoint khi chi chuyển động giữa các ngưỡng up_angle và down_angle. Chọn keypoint cho bài tập bạn muốn theo dõi bằng kpts, sau đó chạy solution trên video bằng Python API hoặc CLI.
# 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]"Sơ đồ keypoint#

Các đối số của AIGym#
Dưới đây là bảng các đối số của AIGym:
| Đối số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
model | str | None | Đường dẫn đến tệp model 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] | [6, 8, 10] | Danh sách ba chỉ số keypoint dùng để theo dõi bài tập. Các keypoint này tương ứng với khớp hoặc bộ phận cơ thể như vai, khuỷu tay và cổ tay, dành cho các bài tập như chống đẩy, kéo xà, squat và bài tập cơ bụng. |
line_width | int | 2 | Độ dày đường viền của box, keypoint và số đếm mà giải pháp vẽ. |
verbose | bool | True | Bật nhật ký theo từng frame của giải pháp, gồm shape đầu vào, số lượng class và tốc độ xử lý. Bản thân lệnh gọi tracking luôn không ghi nhật ký. |
Solution AIGym cũng hỗ trợ nhiều tham số theo dõi đối tượng:
| Đối số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
tracker | str | 'tracktrack.yaml' | Chỉ định thuật toán theo dõi cần sử dụng. Các tùy chọn tích hợp sẵn: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml. |
conf | float | 0.25 | Đặt ngưỡng confidence cho các đối tượng đượ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ả kết quả dương tính giả. |
iou | float | 0.7 | Đặt ngưỡng Intersection over Union (IoU) để lọc các đối tượng phát hiện bị chồng lấn. |
classes | list | None | Lọc kết quả theo chỉ mục class. Ví dụ: classes=[0, 2, 3] chỉ theo dõi các class được chỉ định. |
device | str | None | Chỉ định thiết bị dùng để suy luận (ví dụ: cpu, cuda:0 hoặc 0). Cho phép người dùng chọn CPU, một GPU cụ thể hoặc thiết bị tính toán khác để chạy model. |
imgsz | int or tuple | 640 | Kích thước ảnh suy luận mục tiêu: số nguyên cho ảnh vuông hoặc cặp (height, width). Kích thước sẽ được điều chỉnh theo stride của model. |
max_det | int | 300 | Số lượng đối tượng phát hiện tối đa được giữ lại trong mỗi khung hình trước khi theo dõi, giới hạn số đối tượng mà một giải pháp xử lý trong các cảnh dày đặc. |
quantize | int or str | None | Độ chính xác suy luận: 16 (FP16) hoặc 32/không đặt (FP32) cho model PyTorch và TorchScript; các định dạng khác tính toán ở độ chính xác do artifact và runtime lựa chọn. Thay thế cờ half đã lỗi thời. |
Ngoài ra, có thể áp dụng các thiết lập trực quan hóa sau:
| Đối số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
show | bool | False | Nếu True, hiển thị ảnh hoặc video đã được chú thích trong một cửa sổ. Hữu ích để nhận phản hồi trực quan ngay lập tức trong quá trình phát triển hoặc kiểm thử. |
show_labels | bool | True | Hiển thị nhãn cho mỗi detection trong đầu ra trực quan. Giúp nhận biết ngay các đối tượng được phát hiện. |
Câu hỏi thường gặp#
Để giám sát bài tập thể dục bằng Ultralytics YOLO26, 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 cũng như khớp quan trọng trên cơ thể theo thời gian thực. Nhờ đó, bạn có thể nhận phản hồi tức thì về tư thế tập, đếm số lần lặp 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ụ cho bài chống đẩy, kéo xà hoặc tập bụng như minh họa bên dưới:
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) cap.release() cv2.destroyAllWindows()Để tùy chỉnh thêm và thiết lập các tùy chọn, bạn có thể tham khảo phần AIGym trong tài liệu.
Sử dụng Ultralytics YOLO26 để giám sát bài tập thể dục mang lại một số lợi ích chính:
- Tối ưu hiệu suất: Bằng cách điều chỉnh 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 mục tiêu: Dễ dàng theo dõi và điều chỉnh mục tiêu thể chất để ghi nhận tiến độ có thể đo lường.
- 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 để đạt hiệu quả tối ưu.
- Nâng cao nhận thức về sức khỏe: Phát hiện sớm các kiểu dấu hiệu cho thấy 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 dựa trên thông tin: Đưa ra quyết định dựa trên dữ liệu để điều chỉnh lịch tập và đặt mục tiêu thực tế.
Bạn có thể xem video minh họa trên YouTube để thấy những lợi ích này trong thực tế.
Ultralytics YOLO26 phát hiện và theo dõi bài tập với độ chính xác cao nhờ khả năng ước tính tư thế tiên tiến. Model có thể theo dõi chính xác các điểm mốc và khớp quan trọng trên cơ thể, cung cấp phản hồi theo thời gian thực về tư thế tập và các chỉ số hiệu suất. Trọng số pretrained và kiến trúc mạnh mẽ của model đảm bảo độ chính xác và độ tin cậy cao. Để xem ví dụ thực tế, hãy tham khảo phần ứng dụng thực tế trong tài liệu, nơi trình bày cách đếm lần chống đẩy và kéo xà.
Có, Ultralytics YOLO26 có thể được tùy chỉnh cho các bài tập riêng. Lớp
AIGymphát hiện số lần lặp của bài tập bằng các tham sốup_angle,down_anglevàkpts. Bạn có thể chỉ định keypoint và góc để phát hiện các bài tập cụ thể. Sau đây là ví dụ thiết lập:from ultralytics import solutions gym = solutions.AIGym( line_width=2, show=True, kpts=[6, 8, 10], # Với bài chống đẩy - có thể tùy chỉnh cho các bài tập khác )Để biết thêm chi tiết về cách thiết lập tham số, hãy tham khảo phần Tham số
AIGym. Tính linh hoạt này cho phép bạn giám sát nhiều bài tập và tùy chỉnh lịch tập dựa trên mục tiêu thể chất của mình.Để lưu kết quả giám sát bài tập thể dục, bạn có thể sửa đổi mã để thêm bộ ghi video nhằm lưu các khung hình đã xử lý. Sau đây là 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 đã giám sát 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ẻ video với huấn luyện viên để nhận thêm phản hồi.

