[프로젝트 1 - 이미지 처리] 8. 모델 개선

Jade·2021년 4월 7일
0

부스트캠프 AI Tech

목록 보기
37/54

프로젝트 1 - 모델 개선

  • 데이터
  • 모델
  • 학습, 추론
  • 아쉬운 점

[데이터]

  • 데이터 전처리
    Resize (가로 세로 224)
    HorizontalFlip(50% 확률로 뒤집기)
    RandomBrightnessContrast(50% 확률로, limit:(-0.1, 0.1)
    ToTensor

[모델]

  • 모델
    EfficientNet-b0 사용. 후반 모델은 파라미터가 너무 많아서...
    pretrained 상태로 가져와서 모델의 fc레이어(분류기)를 task에 맞게 18class로 교체하고 fine tuning 적용함.

  • Loss
    CrossEntropyloss, F1 Loss 시도해 봄. F1 Loss를 썼을 때 성능이 더 좋았음.

  • Optimizer
    AdamW의 일반화 능력이 Adam보다 낫다고 해서 AdamW를 사용

  • Hyperparameter
    batch size : 16
    Epoch : 5
    LR : 1e-4, lr scheduler를 사용해 10스텝마다 decay


[학습, 추론]

  • LR scheduler
    StepLR 사용

  • gradient accumulation
    4스텝동안 gradient를 누적해서 batch size가 64인 것처럼 적용

  • validation

    • 단일 모델
      학습용 데이터셋에서 랜덤하게 떼어낸 20% 검증셋으로 분리함. 이 때 같은 인물의 사진이 학습셋과 검증셋에 나뉘어 들어가지 않도록 함.

    • stratified k-fold validation
      sklearn 모듈의 StratifiedKFold.split() 메소드를 사용하여 k=5로 학습셋과 검증셋을 분리함. 따로 처리하지 않았기 때문에 같은 인물의 사진이 학습셋과 검증셋에 나뉘어 들어갈 가능성이 있음.

  • 앙상블
    stratified k-fold validation의 각 fold로 학습한 모델에 앙상블을 적용함. 약간의 차이지만 soft voting을 사용했을 때의 성능이 더 좋았다. 단, 시드를 고정하고 학습시킨 게 아니라서 학습의 차이일 가능성도 있다.
    1. soft voting
      acc : 73.5714, f1 score : 0.6552
    2. hard voting
      acc : 72.0635, f1 score : 0.6259

[아쉬운 점]

가장 아쉬운 점이라면 테스트셋을 가져올 때 shuffle 옵션을 True로 했던 문제를 일찍 발견하지 못했던 것이다. 시간을 많이 잡아먹었다.

신기한 점은 오류를 해결하고 나서 맨 처음에 제출했던, 별 다른 처리를 하지 않은 EfficientNet 모델이 정확도나 f1 score 면에서 가장 나았다는 것이다. 이 부분도 많이 아쉬운데, stratified k-fold validation을 적용해서 앙상블할 때 데이터 유출을 막기 위한 처리를 따로 하지 않았다. 데이터가 검증셋으로 유출되어서 일반화 성능이 낮아진 것일지도 모르겠다.

실험할 때 상황을 잘 통제하지 못했던 점도 아쉽다. soft voting과 hard voting을 각각 테스트해볼 때 시드를 고정하고 학습시켜서 동일한 조건에서 확인해 봤다면 더 좋았을 것이다. 그 밖에는 다른 LR scheduler를 적용해 보거나 서로 다른 모델로 앙상블하는 등의 시도를 해 보지 못한 점이 아쉽다.

profile
반가워용

0개의 댓글