작물 병해 분류 AI 경진대회

알고리즘 | CV | 객체탐지 | 농산물 | Macro f1 score

  • moneyIcon 상금 : 총 100만원
  • 173명 마감
마감

 

yjunej팀/Private 2위/Private 점수 :0.99848/SE-ResNeXt

2021.10.24 10:54 5,629 조회 language

Private 2위, 코드 공유드립니다.

Idea
* Class 불균형을 해결하기 위해 class weight loss를 적용하였습니다.
* Colorjitter의 경우 오히려 악영향이 있어 제거하였습니다. (색상으로 병해를 판단)
* 데이터가 적어 Robust한 모델을 만들기 위해 앙상블을 2차례 활용하였습니다.
* 부족한 train data를 보충하기 위해 Pseudo labeling을 적용하였습니다.
* CutMix, Crop 등의 augmentation은 병해를 판단할 수 있는 부분이 잘릴 경우 학습에 악영향을 줄 수 있다고 생각하여 사용하지 않았습니다.
* Mixup을 사용하였습니다.

실험과정
* train.csv 데이터를 5 fold로 나누어 SE-ResNeXt 101d-32x4d 5개의 모델을 학습
* train.csv 데이터를 5 fold로 나누어 SE-ResNeXt 26d-32x4d 5개의 모델을 학습
* 각 fold마다 가장 loss가 낮은 모델의 체크포인트를 불러와 총 5개의 모델을 앙상블
* test 데이터에서 각 클래스에 대한 softmax를 거친 예측값이 0.85 이상일 경우 pseudo-labeling 하여 train data에 추가
* pseudo-labeling 데이터가 추가된 최종데이터를 5fold로 나누어 학습하고 SE-ResNeXt 101d-32x4d 5개의 모델을 학습 후 앙상블
* 최종 모델 완성

env
Ubuntu 18.04
Pytorch lightning
GTX 1080Ti X 1
Python 3.8.10

코드