Private LB Score 0.7270
Resnet152, Swin-Transformer, NFnet, Efficientnet 등 여러 가지 모델을 사용 해보았지만, 모델 변경을 통한 성능 향상을 기대하기는 어려웠음
적은 Data 때문이라 생각하여, 이후 실험들에서는 Resnet152 를 대표적으로 사용
- Imbalance Class 문제를 해결하기 위한 대표적인 Loss Function 중 하나이다.
- Majority Class에 비해 Minority Class 에 더 높은 가중치를 부여하여, Imbalance 로 인해 오는 각기 다른 수렴속도를 조절한다.
- Object Dection 에서 주로 사용되는 Imbalance Class 문제를 해결하기위한 Loss Function 이다.
- Cross Entropy 의 Easy Example 의 Weight를 줄이고, Hard Negative Example 에 대한 학습에 초점을 맞춤
- Gamma, Alpha, Weight로 조절한다.
- 잘못 Labeling 된 데이터에 대해 효과적이다.
- Label을 0과 1 로 정확하게 Predict 하게 하는 것이 아니라, 모델이 Overconfident 해지는 경향을 막는다.
Weighted Cross-Entropy, Focal Loss 그리고 Label Smoothing 을 추가로 각 Loss Function 들에 적용 시킴
Focal Loss 만을 단독으로 사용 하였을 때의 성능이 가장 우수
SGD, Adam 을 사용 하였지만, Adam을 사용 하였을 때 학습이 더 빠르고 안정적으로 이루어짐.
→ Adam 사용
기존 BaseLine의 StepLR 대신, ReduceLROnPlateau 를 사용하여 Early Stopping에 더욱 용이하게 함
- Imbalanced Dataset Sampler 를 사용하여, Batch 당 동일한 비율의 학습 데이터가 Feeding 되게 유도함.
- Validation Accuracy 기준, 약 3% 정도의 성능 향상을 볼 수 있었음
( https://github.com/ufoym/imbalanced-dataset-sampler )
- Dataset에서 일부 결측지 또는 잘못 라벨링 된 데이터가 발견됨
→ 김주영 캠퍼님의 토론글 참고- 이미 알려진 데이터에 대해선 직접 수작업을 통해, 재라벨링을 실시함.
- 혹시 남아있을지 모를 결측 데이터를 위해, Label Smoothing 기법을 사용 해보았지만 성능 향상은 없었음
- Random Split을 통해 Train, Validation 데이터를 나누게 되면, 데이터가 Imbalance 하기 때문에 특정 Class 가 쏠릴 위험이 있음.
- Stratified KFold 를 사용하여, 각 Class 별로 동일한 비율로 Train, Validation Dataset 구성
- Age 분포에 있어서, 60세 이상의 데이터가 매우 부족하며, 50대 후반의 데이터 비중이 꽤 많음
- 58세 이상의 데이터를 60세 이상으로 재라벨링 하여, 60세 이상의 데이터를 증강시키고자 하였음.
- 유의미한 성능 향상효과가 있었음
처음 Face Detection 오픈소스를 이용하여, 얼굴을 Detection 한 사진을 Dataset으로 재구축 하고자 했으나 제대로 Detection이 이루어지지 않는 경우가 발생함.
CenterCrop을 이용하면 위와 같은 효과를 볼 수 있을 것으로 생각하여, 380 X 380 Size 로 CenterCrop 진행.
HorizontalFlip 을 통하여 최대한 데이터를 증강시키고자 하였으며, 위와 아래가 구분이 되는 얼굴 사진 특성 상 VerticalFlip은 사용하지 않음.
GaussainNoise, OpticalDistortion, Blur 등 여러가지 Augmentation 기법을 적용시켜보았으나, 과도한 Augmentation은 성능 하락으로 이어졌음.
따라서, 피부색에 영향을 줄 수 있는 RandomGamma, RandomBrightness, RandomContrast 정도 만을 추가 적용 시킴.
Stratified KFold 를 통해 나누었던 각 Fold 별 Best Model 을 Save 한 뒤, Inference 단계에서 앙상블을 시도하였음.
KFold 앙상블에는 Soft Voting을 이용함.
또한 TTA를 를 적용시켰음.
Augmentation 과 마찬가지로 과도한 적용은 성능 향상을 야기하였음.
→ HorizontalFlip 만을 사용.
Age와 Gender 를 잘 예측하도록 하는 것이 Key 였던 Competiton 인 것 같음.
Imbalance Class 문제를 해결하기 위한 다양한 방법들을 공부하였음.