Ultralytics YOLO26를 활용한 운동 모니터링#
Ultralytics YOLO26을 이용한 포즈 추정 기반 운동 모니터링은 실시간으로 주요 신체 랜드마크와 관절을 정확하게 추적하여 운동 평가를 향상합니다. 이 기술은 운동 자세에 대한 즉각적인 피드백을 제공하고, 운동 루틴을 추적하며, 성능 메트릭을 측정하여 사용자 및 트레이너 모두에게 최적화된 트레이닝 세션을 제공합니다.
Watch: How to Monitor Workout Exercises with Ultralytics YOLO | Squats, Leg Extension, Pushups and More
운동 모니터링의 이점#
- 성과 최적화: 더 나은 결과를 위해 모니터링 데이터를 기반으로 운동을 조정합니다.
- 목표 달성: 측정 가능한 성과를 위해 피트니스 목표를 추적하고 조정합니다.
- 개인화: 효과적인 결과를 위해 개인 데이터에 맞춘 맞춤형 운동 계획을 제공합니다.
- 건강 인식: 건강 문제나 과도한 훈련을 나타내는 패턴을 조기에 감지합니다.
- 정보에 기반한 의사결정: 루틴을 조정하고 현실적인 목표를 설정하기 위한 데이터 기반 의사결정을 지원합니다.
실제 세계에서의 활용 사례#
| 운동 모니터링 | 운동 모니터링 |
|---|---|
![]() | ![]() |
| 팔굽혀펴기 카운팅 | 턱걸이 카운팅 |
YOLO26으로 운동 모니터링하기#
AIGym 솔루션은 포즈 추정을 실행하고 사지가 up_angle 및 down_angle 임계값 사이를 이동할 때 세 개의 키포인트가 형성하는 각도를 측정하여 반복 횟수를 카운트합니다. kpts로 추적하려는 운동의 키포인트를 선택한 다음, Python API 또는 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]"키포인트(KeyPoints) 맵#

AIGym 인수#
다음은 AIGym 인수가 포함된 표입니다:
| 인수 | 유형 | 기본값 | 설명 |
|---|---|---|---|
model | str | None | Ultralytics YOLO 모델 파일 경로입니다. |
up_angle | float | 145.0 | 'up'(위) 자세에 대한 각도 임계값입니다. |
down_angle | int | 90 | 'down'(아래) 자세에 대한 각도 임계값입니다. |
kpts | list[int] | '[6, 8, 10]' | 운동 모니터링에 사용되는 세 개의 키포인트 인덱스 목록입니다. 이 키포인트들은 푸시업, 풀업, 스쿼트, 복근 운동과 같은 동작을 위해 어깨, 팔꿈치, 손목 등 신체 관절이나 부위에 대응합니다. |
line_width | int | 2 | 솔루션이 그리는 상자, 키포인트 및 카운트의 선 두께입니다. |
verbose | bool | True | 입력 형태, 클래스 카운트 및 처리 속도에 대한 솔루션의 프레임별 로그를 활성화합니다. 트래킹 호출 자체는 항상 침묵 상태를 유지합니다. |
AIGym 솔루션은 다양한 객체 추적 매개변수도 지원합니다:
| 인수 | 유형 | 기본값 | 설명 |
|---|---|---|---|
tracker | str | 'botsort.yaml' | 사용할 추적 알고리즘을 지정합니다. 기본 제공 옵션: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml. |
conf | float | 0.25 | 탐지에 대한 신뢰도 임계값을 설정합니다. 값이 낮을수록 더 많은 객체가 추적되지만 잘못된 긍정 탐지(false positives)가 포함될 수 있습니다. |
iou | float | 0.7 | 겹치는 감지를 필터링하기 위한 Intersection over Union (IoU) 임계값을 설정합니다. |
classes | list | None | 클래스 인덱스로 결과를 필터링합니다. 예를 들어 classes=[0, 2, 3]은 지정된 클래스만 추적합니다. |
device | str | None | 추론용 장치를 지정합니다(예: cpu, cuda:0 또는 0). 사용자가 모델 실행을 위해 CPU, 특정 GPU 또는 기타 컴퓨팅 장치 중에서 선택할 수 있도록 합니다. |
추가적으로 다음 시각화 설정을 적용할 수 있습니다:
| 인수 | 유형 | 기본값 | 설명 |
|---|---|---|---|
show | bool | False | True인 경우, 주석이 달린 이미지나 비디오를 창에 표시합니다. 개발 또는 테스트 중 즉각적인 시각적 피드백에 유용합니다. |
show_conf | bool | True | 각 탐지에 대한 신뢰도 점수를 레이블과 함께 표시합니다. 각 탐지에 대한 모델의 확신도를 파악할 수 있습니다. |
show_labels | bool | True | 시각적 출력에서 각 탐지에 대한 레이블을 표시합니다. 탐지된 객체를 즉시 이해할 수 있도록 합니다. |
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은 맞춤형 운동 루틴에 맞게 조정할 수 있습니다.
AIGym클래스는up_angle,down_angle,kpts인수를 사용하여 운동 반복 횟수를 감지합니다. 키포인트와 각도를 지정하여 특정 운동을 감지할 수 있습니다. 다음은 설정 예시입니다: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섹션을 참조하십시오. 이러한 유연성을 통해 다양한 운동을 모니터링하고 운동 목표에 따라 루틴을 사용자 정의할 수 있습니다.운동 모니터링 결과를 저장하려면 처리된 프레임을 저장하는 비디오 라이터를 포함하도록 코드를 수정할 수 있습니다. 다음은 예시입니다:
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()이 설정을 통해 모니터링된 비디오를 출력 파일로 작성할 수 있으며, 이를 통해 나중에 운동 성과를 검토하거나 트레이너와 공유하여 추가 피드백을 받을 수 있습니다.

