Ultralytics YOLO27:

Theo dõi buổi tập bằng Ultralytics YOLO26#

Open Workouts Monitoring In Colab

Theo dõi buổi tập thông qua ước tính tư thế bằng Ultralytics YOLO26 giúp nâng cao việc đánh giá bài tập bằng cách theo dõi chính xác các mốc cơ thể và khớp 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 các bài tập trong buổi tập và đo lường các chỉ số hiệu suất, qua đó tối ưu hóa các buổi tập cho cả người dùng và huấn luyện viên.



Watch: How to Monitor Workout Exercises with Ultralytics YOLO | Squats, Leg Extension, Pushups and More

Ưu điểm của việc theo dõi buổi tập#

  • Tối ưu hóa hiệu suất: Điều chỉnh các buổi tập dựa trên dữ liệu theo dõi để đạt kết quả tốt hơn.
  • Đạt mục tiêu: Theo dõi và điều chỉnh các mục tiêu thể chất để ghi nhận tiến bộ 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ả.
  • Nhận thức về sức khỏe: Phát hiện sớm các mô hình cho thấy vấn đề sức khỏe 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 thói quen tập luyện và đặt ra các mục tiêu thực tế.

Ứng dụng thực tế#

Theo dõi buổi tậpTheo dõi buổi tập
Đếm số lần chống đẩy bằng YOLO với ước tính tư thếĐếm số lần kéo xà bằng YOLO với ước tính tư thế
Đếm số lần chống đẩyĐếm số lần kéo xà

Theo dõi buổi tập bằng YOLO26#

Giải pháp 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 chính khi một chi chuyển động giữa các ngưỡng up_angledown_angle. Chọn các keypoint cho bài tập bạn muốn theo dõi bằng kpts, sau đó chạy giải pháp trên video bằng Python API hoặc CLI.

Theo dõi buổi tập 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]"

Bản đồ keypoint#

Sơ đồ thứ tự keypoint của ước tính tư thế YOLO

Các argument của AIGym#

Dưới đây là bảng các tham số của AIGym:

Đối sốKiểuMặc địnhMô tả
modelstrNoneĐường dẫn đến file model Ultralytics YOLO.
up_anglefloat145.0Ngưỡng góc cho tư thế 'lên'.
down_angleint90Ngưỡng góc cho tư thế 'xuống'.
kptslist[int]'[6, 8, 10]'List gồm ba chỉ số keypoint được 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ể, 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 và tập cơ bụng.
line_widthint2Độ dày đường kẻ cho các box, keypoint và số lượng mà solution vẽ.
verboseboolTrueBật log theo từng frame của solution, gồm kích thước input, số lượng class và tốc độ xử lý. Riêng lệnh tracking luôn ở chế độ im lặng.

Giải pháp AIGym cũng hỗ trợ nhiều tham số theo dõi đối tượng:

Đối sốKiểuMặc địnhMô tả
trackerstr'botsort.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.
conffloat0.25Thiết lập ngưỡng độ tin cậy cho các detection; 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 false positive.
ioufloat0.7Thiết lập ngưỡng Intersection over Union (IoU) để lọc các detection chồng lấn.
classeslistNoneLọc kết quả theo chỉ số class. Ví dụ, classes=[0, 2, 3] chỉ theo dõi các class được chỉ định.
devicestrNoneChỉ định thiết bị dùng cho inference (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 model.
imgszint or tuple640Kích thước ảnh inference mục tiêu: một số nguyên cho ảnh vuông hoặc một cặp (height, width). Các hình dạng được điều chỉnh theo stride của model.
max_detint300Số lượng detection tối đa được giữ lại trên mỗi frame trước khi tracking, giới hạn các đối tượng mà một solution xử lý trong các scene đông đúc.
quantizeint or strNoneĐộ chính xác inference: 16 (FP16) hoặc 32/không thiết lập (FP32) đối với các model PyTorch và TorchScript; các định dạng khác tính toán ở độ chính xác mà artifact và runtime của chúng chọn. Thay thế cờ half đã bị loại bỏ.

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

Đối sốKiểuMặc địnhMô tả
showboolFalseNếu True, hiển thị image hoặc video đã được annotate 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 development hoặc testing.
show_confboolTrueHiển thị score confidence cho mỗi detection bên cạnh label. Cung cấp thông tin về mức độ chắc chắn của model đối với từng detection.
show_labelsboolTrueHiển thị label cho mỗi detection trong output trực quan. Cung cấp nhận biết tức thì về các object được phát hiện.

FAQ#

  • Để theo dõi buổi tập 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 mốc cơ thể và khớp chính 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 đoạn code mẫu đượ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ư sau:

    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à thiết lập thêm, bạn có thể tham khảo phần AIGym trong tài liệu.

  • Sử dụng Ultralytics YOLO26 để theo dõi buổi tập mang lại 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 các buổ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 mục tiêu: Dễ dàng theo dõi và điều chỉnh các mục tiêu thể chất để ghi nhận tiến bộ 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.
    • Nhận thức về sức khỏe: Phát hiện sớm các mô hình cho thấy những 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 thói quen tập luyện và đặt ra các mục tiêu thực tế.

    Bạn có thể xem video minh họa trên YouTube để thấy các lợi ích này trong thực tế.

  • Ultralytics YOLO26 có độ chính xác cao trong việc phát hiện và theo dõi bài tập 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 mốc cơ thể và khớp chính, 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ố được pretrained và kiến trúc mạnh mẽ của model đảm bảo độ chính xác cao và độ tin cậy tốt. Để xem các ví dụ trong thực tế, hãy tham khảo phần ứng dụng thực tế trong tài liệu, trong đó minh họa việc đếm số lần chống đẩy và kéo xà.

  • Có, Ultralytics YOLO26 có thể được điều chỉnh cho các bài tập tùy chỉnh. Class AIGym phát hiện số lần lặp của bài tập bằng các đối số up_angle, down_anglekpts. Bạn có thể chỉ định keypoint và góc để phát hiện các bài tập cụ thể. Dưới đâ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ề cách thiết lập các đối số, hãy tham khảo phần Arguments AIGym. 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 bài tập dựa trên mục tiêu thể chất của mình.

  • Để lưu đầu ra theo dõi buổi tập, bạn có thể chỉnh sửa code để thêm trình ghi video lưu các frame đã xử lý. Dưới đâ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 đã theo dõi vào một file đầ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 để nhận thêm phản hồi.

Bình luận