2주에 걸친 competition이 9월 2일부로 마무리 되었다. 우선 같이 고생한 팀원들에게 고맙다는 말을 하고 싶다. 팀원들 덕분에 대회에서 생각지 못한 좋은 성적으로 마무리했다. (같은 팀원은 아니지만 성적 향상에 도움을 준 캠퍼분에게도 고맙다:D)
대회의 취지는 이렇다. COVID-19가 전세계적으로 확산되면서 경제적, 생산적인 활동에 많은 제약을 가져왔다. 사망률은 높지 않지만 강력한 전염력 때문에 이렇게 오랜 기간동안 우리를 괴롭히고 있다. 따라서 이를 방지하기위해 공공 장소에 있는 사람들은 반드시 마스크를 착용할 필요가 있고 올바르게 착용하는 것 또한 중요하다. 하지만 넓은 공공장소에서 모든 사람들의 올바른 마스크 착용 상태를 검사하기 위해서는 추가적인 인적자원이 필요할 것이다. 따라서, 카메라로 비춰진 사람 얼굴 이미지 만으로 이 사람이 마스크를 쓰고 있는지, 쓰지 않았는지, 정확히 쓴 것이 맞는지 자동으로 가려내는 시스템을 만들고자한다.
우선 정확하게 팀원들마다 역할을 분담하지 않았지만 자연스레 역할이 분담이 되었다. 베이스 라인 코드를 담당한 팀원, Wandb를 구축한 팀원, dataset부분 작업을한 팀원 , data augmentation 및 voting을 담당해준 팀원, 앙상블 모델로 학습을 한 팀원 모두 자기의 역할에 최선을 다 했다. 나는 기본적인 모델로 앙상블 없이 모델을 학습시켰고, 최대한 팀원들의 PR을 모두 확인하며 피드백하고 통합시키는데 힘을 썼다.
가장 처음에는 개인이 작생했던 코드에 비해 훨씬 못미치는 f1 score가 나와서 매우 난감했었다. 하지만 하나 둘씩 허점을 찾아가면서 점점 성능이 향상되는 것을 확인할 수 있었다. 성능 뿐만아니라 confusion matrix나 결과 비교 분석 함수 등 여러가지 test에 있어서 좋은 도구들이 많이 완성되었다. 덕분에 모델을 학습시키고 평가하는데에 있어서 효율적으로 작업할 수 있었던 것 같다.
등수는 7등으로 마무리했다. 사실 끝나기 3~4시간 전까지만 하더라도 15등에서 점점내려가는 중이었다. 아마 21등까지 갔던것 같다. 하지만 비밀 캠퍼 한분이 public dataset을 공유해주셨고 이 public dataset을 통해 기존의 취약했던 나이 라벨링 부분에서 크게 개선할 수 있었다. 그 후 상위 5개의 모델을 앙상블 하는 과정을 거쳤다. 비슷한 모델은 제외하고 최대한 서로 다른 모델들을 채택했다. Hard voting을 이용해 5개의 모델 중에 가장 많이 채택된 라벨을 채택하는 식으로 모델을 최종적으로 구성하였다. 앙상블을 할 때마다 f1 score가 눈에 띄게 올라갔고 계속 개선시켜나가면서 지금의 결과를 만든 것 같다.
2주동안 정말 많이 성장함을 느낀다. 사실 github이나 프로그래밍적인 능력은 이전의 스타트업에서 어느정도 단련했다고 생각했지만 아직 부족한 부분이 많았다. 팀원들의 코드를 보면서 많이 배울 수 있엇고 다른 캠퍼분에게 알려주면서 나 역시 정리되고 다시 생각해보는 과정에 있어 큰 도움이 되었다.
부스트캠프를 시작하기 전 대학원에 진학하지 못하면 절대 딥러닝을 이해할 수 없을 것이라고 생각했다. 물론 지금도 제대로 이해하고 있지는 않지만 이렇게 직접 딥러닝 코드를 짜고 학습시키고 평가할 수 있게 될 줄은 상상도 못했다. 상상을 했더라도 이렇게 단기간에 해낼줄은 정말 몰랐을 것이다. 심지어 github에 내가 처음부터 구축해 놓은 image-classification 코드를 어떤 분이 fork해서 놀랐다.
뭐가 부족하고 어떤 것을 공부해야 하는지 이번 P-stage를 통해 많이 알게 된 것 같다. 같이 하는 피어들이 있어서 뭔가 더 열심히 할 수 있엇던 것 같다. 비대면으로도 이렇게 서로 자극을 줄 수 있다는게 참 신기하다. 앞으로도 같이 12월까지 쭉 공부하면서 좋게 마무리 될 수 있기를 바란다.