
진행 기간
2024.07 - 2024.08
핵심 기술

진행 기간
2024.07 - 2024.08
핵심 기술
실시간 운동 자세 측정과 현대인의 거북목 진단을 돕는 웹 서비스
멋쟁이사자처럼 12기 중앙해커톤에서 '현대인의 웰니스 문제 해결'을 주제로 개발된 서비스입니다. 단순히 운동 영상을 보고 따라 하거나 수동으로 기록만 남기는 기존 방식에서 탈피하여, "정확하게 측정할 수 있는 운동 서비스" 를 만드는 것을 목표로 삼았습니다. MediaPipe Pose 비전 AI 기술을 활용해 사용자의 자세를 실시간으로 분석하고, 세션 종료 후에는 개인화된 통계를 시각화하여 데이터에 기반한 지속 가능한 건강 관리를 돕는 실시간 인터랙티브 웹 서비스를 구현했습니다.
| 분류 | 기술 스택 | 핵심 역할 |
|---|---|---|
| 분석 엔진 | MediaPipe Pose | 실시간 신체 관절 랜드마크 추출 및 자세 인식 |
| 핵심 로직 | Vector Calculation | atan2 기반 관절 각도 연산 및 동작 판별 알고리즘 |
| 데이터 관리 | TanStack Query | 세션 결과 데이터 서버 전송 및 개인 대시보드 구축 |
| 상태 관리 | Redux Toolkit | 실시간 운동 횟수, 각도 점수, 사용자 세션 데이터 관리 |
"실시간 운동 자세 측정과 거북목 점수 확인"
웹캠을 통해 사용자의 움직임을 실시간 분석하여 운동의 질을 높여줍니다.
atan2 알고리즘으로 무릎, 어깨 등 주요 관절의 사이각을 계산해 동작의 정확도를 판별합니다.
▲ MediaPipe를 활용한 실시간 스켈레톤 추출 및 동작 인식
운동이 끝난 뒤에는 나의 수행 능력을 데이터로 한눈에 확인할 수 있습니다.
▲ 운동 종료 후 제공되는 평균 점수 및 통계 리포트
현대인의 고질병인 거북목을 진단하고, 이를 게임처럼 즐길 수 있는 요소를 더했습니다.
▲ 거북이 마스크 오버레이를 활용한 인터랙티브 진단 및 랭킹 시스템
"브라우저의 한계를 극복한 실시간 비전 연산과 데이터 아키텍처"

사용자의 체격이나 카메라와의 거리에 관계없이 정확한 동작을 인식하기 위해, 절대 좌표가 아닌 관절 사이의 상대적인 각도를 계산하는 방식을 적용했습니다.
Math.atan2 로직을 활용하여 사용자가 어느 방향을 보고 있든 일관된 각도 데이터를 얻을 수 있도록 구현했습니다.isSquat, isPushup 같은 플래그 변수를 사용해 '완전히 내려갔다가 다시 올라온 시점'을 한 회의 운동으로 인정하는 유한 상태 기계(FSM) 로직을 적용했습니다./**
* 세 관절 사이의 각도를 계산하여 자세의 완성도를 판별하는 핵심 로직
*/
function angleBetweenLines(p1, p2, p3) {
let angle = Math.atan2(p3.y - p2.y, p3.x - p2.x)
실시간 AI 추론 시 발생하는 브라우저 과부하를 해결하고, 사양이 낮은 기기나 다양한 디바이스 환경에서도 안정적으로 작동하도록 웹캠 파이프라인을 튜닝했습니다.
frameInterval % 4 === 0 로직을 적용했습니다. 초당 약 15회의 추론만으로도 운동 궤적 파악에 충분하다는 점을 확인하여, CPU 연산 부하를 75% 절감했습니다.1280x720의 ideal 해상도 설정과 onloadedmetadata 이벤트를 통한 비디오 준비 상태 체크 로직을 추가했습니다. 특히 모바일 환경을 위해 playsInline 설정을 강제하여 웹캠 실행의 안정성을 확보했습니다.
▲ 프레임 쓰로틀링(Throttling)을 통한 연산 효율화 다이어그램
운동 중 발생하는 데이터를 효율적으로 관리하기 위해 회원 여부에 따른 조건부 데이터 파이프라인을 구축했습니다.
scoreArray)에 실시간으로 축적합니다.useMutation)으로 서버에 전송하며, 비회원은 데이터 저장 없이 즉시 결과 리포트만 확인할 수 있도록 설계했습니다."기술적 장벽을 낮추는 직관적인 가이드와 데이터 기반의 개인화된 피드백"
비전 AI 기반 측정의 오차를 최소화하고 사용자가 '스스로' 최적의 환경을 맞추게 하는 UX 장치를 설계했습니다.
visibility 점수가 낮아지거나 카메라 범위를 벗어나면 즉각 피드백을 주어, 사용자가 스스로 측정 환경을 조정하도록 유도했습니다.웹캠 사용의 심리적 부담을 줄이고, 측정 결과에 대한 전문적인 분석을 제공합니다.
▲ 거북이 마스크 오버레이 및 측정 후 GPT AI 맞춤 코멘트 확인 과정
사용자가 지치지 않고 끝까지 세션을 완수하도록 돕는 게이미피케이션 요소를 도입했습니다.
▲ 실시간 세션 데이터 분석을 통한 성과 뱃지 수여 및 휴식 인터페이스
▲ 운동 성과 데이터 집계 및 실시간 랭킹 리포트 화면
"웹캠 기반의 실시간 자세 측정 로직을 완성하며 경험한 기술적 집요함"
2주간의 해커톤 기간 동안 '웹캠 데이터가 어떻게 실제 운동 지표로 변환되는가' 에 대한 플로우를 찾는 데 몰입했습니다. 단순히 AI 모델을 사용하는 것에 그치지 않고, 복잡한 환경에서도 일관된 성능을 내는 안정적인 서비스를 만드는 과정을 거치며 한 단계 더 성장할 수 있었습니다.
atan2 연산 로직을 결합하여 [웹캠 영상 → 관절 좌표 추출 → 각도 연산 → 실시간 자세 측정 → 결과 도출] 파이프라인을 직접 설계하고 구현했습니다.ideal 해상도 설정과 프레임 제어 로직을 적용하여 모든 디바이스에서의 통일성 있는 사용자 경험을 확보했습니다. 수많은 레퍼런스를 분석해 하드웨어 의존성을 낮춘 결과, 실전 시연에서 높은 안정성을 증명했습니다.디바이스별 하드웨어 의존성을 낮추고 서비스 안정성을 확보했던 경험은 개발자로서 큰 자산이 되었습니다. 예측 불가능한 기술적 변수에 대응하며 쌓은 트러블슈팅 경험은, 현재 제가 더 견고한 아키텍처를 설계하고 복잡한 문제를 해결하는 데 있어 실질적인 밑거름이 되고 있습니다.