2년만에 개강을 했다.
간만에 캠퍼스를 간다는 것에 설렌 것도 잠시, 1학기는 전면 비대면으로 수업을 진행한다는 공지를 들었다.
그렇게 해서 학교를 갈 일이 거의 없어졌는데, 그나마 중간고사 이후로 AI 스타트업 수업은 대면으로 전환되었다.
그래서 이번 개발일기는 AI 스타트업 수업에서 개발하고 있는 "구매연동기능과 이미지 인식을 이용한 냉장고 관리 앱" 냉비서에 대해서 쓰려고 한다. 어디까지나 내가 느낀 바로 쓰는 일기라서 내가 잘 모르는 부분에 대해서는 디테일이 부족할 수 있지만 그래도 나름 의미있다고 생각하는 프로젝트라서 이렇게 남겨보고자 한다.
처음 팀 구성을 할 때 나름대로 컴퓨터과학과 18학번 드림팀(?)을 구성했는데, 사실 드림팀이라고 하더라도 2학년때까지 학교 공부를 열심히 하고, 군대에서 막 복학한 친구들하고 팀을 꾸린 것이라 프로젝트 경험이 적었고, 막상 프로젝트를 진행하다보니 프로젝트를 개발하는 것 이외에도 생각을 해야 할 것들이 너무 많았다.
가장 먼저 창업을 위해서는 적절한 아이템을 선정하는 것이 무엇보다 중요한데, 각자 원하는 아이디어가 달랐던 점도 있고, 실제로 우리가 구현이 가능한가? 와 관련되는 현실적인 문제도 고려해야 했다. 그렇게 회의를 하면서 수십개의 아이디어가 나왔고 선정을 해야했다. 특히 민용이형이 평소에 창업에 관심이 많았어서 아이디어를 많이 냈는데 여러 이유로 기각이 된 게 참 많다. 비록 타당한 비판으로 인해서 reject되긴 했지만 거의 몇일동안 계속 이런 일이 반복되다 보니 정말 미안하긴 했다. 그래도 정말 다행인 것은 다들 친하게 지냈기도 하고, 다들 타당한 비판에는 감정 내세우지 않고 아이템 선정을 했다는 점이다. 사실 어떤 팀플을 하더라도 어떤 결정을 내릴 때 누군가 한명이 의견을 제시하면 그 의견에 대한 건설적인 토론이 있어야 한다고 생각한다. 그저 한명이 의견을 내면 다들 별 생각 없이 "좋아요!" 라고 하는 것이 그다지 바람직하지 못하다는 것이다. 그렇기에 만약 그 아이디어가 좋다면 왜 좋은지에 대해서 어느정도 첨언을 하는 편인데, 이번 프로젝트에서는 나의 그런 성향하고 잘 맞았기에 사실 이런 점은 편안했다. 어떻게보면 나는 자기주장이 어느정도는 있는 편인데 이걸 잘 들어주면서도 적절하게 피드백을 할 수 있는 친구들하고 같이 팀을 해서 정말 다행이라고 생각한다.
여튼 그렇게 아이디어를 계속 내면서 각각의 아이템의 장단점, 시장 규모에 대해서 생각을 했다. 그러던 중, 냉장고에 있는 식재료를 자동으로 관리하는 앱을 개발하는 것이 어떻겠냐는 아이디어가 나왔다. 자취를 하고 있는 재현이가 은근 식재료를 상하지 않게 관리하는 게 어렵다고 했고, 나름대로 범용성도 있는 아이디어라고 생각을 해서 그 아이디어를 구체화시켰다.
우선 가장 먼저 기존 식재료 관리 앱이 있는지 확인하고, 혹시 이미 시장에 있는 아이템이 아닌지 확인해보았다. 다행스럽게도 비슷한 아이템이 전혀 없기도 했고 기존 앱 몇개를 설치해서 사용해보았다. 대표적인 앱인 '유통기한 언제지' 라는 앱을 예시로 들자면 사용자가 직접 모든 식료품의 정보를 직접 입력하는 방식으로 관리가 이루어진다. 그렇지만 이는 매우 번거로운 일이기에 지속적으로 이와 같은 방식으로 식료품을 관리하기에는 불편함이 많아보인다.
그래서 우리는 식재료가 들어왔을 때 이러한 관리를 자동화 할 수 있는 방법을 고민해보았다. 수업에서 일단 AWS 크레딧을 제공하니까 이쪽은 큰 문제는 없을 것 같다. 그래서 일단 한가지 가정을 하자면 "냉장고에 카메라가 설치되어 있고, 그 카메라는 주기적으로 냉장고 내부를 촬영한다." 를 세웠다. 이렇게 촬영된 이미지를 이용해서 computer vision 기술을 이용해서 각각의 식재료를 인식하고, 어떤 식재료인지 인식을 해야 한다. 이를 통해서 냉장고의 상태가 변경될때마다 바뀐 소모상태를 반영하는 등의 냉장고를 관리하는 기능을 지원한다. 이를 위해서는 image detection과 classification model을 활용하여 냉장고 내부의 음식들을 인식하고, 분류하여 자동으로 예상 유통기한을 입력하여 유저과 관리하는 식료품 데이터베이스에 업데이트되는 방식으로 관리가 이루어진다. 예상 유통기한의 경우에는 일반적으로 해당 식료품의 평균적인 유통기한을 자동으로 입력하는 방식을 통해서 이루어진다.
다만 인식/분류에 실패할 경우 수동으로 입력을 할 수 있는 기능을 지원하여 예측오차를 대응하였다.
이렇게 기본적인 아이디어를 낸 다음, 해야하는 일들을 크게 정한 다음에 각자 역할을 분배하여 세부적으로 MVP 개발을 진행하고자 했다. 그런데 여기서 문제점이 하나 생긴다. 아무래도 컴공 4명이서 팀을 짜다보니 PM 경험이 있는 사람이 없기도 했고, 각자 맡을 수 있는 부분이 겹치거나 비는 포지션이 생기기도 했다. 그래서 각자 해보고 싶은 일에 대해서 우선순위를 받은 뒤에 역할 분배를 진행했다. 다행스럽게도 재현이가 PM을 맡아주기로 했고, 장한이가 front-end, 내가 back-end, 민용이형이 AI model을 맡아서 하기로 했다. 지금 와서 생각하는 건데 각자가 가장 잘 할 수 있는 포지션을 맡았다고 생각이 들어서 다행이다. 그리고 코로나 19 때문에 비대면으로 진행될 때가 많았기에 그럴 때는 slack을 통해서 task에 대한 notification을 주고, 수요일 저녁에 정기적으로 zoom, 혹은 대면으로 회의를 진행하기로 했다.
그렇게 2주를 단위로 sprint를 하면서 각각의 기능과 개선사항에 대해서 우선순위를 정한 다음, 실제로 어느정도 데모를 돌리는 것을 목표로 개발을 하고자 했었다. 그리고 slack을 통해서 현재 맡고 있는 task와 각자의 상황을 공유하면서 개발을 진행하고자 했다. 사실 이렇게 우선순위 먼저 처리하고 목표를 달성하는 과정에서 위에서 정했던 포지션이 의미가 있을까? 라는 생각이 들긴 했지만 그래도 다들 같은 학과다 보니 서로의 업무를 도와주는 과정이 수월했던 것도 사실이다.
그렇게 조금씩 진행이 되던 중, 큰 문제가 하나 생겼다. 생각보다 모델의 성능이 잘 나오지 않는 것이다. training 과정에서 yolo v5 모델을 선정해서 학습했는데, 예상한 성능보다 object detection을 너무 못하는 것이다. 여기에는 어찌보면 당연하게도 현실적인 이유들이 있었다. 우선 환경 자체가 냉장고 내부를 촬영하는 것인데, 각도에 따라서 detection을 하기 쉽지 않은 경우들이 많았다. 그리고 학습에 사용하는 데이터들은 보통 open된 식재료 이미지들을 사용을 했는데, 이게 냉장고 환경과는 아무래도 다르다는 점에서 어려움을 겪는 것 같았다. 그리고 결정적으로 처음부터 너무 많은 카테고리의 식재료들을 인식하고 선별하려다 보니 정작 인식은 한다고 하더라도 분류에서도 성능이 만족스럽게 나오지 않았다. 예를 들어서 어떤 식재료를 가져다 놓더라도 '사과'로 인식하는 것처럼 말이다.
그래서 이런 문제점들을 떠앉은 상태로 중간발표를 진행했다. 예상보다 훨씬 혹평을 들었다.
가장 먼저 혹평받은 것은 바로 현실성이 너무 떨어진다는 것이다. 만약 이대로 프로젝트를 진행한다고 하더라도 사용자들은 앱의 성능이 만족스럽게 나오지 않는다면 굳이 이 앱을 사용할 필요를 느끼지 못할 것이다. 그런데 이 아이템의 경우에는 데이터를 만족스러울 수준으로 수집하지 않는다면 성능이 나오지 않을 것이기에 그 전까지 만약 창업을 했더라면 버티기 힘들것이라는 피드백을 주셨다. 그렇다면 이러한 점들이 아니더라도 유저를 많이 확보를 해서 데이터를 수집해야 하는데 이렇게 유저를 확보하는 것은 홍보비용도 지나치게 많이 들 뿐더러 유저가 이탈할 가능성이 높다.
두번째로는 바로 명확한 Target Customer가 없이 그냥 "냉장고 쓰는 사람이라면 누구나 다" 라는 것에 대한 지적을 받았다. 이것과 연관되어서 BM에 대한 지적도 받았는데, Target Customer에 따라서 BM을 다르게 설정을 할 수도 있을 것인데 우리는 대답이 그저 광고수입? 유료버전 앱 출시? 그정도의 답변밖에 내놓지 못했다. 그런데 그 사용자 층을 알기 어려우면 광고가 들어오기도 어려울 것이고, 단순히 이런 정도의 성능이라면 어떤 유료버전을 내놓더라도 기존 버전과의 차이가 별로 없을 것이라는 답변이 들어왔다.
나름대로 열심히 준비했는데 부족하다고 인지했던 부분은 물론, 생각치도 못한 부분에서도 날카로운 피드백이 들어와서 우리는 발표가 끝나고나서 바로 비상회의를 가졌다. 우리가 맞다고 확신했던 생각들이 너무 간단하게 파훼를 당한 느낌이라서 그 충격이 더 컸다.
일단 다들 저녁을 먹고나서 회의를 하면서 어떤 방향성으로 나아가야 하는지에 대해서 이야기를 해보았다. 가장 먼저 나왔던 이야기는 바로 아이템을 아예 바꾸고 새로운 아이디어를 지금부터 다시 생각을 하는 것이다. 일단 신랄한 비판을 들었으니 다들 생각을 하는 느낌이긴 했지만, 이때까지 모델링을 하고, 기획하고, 코드를 짰던 그 모든 일들이 물거품이 된다고 생각하니 너무 아까웠다. 그리고 여튼 지금 이러한 앱 자체가 없기도 하고, 추후 1인가구들이 더욱 증가할 것이기에 미래를 생각한다면 꽤나 괜찮은 아이디어라고 생각했기에 더욱 더 아쉬웠다.
그래서 적절한 방향으로 pivoting을 하는 방법에 대해서 생각해보았다. 기본적으로는 고객과 데이터를 확보해서 성능을 끌어올린다는 목표는 변함이 없었지만, 당장 성능이 나오지 않는다는 것이 문제였다. 그렇다고 해서 아무 식료품 사진 데이터를 가지고와서 학습을 시킨다고 하더라도 큰 의미는 없을것이다. 마땅히 데이터나 고객을 확보할 방법이 없다보니 많은 아이디어가 나왔지만 결과적으로는 이런 문제를 특별하게 해결할 수 없었다.
그러던 중 다들 옷을 좋아해서 무신사에서 옷을 보다가 한가지 생각이 떠올랐다. 물론 무신사에서도 옷을 만들지만 이들의 첫 시작은 자기 옷을 파는 것이 아니라 다른 브랜드의 옷을 파는 플랫폼이라는 것이다. 이건 식품도 마찬가지다. 코로나 19가 몇년째 지속되면서 사람들은 마트나 시장에서 장을 보는 것 대신 마켓컬리와 같은 플랫폼에서 온라인으로 주문을 한다. 이들도 온라인의 편의성과 빠른 배송을 무기로 빠르게 성장을 하고 있는 것을 보고, 이 아이디어를 플랫폼 사업과 연결을 시키는 방법에 대해서 생각을 했다. 그러나 우리가 어느정도 플랫폼 장사를 할 수 있으면 너무 좋겠지만 이미 선발주자들을 이길만한 방법을 떠올리기란 쉽지 않았다. 그래서 결국 생각을 한 것이 e-commerce 플랫폼, 혹은 근처 오프라인 식료품 마켓들과 협업하여 구매 연동 서비스를 구축하는 것이었다.
구체적으로 생각한 방안은 이들과 연계하여 식료품의 배송이 완료되면 자동으로 냉비서의 식료품 데이터베이스에 해당 식료품의 정보들을 업데이트하는 방식으로 연계하고자 하였다. 이러한 방식을 통해 기존 식료품 관리 앱에 비해서 상당히 편리하게 사용할 수 있을뿐더러, 초기 데이터 부족으로 인한 문제를 보완할 수 있다는 장점이 있다. 왜냐하면 반드시 image detection, classification에 의존하지 않더라도 유저들에게 나름대로 만족할마나한 서비스를 제공을 할 수 있는 방법이기 때문이다. 따라서 초기 유저들을 확보하는 데에 있어 이전에 비해서 훨씬 수월할뿐더러 성능도 끌어올릴 수 있을 것이며 BM을 수립하기도 한결 편리해진다.
아무래도 다들 엔지니어다 보니 성능에만 너무 집착했기에 이런 방법들을 너무 늦게 생각을 하지 않았나 싶다. 여튼 해결책의 현실적인 문제점 등을 고려하여 pivoting하고 이를 보완하는 과정들을 거치면서 '역시 창업 아무나 하는 게 아니구나...' 라는 생각이 들기도 했고, 이전 메디로그로 창업대회를 나가서 좋은 성과를 거둔 것에는 내가 열심히 MVP를 개발한 것도 있겠지만 성환이형이 이런 부분들에서 정말 유능했기에 가능한 결과였다는 생각도 들었다.
그리고 여기서 마지막으로 서비스의 성공 여부를 판단할 수 있는 기준들을 어느정도 만들어야 했다. 가장 먼저 우리가 생각한 것은 처음 아이디어를 생각했던 것처럼 기존 앱보다 유저가 편리하게 사용할 수 있는 앱인가? 라는 점이었다. 그렇기에 이러한 것들을 검증하는 근거가 되는 지표들이 필요하다. 그래서 우리들은 유저들이 앱에 재방문을 얼마나 하는가? 그리고 최근 가입자 중에서 다시 앱을 사용하지 않는 비율은 얼마나 되는가에 대한 데이터들을 수집해서 평가지표로 사용하고자 하였고, click(touch) 횟수가 많을수록 앱을 많이 사용한다는 근거가 된다고 생각했다. 사실 유저들이 앱에 채류하는 시간이 길어지는 것은 관리 앱의 편의성에 대한 점과는 매칭이 잘 되지 않는다고 생각하였기에, 적절한 시간동안 앱을 적극적으로 사용한다는 것을 보여주기에는 click 횟수가 가장 적합하다고 결론을 내렸다.
그리고 BM의 경우에는 TAM-SAM-SOM을 고려하고자 했다. 그렇지만 초기 시장의 경우에는 최대한 보수적으로 잡아야 한다고 생각했기에 일단 전체 시장인 대한민국 2150만 가구의 1%가 이 앱을 사용할것이라고 가정하였다. 그리고 수수료로 약 1%를 산정하였는데 사실 1%가 비싸다고 생각할 수도 있지만, 해당 비용은 1년에 발생하는 음식물 쓰레기 처리비용하고 비교하면 세발의 피이다. 그렇지만 사실 이것이 공익적으로는 당연히 너무 좋은 결과지만, 실질적으로 유저에게 어떻게 해야 이 수수료가 전혀 부담스럽지 않게 느껴지도록 만드는 것은 아직 남아있는 숙제라고 할 수 있다.
+ 끝나고 쓰는 Ps.
이처럼 해결책의 현실적인 문제점 등을 고려하여 pivoting하고 이를 보완하는 과정들을 거치면서 꾸준하게 item을 검증하고, 직접 입력 방식 등의 면에서도 사용자 편의성을 개선하고자 열심히 노력을 했다. 끝나고 나서 느낀 이 프로젝트가 특별한 이유는 "아이디어를 실제로 구체화하고 이를 통해서 시장에 어느정도로 유효하게 먹힐 수 있는가?" 에 대한 프로세스를 전반적으로 경험하면서 SW 측면 이외에도 좋은 item을 설계하기 위해 다방면으로 노력하면서 프로젝트를 보는 시각이 넓어졌다는 점이 가장 큰 것 같다. 사실 이전 창업대회에서도 개발을 잘 하는 것은 엔지니어로 상당히 중요한 덕목이지만, 실제로 우리 주변을 SW로 바꾸어놓은 사람들은 이것만 잘하지는 않았다. 오히려 나무보다 숲을 보는 능력이 더욱 중요하다고 생각이 든다. 그리고 이런 과정에서 팀원들과 함께 의사결정을 내리고 소통하는 과정에서 "어떻게 주장 및 피드백을 해야 상대방에게 기분나쁘지 않게 설득을 할 수 있는가?" 와 같이 커뮤니케이션적인 측면에서도 많은 점을 배울 수 있었다는 점에서 나한테 참 의미가 있다.
결국 마지막 수업날 IR 피칭을 했는데 사실 컴퓨터과학과 4명인 팀인지라 앱의 완성도가 타팀을 압도했기에 데모에서부터 큰 인상을 줄 수 있었고, 창업의 다른 측면에서도 꽤 설득력있는 발표를 했는지 발표가 끝나면서 큰 박수를 받았고, 그 결과 정말 압도적인 차이로 AI 스타트업 1위 팀으로 선정되었다. 이게 뭐랄까 후일담이지만 대회였더라도 꽤나 결과가 좋았을 것 같은데 학교 수업이라서 우리가 받을 수 있는 게 A+라는 학점이라는 게 약간 아쉽긴 하지만 그래도 다시금 심장이 뛴다는 느낌을 받았다.
다음편에는 제가 이 서비스를 개발하면서 느꼈던 점들에 대해서 개발일기로 다시 돌아오겠습니다.
일단은 프로젝트의 github link!
GitHub - TeamC00K/FridgePlease: Image Detection/Classification model을 이용한 냉장고 관리 앱 "냉비서"
Image Detection/Classification model을 이용한 냉장고 관리 앱 "냉비서" - GitHub - TeamC00K/FridgePlease: Image Detection/Classification model을 이용한 냉장고 관리 앱 "냉비서"
github.com
냉비서: 냉장고 관리 앱 개발 일기 - 개발편 (0) | 2022.07.07 |
---|