[부스트캠프 AI Tech] 7주차 Warp Up Report -2

Mattaaa·2022년 3월 4일
0

[부스트캠프 AI Tech]

목록 보기
20/23

[부스트 캠프 Pstage-1] - Image Classification

Private LB Score 0.7270


[Model]

  • Resnet152, Swin-Transformer, NFnet, Efficientnet 등 여러 가지 모델을 사용 해보았지만, 모델 변경을 통한 성능 향상을 기대하기는 어려웠음

  • 적은 Data 때문이라 생각하여, 이후 실험들에서는 Resnet152 를 대표적으로 사용


[Loss Funcntion]

Weighted Cross-Entropy

  • Imbalance Class 문제를 해결하기 위한 대표적인 Loss Function 중 하나이다.
  • Majority Class에 비해 Minority Class 에 더 높은 가중치를 부여하여, Imbalance 로 인해 오는 각기 다른 수렴속도를 조절한다.

Focal Loss

  • Object Dection 에서 주로 사용되는 Imbalance Class 문제를 해결하기위한 Loss Function 이다.
  • Cross Entropy 의 Easy Example 의 Weight를 줄이고, Hard Negative Example 에 대한 학습에 초점을 맞춤
  • Gamma, Alpha, Weight로 조절한다.

Label Smoothing

  • 잘못 Labeling 된 데이터에 대해 효과적이다.
  • Label을 0과 1 로 정확하게 Predict 하게 하는 것이 아니라, 모델이 Overconfident 해지는 경향을 막는다.

Loss Function 결론

  • Weighted Cross-Entropy, Focal Loss 그리고 Label Smoothing 을 추가로 각 Loss Function 들에 적용 시킴

  • Focal Loss 만을 단독으로 사용 하였을 때의 성능이 가장 우수

[Optimizer]

  • SGD, Adam 을 사용 하였지만, Adam을 사용 하였을 때 학습이 더 빠르고 안정적으로 이루어짐.
    Adam 사용

  • 기존 BaseLine의 StepLR 대신, ReduceLROnPlateau 를 사용하여 Early Stopping에 더욱 용이하게 함

[Data]

OverSampling

  • Imbalanced Dataset Sampler 를 사용하여, Batch 당 동일한 비율의 학습 데이터가 Feeding 되게 유도함.
  • Validation Accuracy 기준, 약 3% 정도의 성능 향상을 볼 수 있었음
    ( https://github.com/ufoym/imbalanced-dataset-sampler )

MisLabling

  • Dataset에서 일부 결측지 또는 잘못 라벨링 된 데이터가 발견됨
    → 김주영 캠퍼님의 토론글 참고
  • 이미 알려진 데이터에 대해선 직접 수작업을 통해, 재라벨링을 실시함.
  • 혹시 남아있을지 모를 결측 데이터를 위해, Label Smoothing 기법을 사용 해보았지만 성능 향상은 없었음

Stratified KFold

  • Random Split을 통해 Train, Validation 데이터를 나누게 되면, 데이터가 Imbalance 하기 때문에 특정 Class 가 쏠릴 위험이 있음.
  • Stratified KFold 를 사용하여, 각 Class 별로 동일한 비율로 Train, Validation Dataset 구성

Relabeling

  • Age 분포에 있어서, 60세 이상의 데이터가 매우 부족하며, 50대 후반의 데이터 비중이 꽤 많음
  • 58세 이상의 데이터를 60세 이상으로 재라벨링 하여, 60세 이상의 데이터를 증강시키고자 하였음.
  • 유의미한 성능 향상효과가 있었음

[Augmentation]

  • 처음 Face Detection 오픈소스를 이용하여, 얼굴을 Detection 한 사진을 Dataset으로 재구축 하고자 했으나 제대로 Detection이 이루어지지 않는 경우가 발생함.

  • CenterCrop을 이용하면 위와 같은 효과를 볼 수 있을 것으로 생각하여, 380 X 380 Size 로 CenterCrop 진행.

  • HorizontalFlip 을 통하여 최대한 데이터를 증강시키고자 하였으며, 위와 아래가 구분이 되는 얼굴 사진 특성 상 VerticalFlip은 사용하지 않음.

  • GaussainNoise, OpticalDistortion, Blur 등 여러가지 Augmentation 기법을 적용시켜보았으나, 과도한 Augmentation은 성능 하락으로 이어졌음.

  • 따라서, 피부색에 영향을 줄 수 있는 RandomGamma, RandomBrightness, RandomContrast 정도 만을 추가 적용 시킴.

[Inference]

  • Stratified KFold 를 통해 나누었던 각 Fold 별 Best Model 을 Save 한 뒤, Inference 단계에서 앙상블을 시도하였음.

  • KFold 앙상블에는 Soft Voting을 이용함.

  • 또한 TTA를 를 적용시켰음.

  • Augmentation 과 마찬가지로 과도한 적용은 성능 향상을 야기하였음.
    → HorizontalFlip 만을 사용.

[회고]

  • Age와 Gender 를 잘 예측하도록 하는 것이 Key 였던 Competiton 인 것 같음.

    • 마스크로 인해 Age 예측이 더욱 어려움.
    • 각 나이 별로 Class Imbalance 가 매우 심함.
    • 숏컷 여성들에 대한 Gender 예측이 어려웠음.
  • Imbalance Class 문제를 해결하기 위한 다양한 방법들을 공부하였음.

    • Oversampling
    • Class Weight
    • Focal Loss
    • Stratified KFold
    • Augmentation
  • Model 앙상블을 시도하지 못한 것이 아쉬움.
    → 구조가 다른 여러가지 모델로 학습 시킨 뒤, 각 모델들을 앙상블
  • Model 의 성능에 집착하느라 허비한 시간이 너무 많음.
    → 이번 Competiton 은 학습 전략에 더욱 집중해야 하는 Competion으로 판단됨

0개의 댓글