강의 복습
1. Method
- How to get good score?
- EDA 통해 아이디어 얻음
- 파이프라인 구축 (mmdetection과 같은 라이브러리 사용)
- 좋은 모델, anchor size, image size 찾음
- pseudo labelling
- Develop Model Architecture
- 기본 시작: ResNet50 + Faster R-CNN + FPN
- Backbone: ResNet, DarkNet, EfficientNet, ResNeXt, RegNet 등
- Neck: FPN, PAFPN, RFP, BiFPN 등
- Dense Prediction: Yolo, SSD, EfficientDet, RetinaNet 등
- Sparse Prediction: FasterRCNN 등
- ETC
2. Data Augmentation
- Cutmix
- Backbone에 적용(Yolo4)
- Directily Training
- 문제: None of boxes, Small boxes 등
- Mosaic: 4개의 이미지 섞음
- 그냥 합치는 방법
- 특정 크기만큼 잘라서 붙이는 방법
- 랜덤하게 가져다 붙이는 방법
- 일부는 랜덤하게, 일부는 모서리쪽에 붙여서 자르는 방법 (박스 최대한 많이 포함하도록)
3. Ensemble & TTA(Test Time Augmentation)
- NMS(Non-Maximum Suppression): box score가 가장 높은 box 기준으로 IoU를 계산해서 특정 값 이상이면 겹치는 것으로 판단하고 없애는 방법
- soft-NMS: 겹치는 box를 아예 없애는 것이 아니라 score를 감소시키는 방법
- WBF(Weighted Box Fusion): 여러 box들을 적절하게 조합해서 위치와 크기 조정
- ETC
- Seed Ensemble
- K fold validation
- SWA(Stochastic Weight Averaging): 모델의 weight 적절하게 averaging해줌
- Go to Kaggle Competition
프로젝트
- FasterRCNN에 SoftNMS를 적용해봤더니 성능이 0.01정도 올라갔다.
- DetectoRS에도 SoftNMS를 적용해보고 Backbone 모델을 ResNet에서 ResNeXt로 바꿔볼 것이다.
- 다른 조 회고록을 보니까 SOTA 모델 중 가장 성능이 좋은 Swin을 적용한 조도 있었다. 나도 가능할진 모르겠지만 한 번 시도해봐야겠다.