Projects/런썸(AI Runner Pose)

[RunSome 개발일지 #05] AI는 왜 1차 테스트에서 1분 만에 600걸음을 뛰었다고 착각했을까? (케이던스 트러블슈팅과 피벗)

jsummer07 2026. 10. 24. 11:45

지난 4편에서는 "너 말고 진짜 쓰고 싶어하는 사람이 있어?"라는 모두의 창업 1차 탈락의 아픔을 딛고, 19명의 러너를 대상으로 설문조사를 진행한 이야기를 다뤘습니다. 찬사보다 뼈 아픈 쓴소리 속에서 우리가 얻은 결론은 명확했습니다.

"단발성 진단도 좋지만, 내 자세에 맞는 추천 목표 케이던스와 구체적인 훈련 플랜을 줘라!"


유저들이 원한다면 당장 만들어야지요. 곧바로 서비스에 '케이던스(Cadence, 1분당 발걸음 수)' 측정 기능을 얹기 위해 코드를 짜 내려가기 시작했습니다. 하지만 그것은 지옥의 트러블슈팅 레이스의 시작이었습니다.


1. 10초 만에 300 SPM? 폭발하는 케이던스 노이즈

스마트폰 측면 영상에서 발목 랜드마크의 Y축(상하 높이) 변화를 추적해 바닥에 닿는 순간을 카운팅하는 로직을 기본 뼈대에 얹었습니다. 그리고 테스트 영상을 돌려본 순간, 제 눈을 의심했습니다.

  • 실제 러너의 케이던스: 1분당 약 170~180 SPM (정상적인 달리기 리듬)
  • AI가 뱉어낸 결과: 332 SPM... 심할 때는 600 SPM 이상 폭발

도대체 왜 이런 일이 벌어졌을까요? 원인은 발목의 미세한 떨림(노이즈)에 있었습니다.
러너의 발이 공중에서 앞으로 스윙하며 이동할 때, AI 관절 추출 모델(MediaPipe) 특성상 발목 위치가 픽셀 단위로 미세하게 출렁거리거나 떨립니다. 알고리즘은 이 미세한 떨림조차 전부 "땅에 발을 디뎠다!"(착지)로 오인식하여 1초에도 수십 번씩 카프를 찍어대고 있었던 것입니다.

이대로라면 유저들에게 "오늘 회원님은 1분에 500걸음을 뛰셨네요!"라는 말도 안 되는 진단서를 쥐어 쥐게 생겼습니다.


2. 해결을 향한 사투: X축 교차와 쿨다운(Cooldown) 로직

이 노이즈를 잡기 위해 여러 가지 시도를 거듭했습니다.

  1. 발목과 골반의 X축 거리 비교: 양발이 교차하는 순간을 타이밍으로 잡으려 했으나, 카메라 앵글이나 촬영 거리에 따라 기준값이 미세하게 틀어져 오히려 진짜 발걸음까지 누락되는 역효과가 났습니다.
  2. 무적 시간(쿨다운)을 넣었더니 이번엔 '86 SPM'의 배신?
    • 단일 발목의 상하 움직임에 최소한의 쿨다운을 부여해 보았습니다. 하지만 허공의 노이즈는 잡혔나 싶더니, 이번에는 반대로 진짜 디디는 발까지 무시해 버리면서 수치가 갑자기 86 SPM까지 뚝 떨어져 버리는 사태가 발생했습니다.
    • 양발 카운트를 합산해서 2를 곱해보기도 하고, 조건을 살짝 틀어보기도 했지만 완벽한 실시간 카운팅 로직은 자꾸만 수치가 이리저리 널뛰기 일쑤였습니다. 스마트폰 영상 하나로 실시간 SPM을 완벽하게 오차 없이 잡아내는 게 얼마나 까다로운 영역인지 뼈저리게 체감하는 순간이었습니다.

3. 기술적 성공 뒤에 찾아온 또 다른 고민: "이게 진짜 유저가 원하는 걸까?"

"단발성 영상으로 실시간 SPM을 완벽하게 재는 건 기계 장비가 아닌 이상 오차가 생기기 마련."
"정확한 숫자 카운팅 자체보다, 내 자세에서 고쳐야 할 방향을 알려주는 게 중요."

여기서 프로덕트 오너(PO)로서 중요한 갈림길에 섰습니다.
완벽하지 않은 스마트폰 영상 분석 환경에서 억지로 실시간 케이던스 숫자를 화면에 띄우는 것이 맞을까요, 아니면 설문조사 응답자들이 진정으로 원했던 방향으로 한 번 더 피벗(Pivot)하는 것이 맞을까요?


4. 에필로그: 억지 숫자 대신 '맞춤형 추천 케이던스'로의 피벗

억지로 오차 가득한 실시간 카운팅 숫자를 보여주는 방식을 과감하게 내려놓았습니다. 대신, 영상 전체에서 분석된 상체 기울기, 착지 시 무릎 각도, 오버스트라이드 위험도를 종합하여 다음과 같이 한 단계 진화한 '맞춤형 추천 목표 케이던스 및 코칭 처방' 형태로 진단서를 재정의했습니다.

  • "현재 무릎이 162도로 다소 펴져 있고 상체가 서 있습니다. 175~180 SPM의 추천 목표 리듬에 맞춰 보폭을 살짝 줄이고 잔발로 가볍게 뛰는 숙제를 처방합니다."

기술에 갇히지 않고, 유저가 진짜로 필요로 하는 가치(부상 방지와 명확한 훈련 숙제)에 초점을 맞춰 프로덕트를 다듬어 나간 이 과정이야말로 런썸이 진짜 '서비스'로 성장해 나가는 진짜 과정이 아닐까 싶습니다.

다음 글에서는 이 모든 로직을 담아 최종 완성된 AI 정밀 진단서 리포트 UI와, 텍스트 잘림을 해결하기 위한 Pillow 자동 줄바꿈 트러블슈팅 이야기로 이어가 보겠습니다.


[RunSome 개발일지 시리즈 보기]