Goal : 주어진 스케치 데이터를 활용하여 모델을 제작하고 제공된 테스트 세트의 각 이미지에 대해 올바른 레이블 예측
Data : 원본 ImageNet Sketch 데이터셋 중 상위 500개 객체(class)의 25,035개의 이미지 데이터
- EDA 및 baseline code 분석
- Baseline model 선정
- Baseline model 일반화 성능 개선
- 최종 결과 분석
- OS : Linux-5.4.0
- GPU : Tesla V100 (32GB)
- Python Version: 3.10.13
- IDE: Visual Studio Code
- Tool : Github, Slack, Notion, Zoom
- Experiment Tracking: Weights and Biases (WandB)
├─.github
├─Models
├─ 0925_kfold_coatnet
│ ├─ datasets
│ │ ├─ custom_dataset.py
│ │ └─ transform.py
│ ├─ ensemble
│ │ ├─ ensemble0.json
│ │ └─ ensemble2.json
│ ├─ ensemble.sh
│ ├─ ex.sh
│ ├─ exp
│ │ ├─ exp0.json
│ │ ├─ exp1.json
│ │ ├─ exp2.json
│ │ ├─ exp3.json
│ │ └─ exp4.json
│ ├─ inference.py
│ ├─ inference.sh
│ ├─ inference_ensemble.py
│ ├─ main.py
│ ├─ models
│ │ └─ model_selector.py
│ ├─ train.py
│ └─ utils
│ ├─ getPretrainedModels.py
│ ├─ parameter.py
│ ├─ train_utils.py
│ └─ utils.py
└─ 0926_ensemble
├─ datasets
│ ├─ custom_dataset.py
│ └─ transform.py
└─ ensemble
├─ ensemble1.json
└─ inference_ensemble.py
├─README.md
- EDA 및 baseline code 분석
- 데이터는 Traindata 15,021개와 Private&Public Testdata 10,014개로 구성
- Traindata : 15021개의 항목과 3개의 컬럼(class_name, image_path, target)으로 구성
- Testdata : 10014개의 항목과 1개의 컬럼(image_path)으로 구성
- 500개의 클래스가 있고 각 클래스마다 29~31개의 데이터로 구성
- 분석한 데이터 특징
- 흑백 이미지가 많지만 컬러 이미지도 존재
- 스케치 선의 두께, 이미지 크기, 이미지의 해상도가 다양함
- 한 이미지 안에 여러 개체가 들어있는 이미지도 존재
- 정면, 측면 혹은 뒤집어진 이미지도 존재
- 기본 baseline_code 모델의 정확도는 약 68.4%로 확인
- Baseline model 선정
- 다양한 backbone 모델 실험 후 최종적으로 가장 높은 88.3%의 public score를 달성한 Coatnet_3_rw_224를 baseline model로 선정
- 모듈화 및 협업 툴 추가
- Weights and Biases (WandB) 사용
- tmux 사용
- slack api 활용 모델 학습 완료 알림 자동화
- Baseline model 일반화 성능 개선
- Optimizer
- Data Augmentation
- Layer freeze
- Dropout & Batch normalization
- Loss
- Learning rate scheduler
- Progressive resizing (input size)
- Failure Analysis
- K-fold & Ensemble
- TTA