첫번째 팀 프로젝트이자 4주동안 진행한 프로젝트를 마무리 하면서 Wrap up하는 과정을 통해 그동안 진행한 과정을 정리하고 느꼈던 생각과 감정들을 남겨보고자 한다. 특히 딥러닝에서 진행하는 첫 팀 프로젝트였는데 팀의 전체적인 프로세스를 Leading하는 역할을 맡게 돼서 여러가지 고민도 했고 Competition 이전에 함께 배우는 시간을 만들기 위해 최대한 노력했던 것 같다. 물론 많은 시행착오도 있었고 협업 Process를 완성하기 위해서 많은 시간을 할애 했지만 이 모든 경험이 나 뿐만 아니라 팀원분들이 함께 성장하는데 큰 도움이 됐을 것이라 믿어 의심치 않는다.
아직 하고싶은 분야를 확고히 정한 것은 아니지만 딥러닝과 Computer Vision의 조합은 정말 아름다운 것 같다는 생각을 종종한다. 많은 사람들에게 꼭 필요한 경험, 새로운 Interaction을 제공해줄 수 있는 그 장점 하나만으로도 정말 무궁무진한 가능성이 아직 남아있다고 생각한다. 그래서 Stage3에서는 Object Detection & Segmentation Task를 선택하였고 프로젝트 기간동안 느꼈던 Insight를 잘 기록해두고자 한다.
<aside> 💡 딥러닝 Task의 시작, Exploratory Data Analysis
</aside>
우선 데이터를 살펴보기 위해 기본적인 과정을 거쳤다. 기본적으로 image의 size는 동일했으나 image의 형태가 굉장히 다양하게 존재했으며 쌓여있는 쓰레기가 대략 50개가 넘어가는 이미지도 존재하는 동시에 커다란 object 하나만 존재하는 경우도 굉장히 많았다. 따라서 작은 사이즈의 다양한 object가 존재하는 경우와 큰 사이즈의 object 한개 또는 두개가 존재하는 경우를 모두 잘 Catch 할 수 있는 모델을 선정하는 것이 필요하다고 생각했다.
Dataset Statistics
: 전체 이미지에 대한 이미지의 개수, 사이즈, RGB값의 평균과 표준편차Metadata Analysis
: train.json에 저장되어있는 CoCo Dataset Metadata 분석Class Histogram
: 이미지 파일에 대해 마스크의 유무에 따른 이미지 픽셀값의 분포 확인Image Visualization
: 이미지와 해당하는 정보들을 함께 시각화하여 눈으로 확인또한 주어진 train json file이 CoCoDataset 형태를 지니고 있다. 따라서 Categories
, Annotations
, Name
, BBox
등 다양한 요소들을 전처리 하기 위해서 pycocotools
library를 활용했다. 해당 형식을 처음 사용해보았지만 Library를 하나하나 분석해보면서 원하는 형태로 pytorch의 dataset을 구성하고 batch를 만들어서 학습에 활용할 수 있었다.
Pandas와 Matplotlib를 통해 우선 데이터 분포가 어떻게 되는지 확인했다. 한 가지 바로 Catch 할 수 있었던 특징은 Data Imbalance였다. 11개의 Category와 Background까지 포함해서 총 12개의 Category가 존재하지만, 아래 그래프에서 확인할 수 있는 것 처럼 Class사이의 불균형이 대단히 심했다. 물론 Real World에서 재활용 쓰리게의 배출이 아래와 같은 분포를 가질 수도 있지만 Battery와 Clothing을 정확히 예측하기에는 그 데이터의 양이 턱없이 부족했다.