Cometin'

[WAVY] 1. 무슨 서비스를 만들까?

2022-01-08 at Project category

wavy_full_logo

소프트웨어 마에스트로 과정은 최대 3인이 한 팀으로 약 6개월간 서비스를 제작하게 됩니다.

저희 팀은 3인 팀으로써, 다른 팀에 비해 비교적 늦게 팀이 결성되었고 이에 따라 서비스 기획에 상당한 시간이 소모되었습니다.

기획에 앞서서 저희 팀은 소프트웨어 마에스트로 과정에서 어떤 결과를 얻고 싶은 지 먼저 의논한 후에 해당 목표에 적합한 아이디어를 생각해보는 방법을 택하였습니다.

팀 목표

team_goal

사진에서 볼 수 있듯이 저희는 소프트웨어 마에스트로 과정에서 창업, 인증 등을 목표로 삼지 않았습니다.

그 이유로는 창업을 통해 얻는 것에 대한 motivation의 부재와

소프트웨어 마에스트로 과정의 상위 10%에게 부여되는 인증 혜택은 물론 되면 좋지만, 인증을 쫓자니 과정에서 받을 스트레스와 순수히 개발을 즐길 수 없을 것 같았기 때문입니다.

더하여 팀원 모두 학업과 병행하였기 때문에, 시간적 여유가 다른 팀에 비해 부족했던 것도 있습니다.

그래서 저희 팀이 제일 중요하게 생각한 목표는 프로젝트를 즐기자 입니다.

팀원 모두 개발이 재밌어서 시작하게 되었으며, 앞으로도 재밌길 바랬기 때문입니다.

다른 목표로는 가치있는 결과물을 만드는 것이였습니다.

이유는 학생 신분에서 프로젝트에 사용될 수 있는 금액이 지원되는 것, 팀원에게 부족한 부분을 메꿔주실 멘토님들이 계시다는 것을 십시일반 활용하기 위해서 입니다.

WAVY

위 목표에 부합하는 아이디어를 브레인스토밍을 통해 여러가지 뱉던 중, 팀원 중 한 분이 춤을 배우기 위해 겪었던 문제점을 공유해주셨습니다.

여러 매체에서 BTS의 춤들이 너무 멋져보이기도 했고, 맨날 앉아만 있으니 활동적인 취미를 가지기 위해 춤을 배우고 싶었다. 하지만 댄스 학원에 등록하자니 금액적인 부담이 되었고, 유투브를 통해 혼자 따라해볼려니 내 모습을 볼 수 없으면서, 성취감 등의 부재로 경험이 좋지 않았다.

춤에 대한 관심도의 상승은 방송 '스트리트 우먼 파이터'와 함께 동영상 기반 SNS '틱톡', '인스타그램 릴스', '유투브 숏츠'를 통해 체감하고 있던 저희 팀원은 이 문제점을 해결하는 아이디어면 좋을 것 같다고 생각하게 되었습니다.

어떻게하면 해당 문제점을 해결하면서, 과정이 재미있고, 가치있는 결과물을 만들 수 있는 지 수차례 논의한 결과

인공지능이 내가 춘 춤에서 어디가 잘못되는 지 알려주는 킬링 서비스를 생각하게 되었습니다.

논의를 겪으며 댄스 강사와 매칭 서비스, 커뮤니티 서비스 등 다양하고 좋은 아이디어가 있었지만 소프트웨어 마에스트로 과정에서 기획에 대한 심사에 "기술적 도전"이란 평가 항목이 있고 AI를 다루실 수 있는 팀원이 있어 해당 킬링 서비스가 채택되었습니다.

Prototyping

해당 서비스의 구체화 중 첫 번째로 접근한 방법은 사용자가 실시간으로 춤을 추는 동안, 틀린 부분을 알려주는 것 입니다.

내가 추는 춤과 따라출 춤을 동시에 확인하기 위해서는 큰 화면이 필요하며 경쟁 서비스들이 모바일 앱 환경에서만 존재하는 것을 이유로 웹 서비스로 정하게 되었지만,

따라출 춤은 미리 머신러닝을 통해 데이터화 해둔다하여도, 실시간으로 따라추는 사용자의 춤을 비교하는 것이 현재의 웹 환경에서 가능한지, 원활한 사용자 경험을 주는 지 의문이 생겼습니다.

이를 해결하기 위해 멘토님에게 의논한 결과 먼저 Prototyping을 통해 개발해보고 세부적인 기획을 하는 것이 좋아보인다는 의견을 들었습니다.

prototype

저는 초등학교 이후로 춤을 춰 본적이 없습니다 ....

멘토님 의견을 적극 반영하여 약 한 달의 기간동안 Prototype을 개발하게 되었습니다.

이를 통해 알 수 있는 인사이트와 앞으로의 방향을 정할 수 있어서 상당히 귀중한 경험이였습니다.

일단, 웹 환경에서 머신러닝을 구동할 수 있는 Tensorflow Lite를 사용하였으며, 사용자 웹캠의 화면을 데이터화된 영상과 비교하여 결과를 출력하였습니다.

매 프레임을 1초 단위마다 비교하는 알고리즘 또한 TypeScript로 작성하여 실시간으로 구동한 결과, M1 Macbook air 환경에서는 원활히 동작은 하였지만, 여러가지 단점이 있었습니다.

1. 사용자 환경 차이

언급한대로 일정 수준까지는 제 환경에서 원활히 동작하였지만,

정확한 측정을 위해 TensorFlow Lite의 Option을 올리게 될 시 일정 수치 이후에는 브라우저가 죽는 경험을 하였습니다.

더불어 매우 낮은 Option에서도 멘토님의 구형 노트북에서 구동한 결과 프레임이 쫓아오지 못하는 문제가 있었습니다.

2. 낮은 정확도

매우 정확한 비교를 바란 것이 아니였음에도 불구하고, 정확한 비교가 불가능하였습니다.

그 이유는 웹캠을 통해 인식하는 사용자의 데이터가 정확하지 않기 때문이였습니다.

다리나 팔이 겹치거나, 매우 빠른 동작을 할 시 당연하게도 정확하게 인식하지 못했습니다.

이에 대한 이유는 TensorFlow Lite의 정확도, 카메라 성능, 사용자 환경 등 수 없이 많은 이유가 있었습니다. 유추하였다고 표현해도 무방합니다...

우리가 할 수 있는 해결 방법

다양한 사용자가 우리 서비스를 보다 원활히 사용할 수 있으며, 정확도를 높히는 방법으로 저희가 생각한 해결 방법은 사용자 모션 추출과 유사도 분석을 서버에서 하자 입니다.

이를 통해 위에서 유추한 낮은 정확도에 대한 이유 TensorFlow Lite의 정확도를 보다 고도화된 라이브러리 AlphaPose를 사용하여 해결할 수 있었기 때문입니다.

또한 유사도 분석을 서버에 위임하면서 클라이언트에 대한 부담이 줄어들어 사용자 환경에 대한 차이를 줄여줄 수 있을 것으로 생각하여 위 방법을 택하였습니다.

결론

서비스 개요

Prototyping을 통해 확인한 인사이트를 기반으로 논의한 결과 Wavy는 다음과 같이 킬링 서비스에 대한 세부적인 기획을 할 수 있었습니다.

  • 사용자는 "미리 분석된" 영상 중 하나를 선택하여 연습하거나, 도전할 수 있다.
  • 연습할 시, 미리 분석된 영상과 사용자 영상을 같이 보여주며 마커를 통해 구간반복, 재생속도 조절 등을 할 수 있다.
  • 도전할 시, 미리 분석된 영상과 사용자 영상을 같이 보여주며 시점을 변경하거나 멈출 수 없고, 끝까지 따라추었을 때 녹화된 영상이 기록, 분석을 요청한다.
  • 분석이 요청된 영상은 마이페이지메인에서 확인할 수 있으며, 분석이 종료될 시 초별로 정확도를 시각화하여 보여준다.

wavy_flowchart drawio

킬링 서비스외에 전체적인 서비스의 완성도를 위해 검색, 찜, 내가 췄던 춤에 대한 인사이트 등을 세부적으로 기획하여 전체적인 서비스 흐름을 완성할 수 있었습니다.

이후에는 서비스를 어떻게 개발하였는 지 비개발적인 부분과 제가 맡은 개발적인 부분으로 나누어 소개해보도록 하겠습니다.

hyesungoh

Personal blog by hyesungoh.

I like to share my knowledge for those who wandering in issue.