Boostcamp AI Tech

[Boostcamp Day-18] Image Classification - Training & Inference

ju_young 2021. 8. 27. 23:42
728x90

Training & Inference

모델 학습을 진행 -> 학습 프로세스에 필요한 요소 = Loss, Optimizer, Metric

Loss

loss.backward()를 실행하면 모델의 파라미터의 grad 값이 업데이트(requires_grad=False라면 업데이트가 안됨)

  • Focal Loss

Class Imbalance 문제가 있는 경우, 맞춘 확률이 높은 Class는 조금의 loss를, 맞춘 확률이 낮은 Class는 Loss를 훨씬 높게 부여

  • Label Smoothing Loss

Class target label을 One-hot 표현으로 사용하기 보다는 조금 soft하게 표현해서 일반화 성능을 높이기 위함

Optimizer

  • LR scheduler : 학습 시 learning rate를 동적으로 조절
  • StepLR : 특정 Step마다 LR 감소
  • CosineAnnealingLR : Cosine 함수 형태처럼 LR을 급격히 변경
  • ReduceLROnPlateau : 더 이상 성능 향상이 없을 떄 LR 감소

Metric

  • Accuracy : Class 별로 밸런스가 적절히 분포
  • F1-Score : Class 별 밸런스가 좋지 않아서 각 클래스 별로 성능을 잘 낼 수 있는지 확인 필요

Training Process

  • model.train() : training mode로 set
  • optimizer.zero_grad : grad 값 초기화(하지않으면 누적됨)
  • loss = criterion(outputs, labels) : loss 값 계산
  • optimizer.step() : grad 값 업데이트

Inference Process

  • model.eval() : evaluation mode로 set
  • with torch.no_grad() : inference가 진행되는 동안 grad 값이 업데이트되지않게 함
  • checkpoint.pt : 모델을 저장
728x90