11주차 회고로는, Object Detection Project에 대한 Wrap-up report의 summary 및 소감으로 대체한다.
목표
재활용품 Object Detection을 통해, OD Task를 이해, 구현하고 개선시킨다.
진행사항
1) EDA
EDA를 통해 데이터 클래스별 특징, 분포에 대해 이해 하였다. 초기 EDA를 통해, 1) 작은 물체에 대한 학습이 조금 더 힘든 것 2) Battery class가 가장 적은 것 3) 이미지별 Annotation 갯수 차이가 큼 등에 대해 확인하였고, Mislabel 된 것들에 대해 데이터 정제를 했다.
2) 프레임워크
Detectron2, MMDetection, Hugging Face 프레임워크에 대해 조사를 하고 아래와 같은 이유 때문에 MMDetection을 선택했다. a. 자유도가 충분히 좋다. (Neck, Backbone 선택이 간편하다.) b. 팀원 중 한명이 사용해봤다 = 익숙하다 c. 1-stage, 2-stage 기준 많은 SOTA 들이 구현되어있다. d. 공식 페이지 github에 가장 친절하게 설명이 되어있다.
3) 모델
2-stage model인 Faster RCNN을 baseline으로 삼고 내 모델을 구현했고, 이 모델을 계속해서 발전해나갔다.
모델
초록색 표시는 선택된 것, -혹은 노란색 표시는 고려되었으나 선택되지 않은 것 이다. 빨간색표시는 고려되지 않은 것 이다.
Model - Cascade RCNN이 Faster RCNN보다 좋은 결과를 보여서 선택했다.
Backbone - ResNet, Swin Transformer, ConvNext를 비교 후 Swin Transformer (Large)를 선택했다.
Neck - FPN/NASFPN/BiFPN은 큰 성능차이가 나지 않아서 단순하고 안정적인 FPN을 선택했다.
Optimizer는 가장 무난한 Adam대신 AdamW를 선택했다.
Loss는 따로 설정을 크게 해주지 않았다. 각 cls loss, bbox loss 들 마다 최적의 값이 설정되어있다고 가정을 했다.
Visualization Tool은 협업을 위해 Wandb를 사용했다.
성능향상을 위해, Pseudo Labeling / Ensemble (with 1-stage) 를 진행했다.