콘텐츠로 건너뛰기

Ultralytics YOLO11을 사용한 운동 모니터링

Colab에서 Open Workouts Monitoring 열기

Ultralytics YOLO11을 사용한 자세 추정을 통해 운동을 모니터링하면 주요 신체 랜드마크와 관절을 실시간으로 정확하게 추적하여 운동 평가를 향상시킬 수 있습니다. 이 기술은 운동 자세에 대한 즉각적인 피드백을 제공하고, 운동 루틴을 추적하며, 성능 지표를 측정하여 사용자와 트레이너 모두를 위한 훈련 세션을 최적화합니다.



참고: Ultralytics YOLO를 이용한 운동 자세 모니터링 방법 | 스쿼트, 레그 익스텐션, 팔굽혀펴기 등

운동 모니터링의 장점

  • 최적화된 성능: 더 나은 결과를 위해 모니터링 데이터를 기반으로 운동을 조정합니다.
  • 목표 달성: 측정 가능한 진행 상황을 위해 피트니스 목표를 추적하고 조정합니다.
  • 개인화: 효과적인 운동을 위해 개별 데이터를 기반으로 맞춤화된 운동 계획을 제공합니다.
  • 건강 인식: 건강 문제 또는 과도한 훈련을 나타내는 패턴을 조기에 감지합니다.
  • 정보에 입각한 의사 결정: 루틴을 조정하고 현실적인 목표를 설정하기 위한 데이터 기반 의사 결정.

실제 응용 프로그램

운동 모니터링 운동 모니터링
팔굽혀펴기 횟수 세기 턱걸이 횟수 세기
팔굽혀펴기 횟수 세기 턱걸이 횟수 세기

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

키포인트 맵

키포인트 순서 Ultralytics YOLO11 포즈

AIGym 인수

다음은 테이블에 AIGym 인수입니다.

인수 유형 기본값 설명
model str None Ultralytics YOLO 모델 파일의 경로입니다.
up_angle float 145.0 '위' 자세에 대한 각도 임계값입니다.
down_angle float 90.0 '아래' 자세에 대한 각도 임계값입니다.
kpts list[int, int, int] '[6, 8, 10]' 운동 모니터링에 사용되는 키포인트 목록입니다. 이러한 키포인트는 팔굽혀펴기, 턱걸이, 스쿼트, 복근 운동과 같은 운동을 위한 어깨, 팔꿈치, 손목과 같은 신체 관절 또는 부위에 해당합니다.

에 지정되어 있습니다. AIGym 솔루션은 또한 다양한 객체 추적 매개변수를 지원합니다.

인수 유형 기본값 설명
tracker str 'botsort.yaml' 사용할 추적 알고리즘을 지정합니다 (예: bytetrack.yaml 또는 botsort.yaml.
conf float 0.3 검출에 대한 신뢰도 임계값을 설정합니다. 값이 낮을수록 더 많은 객체를 추적할 수 있지만 오탐지가 포함될 수 있습니다.
iou float 0.5 겹치는 검출을 필터링하기 위한 IoU (Intersection over Union) 임계값을 설정합니다.
classes list None 클래스 인덱스별로 결과를 필터링합니다. 예를 들어, classes=[0, 2, 3] 지정된 클래스만 추적합니다.
verbose bool True 추적 결과 표시를 제어하여 추적된 객체의 시각적 출력을 제공합니다.
device str None 추론을 위한 장치를 지정합니다 (예: cpu, cuda:0 또는 0). 사용자는 모델 실행을 위해 CPU, 특정 GPU 또는 기타 컴퓨팅 장치 중에서 선택할 수 있습니다.

또한 다음과 같은 시각화 설정을 적용할 수 있습니다.

인수 유형 기본값 설명
show bool False 만약 True, 어노테이션이 적용된 이미지나 비디오를 창에 표시합니다. 개발 또는 테스트 중 즉각적인 시각적 피드백에 유용합니다.
line_width None or int None 경계 상자의 선 너비를 지정합니다. 만약 None, 선 너비는 이미지 크기에 따라 자동으로 조정됩니다. 명확성을 위해 시각적 사용자 정의를 제공합니다.
show_conf bool True 레이블과 함께 각 감지에 대한 신뢰도 점수를 표시합니다. 각 감지에 대한 모델의 확신에 대한 통찰력을 제공합니다.
show_labels bool True 시각적 출력에서 각 감지에 대한 레이블을 표시합니다. 감지된 객체에 대한 즉각적인 이해를 제공합니다.

FAQ

Ultralytics YOLO11을 사용하여 워크아웃을 어떻게 모니터링합니까?

Ultralytics YOLO11을 사용하여 운동을 모니터링하려면 포즈 추정 기능을 활용하여 주요 신체 랜드마크와 관절을 실시간으로 추적하고 분석할 수 있습니다. 이를 통해 운동 자세에 대한 즉각적인 피드백을 받고, 반복 횟수를 세고, 성능 지표를 측정할 수 있습니다. 다음과 같이 팔굽혀펴기, 턱걸이 또는 복근 운동에 대해 제공된 예제 코드를 사용하여 시작할 수 있습니다.

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

추가 사용자 정의 및 설정은 문서의 AIGym 섹션을 참조하세요.

운동 모니터링에 Ultralytics YOLO11을 사용할 때의 이점은 무엇인가요?

Ultralytics YOLO11을 활용하여 운동을 모니터링하면 다음과 같은 주요 이점이 있습니다:

  • 최적화된 성능: 모니터링 데이터를 기반으로 운동을 조정하면 더 나은 결과를 얻을 수 있습니다.
  • 목표 달성: 측정 가능한 진행 상황을 위해 피트니스 목표를 쉽게 추적하고 조정합니다.
  • 개인화: 최적의 효과를 위해 개인 데이터를 기반으로 맞춤화된 운동 계획을 받으세요.
  • 건강 인식: 잠재적인 건강 문제 또는 과도한 훈련을 나타내는 패턴을 조기에 감지합니다.
  • 정보에 입각한 의사 결정: 루틴을 조정하고 현실적인 목표를 설정하기 위해 데이터 기반 의사 결정을 내립니다.

이러한 이점을 직접 확인하려면 YouTube 동영상 데모를 시청하세요.

Ultralytics YOLO11은 운동을 감지하고 추적하는 데 얼마나 정확합니까?

Ultralytics YOLO11은 최첨단 자세 추정 기능 덕분에 운동을 탐지하고 추적하는 데 매우 정확합니다. 주요 신체 랜드마크와 관절을 정확하게 추적하여 운동 자세 및 성능 지표에 대한 실시간 피드백을 제공할 수 있습니다. 모델의 사전 훈련된 가중치와 강력한 아키텍처는 높은 정밀도와 신뢰성을 보장합니다. 실제 예시는 문서의 실제 적용 사례 섹션에서 팔굽혀펴기 및 턱걸이 횟수 세기를 통해 확인할 수 있습니다.

Ultralytics YOLO11을 사용자 정의 운동 루틴에 사용할 수 있습니까?

예, Ultralytics YOLO11은 사용자 정의 운동 루틴에 맞게 조정할 수 있습니다. AIGym 클래스는 다음과 같은 다양한 포즈 유형을 지원합니다. pushup, pullupabworkout. 특정 운동을 감지하기 위해 키포인트와 각도를 지정할 수 있습니다. 다음은 예제 설정입니다.

from ultralytics import solutions

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

인수 설정에 대한 자세한 내용은 다음을 참조하세요. 인수 AIGym 섹션. 이 유연성을 통해 다양한 운동을 모니터링하고 사용자의 루틴을 사용자 정의할 수 있습니다. 피트니스 목표.

Ultralytics YOLO11을 사용하여 운동 모니터링 출력을 어떻게 저장할 수 있습니까?

운동 모니터링 출력을 저장하려면 처리된 프레임을 저장하는 비디오 작성기를 포함하도록 코드를 수정할 수 있습니다. 다음은 예입니다.

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

이 설정은 모니터링된 비디오를 출력 파일에 저장하여 나중에 운동 성과를 검토하거나 트레이너와 공유하여 추가 피드백을 받을 수 있도록 합니다.



📅 1년 전에 생성됨 ✏️ 2개월 전에 업데이트됨

댓글