분석시각화 대회 코드 공유 게시물은
내용 확인 후
좋아요(투표) 가능합니다.
수달이팀, Private 4위(점수:0.99769), EfficientNet 앙상블
안녕하세요. Private 4위 수달이 입니다. 대회에 참가하며 값진 경험을 할 수 있었습니다. 감사드립니다.
기본을 BaseLine에서 필요한 영역을 확장시키는 방식으로 진행했습니다.
본 대회에서 제가 주로 고민한 내용은 다음 3가지 입니다.
1. 적합한 모델
2. 부족한 학습데이터: sample 수 = 250개
3. 데이터의 불균형: 가장 많은 Class와 적은 Class의 격차 → 10배 이상
먼저 모델은 Image 분류 문제에서 상위권에 분포된 모델 중 EfficientNet-b7을 기본으로 실험해 나가기로 했습니다. (결과적으로 EfficientNet 이외에 해보지 못함) 모델은 Ref[1]를 통해 ImageNet Dataset으로 Pretrain된 모델을 사용하였습니다.
Ref[1]: https://github.com/lukemelas/EfficientNet-PyTorch
두번째로 부족한 학습데이터는 Data 증강과 Cross Validation을 적용하였습니다. Data 증강은 pytorch에서 제공하는 transform만으로는 부족하다 생각되어 CutMix를 사용하여 부족한 데이터를 보충했습니다. CutMix Code는 Ref[2]를 수정하여 사용하였습니다.
또한, 고정된 Valid set을 사용하기에는 data 수가 적으므로 5개 fold로 Stratified K-fold를 통해 5개 모델을 학습시켰고 이것들을 Ensemble 하는 것으로 해결하고자 했습니다.
Ref[2]: https://github.com/ildoonet/cutmix
마지막으로 학습데이터의 불균형한 문제가 있었습니다. 평가기준(Macro-f1)을 고려할 때 sample 수가 적은 Class에 잘 대응하는 것이 중요하다고 생각했습니다. 따라서 Loss Function에 Class별로 가중치를 주도록 했습니다(Weighted Cross Entropy). 가중치는 train dataset의 각 class별 sample 개수에 반비례하도록 설정하였습니다.
데이콘(주) | 대표 김국진 | 699-81-01021
통신판매업 신고번호: 제 2021-서울영등포-1704호
서울특별시 영등포구 은행로 3 익스콘벤처타워 901호
이메일 dacon@dacon.io | 전화번호: 070-4102-0545
Copyright ⓒ DACON Inc. All rights reserved