부스트 캠프에서 배운 것들을 종합적으로 모두 적용해보자는 목표를 가지고 최종 프로젝트에 임하였다. Computer Vision 이론부터 데이터 제작, 그리고 Product Serving강의를 들으면서 배운 방법론들과 tool들을 우리 조만의 아이디어로 서비스를 제작하며 적용해 볼 수 있었다.
프로젝트에서의 역할
CV7A조의 최종 프로젝트는 크게 2가지 갈래로 나눠졌는데 그중 나는 hand key-point들을 이용해 hand gesture을 인식하는 부분을 담당했고 팀원 모두와 같이 custom dataset을 제작하는 데에 기여했다.
hand gesture recognition
초반에는 주로 자료조사 위주로 프로젝트에 임하였다. 부가기능을 구현하기 위해 hand gesture recognition을 하기로 한건데 부가기능을 제대로 정해놓지 않고 자료조사를 하다보니 구체적으로 어떤 모델이 어떤 task를 위해 필요한지가 모호했던것 같다. 변성윤 마스터가 항상 말씀하시는 “문제 정의” 단계가 생략되어 진행하다 보니 생긴 차질이였던 것 같다. 자료조사를 하는 과정에서 많은 논문들과 블로그들을 참고 하며 hand-action recognition을 공부했는데 정말 다양한 방법론이 있어서 갈팡질팡하는 시간이 많았다. hand key-point들을 graph라고 생각하고 graph의 sequence를 이용한 GNN 모델, 관심있는 프레임을 찾기 위해 question query를 이용하고 관심도에 따라 recognition을 수행하는 모델 등 많은 방법론을 조사하고 고민했지만 결국 task 자체가 action recognition에서 gesture recognition으로 바뀌었다. Gesture recognition은 공개돼 있는 깃헙 레포지토리 코드를 pytorch로 구현하여 training을 시켰고 이때 custom dataset을 이용하였다.
Public Dataset
초반에 hand key-point estimation을 위해 public 데이터셋을 모두 조사하였다. FreiHAND, RHD, 3D handpose, NYU Hand pose etc를 모두 조사하여 우리 프로젝트에 가장 알맞는 FreiHAND를 사용하기로 결정했다. mmpose를 통해 모델을 학습시킨 결과 웹캠의 손에는 모델 성능이 너무 저하되어 결국 custom dataset을 만들었다.
Custom Dataset
Mediapipe의 handkeypoint 모델을 이용하여 웹캠 환경에서 최적화 된 데이터셋을 만든 후, 모든 데이터를 전수조사 하여 데이터를 가다듬었다. 이후 custom dataset을 이용하여 public dataset을 통해 학습시킨 모델을 fitting한 결과, 모델 성능이 매우 향상되어 실제로 사용가능 할 정도로 서비스를 만들어 볼 수 있었다.
느낀 점
아쉬운 점
코딩 실력의 부족을 체감 할 수 있었던 프로젝트이다. 전에 나간 공모전이나 부스트 캠프에서 참여한 competition은 모두 주피터 노트북을 사용하고 mmdetection, mmsegmentation과 같은 라이브러리만 활용하면 되었지만 이번 프로젝트는 직접 scratch부터 모든 코드를 작성해야 했기 때문에 시간도 오래 걸리고 코드적으로 팀에 직접 기여한게 별로 없어서 너무 아쉬웠다. 파이썬 실력이 부족함을 느끼고 파이썬을 활용하여 알고리즘 문제, 논문 구현 등을 시도 해봐야겠다는 생각이 들었다.
문제 정의를 제대로 하지 못했던 점이 아쉬웠다. 최종프로젝트 주제를 조금 급하게 정해서 그런지 구체화를 정확히 하지 못하고 프로젝트를 시작했다. 큰 흐름은 간단했지만 세세한 기능과 해당 기능을 구현하기 위해 필요한 task를 자세하게 정하지 않고 무작정 자료조사를 시작하여 흐지부지 된게 조금 있었다. 다음 프로젝트를 진행할 때는 시작 전 문제정의와 어떤 기능에 어떤 task가 필요한지등을 확실하게 정해놓고 시작하고 싶다.
깨닳은 점
데이터의 중요성을 다시 한번 실감해 볼 수 있었다. Public dataset을 활용해 pre-trained된 모델을 우리의 서비스에 알맞은 형태로 성능을 향상 시키기 위해 custom dataset을 만들어 다시 모델을 training하는 흐름을 직접 느낄 수 있었으며 실제 성능 향상이 눈에 띄어서 매우 만족스러웠다.
총평
첫 번째 프로젝트 였던 만큼 초반에 열정도 컸고 잘 진행이 안되는 답답함에 열정이 조금 식기도 했다. 그래도 같이 열심히 임해주는 팀원들 덕에 끝까지 마무리를 잘 할 수있었고 되돌아 보니 배운 점도 많았던 것 같다. 앞으로도 학교에서나 개인으로나 프로젝트를 진행할 일이 많을 것 같은데 이번 최종프로젝트를 발판 삼아 다음 프로젝트 때는 더 계획적이고 체계적으로 프로젝트를 진행해볼 것이다.