Ultralytics YOLO27:

Ultralytics YOLO26을 사용한 운동 모니터링#

Open Workouts Monitoring In Colab

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



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

운동 모니터링의 장점#

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

실제 적용 사례#

운동 모니터링운동 모니터링
포즈 추정을 사용한 YOLO 푸시업 횟수 측정포즈 추정을 사용한 YOLO 풀업 횟수 측정
푸시업 횟수 측정풀업 횟수 측정

YOLO26으로 운동 모니터링#

AIGym 솔루션은 포즈 추정을 실행하고, 팔다리가 up_angle 임계값과 down_angle 임계값 사이에서 움직일 때 세 개의 주요 키포인트가 이루는 각도를 측정하여 반복 횟수를 계산합니다. kpts를 사용하여 추적할 운동의 키포인트를 선택한 다음, Python API 또는 CLI로 동영상에 솔루션을 실행합니다.

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]"

키포인트 맵#

YOLO 포즈 추정 키포인트 순서 다이어그램

AIGym 인수#

다음은 AIGym 인수 표입니다.

인수유형기본값설명
modelstrNoneUltralytics YOLO 모델 파일의 경로입니다.
up_anglefloat145.0'up' 포즈의 각도 임계값입니다.
down_angleint90'down' 포즈의 각도 임계값입니다.
kptslist[int]'[6, 8, 10]'운동 모니터링에 사용되는 세 키포인트 인덱스의 목록입니다. 이러한 키포인트는 어깨, 팔꿈치, 손목과 같은 신체 관절 또는 부위에 해당하며, 팔굽혀펴기, 턱걸이, 스쿼트 및 복근 운동과 같은 운동에 사용됩니다.
line_widthint2솔루션이 그리는 박스, 키포인트 및 카운트의 선 두께입니다.
verboseboolTrue입력 형태, 클래스별 개수 및 처리 속도의 프레임별 로그를 활성화합니다. 추적 호출 자체는 항상 로그를 출력하지 않습니다.

AIGym 솔루션은 다양한 객체 추적 매개변수도 지원합니다.

인수유형기본값설명
trackerstr'botsort.yaml'사용할 추적 알고리즘을 지정합니다. 기본 제공 옵션: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml입니다.
conffloat0.25검출 결과의 신뢰도 임계값을 설정합니다. 값이 낮을수록 더 많은 객체를 추적할 수 있지만 오탐이 포함될 수 있습니다.
ioufloat0.7겹치는 검출 결과를 필터링하기 위한 교집합 대비 합집합 (IoU) 임계값을 설정합니다.
classeslistNone클래스 인덱스로 결과를 필터링합니다. 예를 들어 classes=[0, 2, 3]은 지정된 클래스만 추적합니다.
devicestrNone추론에 사용할 장치를 지정합니다(예: cpu, cuda:0 또는 0). 사용자는 CPU, 특정 GPU 또는 기타 컴퓨팅 장치 중에서 모델 실행 장치를 선택할 수 있습니다.
imgszint or tuple640목표 추론 이미지 크기: 정사각형의 경우 정수 또는 (height, width) 쌍입니다. 형태는 모델 스트라이드에 맞게 조정됩니다.
max_detint300추적 전 프레임당 유지되는 최대 검출 수로, 솔루션이 밀집된 장면에서 처리하는 객체를 제한합니다.
quantizeint or strNone추론 정밀도: PyTorch 및 TorchScript 모델의 경우 16(FP16) 또는 32/설정 안 함(FP32); 기타 형식은 아티팩트와 런타임이 선택하는 정밀도로 계산됩니다. 더 이상 사용되지 않는 half 플래그를 대체합니다.

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

인수유형기본값설명
showboolFalseTrue인 경우 annotation이 추가된 이미지 또는 비디오를 window에 표시합니다. 개발 또는 테스트 중 즉각적인 시각적 피드백을 제공하는 데 유용합니다.
show_confboolTrue각 detection의 confidence score를 label과 함께 표시합니다. 각 detection에 대한 모델의 확신 정도를 파악할 수 있습니다.
show_labelsboolTruevisual output에 각 detection의 label을 표시합니다. 검출된 객체를 즉시 파악할 수 있습니다.

FAQ#

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

    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 YOLO26을 사용하면 다음과 같은 주요 이점이 있습니다.

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

    이러한 이점이 실제로 어떻게 적용되는지 확인하려면 YouTube 동영상 데모를 시청할 수 있습니다.

  • Ultralytics YOLO26은 최첨단 포즈 추정 기능을 갖추고 있어 운동을 매우 정확하게 감지하고 추적합니다. 주요 신체 랜드마크와 관절을 정확하게 추적하여 운동 자세와 성과 지표에 대한 실시간 피드백을 제공할 수 있습니다. 모델의 사전 학습된 가중치와 견고한 아키텍처는 높은 정밀도와 신뢰성을 보장합니다. 실제 사례는 문서의 실제 적용 사례 섹션에서 확인할 수 있으며, 푸시업과 풀업 횟수 측정 사례를 보여 줍니다.

  • 예, Ultralytics YOLO26은 사용자 지정 운동 루틴에 맞게 조정할 수 있습니다. AIGym 클래스는 up_angle, down_anglekpts 인수를 사용하여 운동 반복을 감지합니다. 특정 운동을 감지하도록 키포인트와 각도를 지정할 수 있습니다. 다음은 설정 예시입니다:

    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 섹션을 참조하세요. 이러한 유연성을 통해 다양한 운동을 모니터링하고 피트니스 목표에 따라 루틴을 사용자 지정할 수 있습니다.

  • 운동 모니터링 출력을 저장하려면 처리된 프레임을 저장하는 동영상 writer를 포함하도록 코드를 수정할 수 있습니다. 다음은 예시입니다:

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

    이 설정은 모니터링된 동영상을 출력 파일에 기록하므로 나중에 운동 성과를 검토하거나 추가 피드백을 위해 트레이너와 공유할 수 있습니다.

댓글