- ์์์ ์ฌ์ง์ด ์ฃผ์ด์ก์ ๋, ๋์ด, ์ฑ๋ณ, ๋ง์คํฌ ์ฐฉ์ฉ ์ฌ๋ถ๋ฅผ ํ๋จํ๋ ๋ชจ๋ธ ์ ์
- ํด๋น ํ๋ก์ ํธ๋ฅผ ์ด์ฉํ ์์คํ ์ ํตํด ์ ์ ๋น์ฉ์ผ๋ก ๋ง์คํฌ ์ ์ ์ฐฉ์ฉ ์ฌ๋ถ๋ฅผ ํ๋ณํ ์ ์์ ๊ฒ์ผ๋ก ๊ธฐ๋
- 20 ~ 70๋ ์์์์ธ 4,500๋ช ์ ๋ํ ์ฌ์ง 7์ฅ( ์ฐฉ์ฉ (5 ์ฅ) , ์๋ชป๋ ์ฐฉ์ฉ (1 ์ฅ) , ๋ฏธ์ฐฉ์ฉ (1 ์ฅ) )
- ํด์๋ : 384, 512
- ์ด ์ด๋ฏธ์ง ์ : 31,500์ฅ(Train ์ด๋ฏธ์ง ์ : 18,900์ฅ)
- V100(vram 32GB) 5๊ฐ
- F1-score
| ๊ณ ๊ธ๊ฐ | ๋ฌธ์์ธ | ๋ฐ์ฌ๋ฏผ | ๋ฐ์ข ์ | ์ฃผ์ฌ์ |
|---|---|---|---|---|
| Github | Github | Github | Github | Github |
| [email protected] | [email protected] | [email protected] | [email protected] | [email protected] |
| ํ์ | ์ญํ |
|---|---|
| ๊ณ ๊ธ๊ฐ_T5011 | EDA๋ฅผ ํตํ data re-labeling ์งํ, ์คํ ์ํ |
| ๋ฌธ์์ธ_T5075 | ์๋ํ๋ฅผ ์ํ baseline ์ฝ๋ ๊ตฌํ, ์คํ ์ค๊ณ ๋ฐ ๋ถ์ ๋ ํฌํธ ์์ฑ |
| ๋ฐ์ฌ๋ฏผ_T5089 | ์๋ํ๋ฅผ ์ํ baseline, shell script code ๊ตฌํ, Loss ๋ฐ TTA ๊ตฌํ |
| ๋ฐ์ข ์_T5092 | ๋ค์ํ ๋ชจ๋ธ, Loss, Ensemble ์ฝ๋ ๊ตฌํ ๋ฐ ๊ฒ์ฆ |
| ์ฃผ์ฌ์_T5207 | ์คํ ์ํ ๋ฐ ๊ฒฐ๊ณผ ๋ก๊น ๋ฐ ๊ด๋ฆฌ |
| ๋ถ๋ฅ | ๋ด์ฉ |
|---|---|
| Dataset | Mis-labeled data - ์ ์ ์กฐ์ฌ๋ฅผ ํตํ Mis-labeled data ๋ฐ๊ฒฌ ๋ฐ relabeling Class imbalance data - ๋ง์คํฌ ์ฐฉ์ฉ ์ฌ๋ถ์ ๋ฐ๋ฅธ ๋ฐ์ดํฐ ๋ถ๊ท ํ (5:1:1) - ์ฑ๋ณ์ ๋ฐ๋ฅธ ๋ฐ์ดํฐ ๋ถ๊ท ํ (์ฝ 1:1.6) - ๋์ด์ ๋ฐ๋ฅธ ๋ฐ์ดํฐ ๋ถ๊ท ํ (์ฝ 7:6:1) ย ย ย ย => age band ์์ ย ย ย ย ย ย ย ย ย ย =>class0 < 30, 30<= class1 < 59, 59<= class2 ย ย ย ย ย ย ย ย ย ย =>class0 < 30, 30<= class1 < 58, 58<= class2 ย ย ย ย ย ย ย ย ย ย =>class0 < 29, 29<= class1 < 58, 58<= class2 BackGround Subtraction - Dataset์ ์ผ๋ถ์์, ๋ฐฐ๊ฒฝ์ ์ฌ๋ ์ผ๊ตด์ด ์กด์ฌํจ์ ๋ฐ๊ฒฌํ๊ณ 'rembg'๋ผ๋ ์คํ์์ค๋ฅผ ํ์ฉํ์ฌ ๋ฐฐ๊ฒฝ ์ ๊ฑฐ |
| Augmentation | CenterCrop - Female, 18~19์ธ ์๋น์์ ์ธ์์ด ํน์ ํด๋์ค๋ก ํน์ ๋๋ ์ท(๋นจ๊ฐ์ ํธ๋ ์ด๋ ๋ณต, ๊ตฐ๋ณต)์ ์ ์ ๊ฒ์ ํ์ธ - centercrop์ ์ฌ์ฉํ์ฌ ์ท ์ ๋ณด๋ฅผ ์ต๋ํ ์ ๊ฑฐ ย ย ย ย => CenterCrop(360,360)์์ ๊ฐ์ฅ ๋์ ์ฑ๋ฅ์ ๋ณด์ RandomHorizontalFlip RandomRotation RandomHorizontalFlip ColorJitter ToTensor Normalize |
| Loss | Focal Loss - Class ๋ถ๊ท ํ ๋ฌธ์ ๊ฐ ์์ด ์ฌ์ฉ, ํ์คํ ์ฑ๋ฅ ํฅ์ ์กด์ฌ Label Smoothing Loss - ์ด๊ธฐ ๋น ๋ฅธ ์๋ ด๊ณผ overfitting ๋ฐฉ์ง๋ฅผ ์ํด ์ฌ์ฉ, relabel ์ดํ ๋ค๋ฅธ Loss๋ค๊ณผ ๊ฐ์ด ์ฌ์ฉํ์ ๋ ์ฑ๋ฅ ํฅ์ ์กด์ฌ F1 Loss - ํ๊ฐ์งํ๊ฐ F1 Score์ด์๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ ํฅ์์ด ์์ ๊ฒ์ด๋ผ ์๊ฐํ์ฌ ์ฌ์ฉ (1 - F1 Score)์ผ๋ก ๊ตฌํ ย ย ย ย => ์ต์ข ์ ์ผ๋ก Focal Loss, Label Smoothing Loss, F1 Loss ๋ชจ๋ ์ฌ์ฉ (๋์ผ ๊ฐ์ค์น) |
| Model | Resnet50 - Resnet50์ ์ฐ์ ์ ์ผ๋ก ์ ํํ๊ณ Augmentation ์คํ์ ์งํํ์ฌ ์ต์ ํ ์์ผฐ์ผ๋, ํ ๋ชจ๋ธ์์๋ ๊ฐ์ ์ธํ ์์ Resnet๋ณด๋ค ๋ฎ์ ์ฑ๋ฅ์ ๋ณด์ ย ย ย ย => ์๊ฐ ๋ถ์กฑ์ ์ด์ ๋ก Resnet์ ๊ทธ๋๋ก ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ |
| Fast Training skills | Mixed Precision(AMP) - ์ข ๋ ๋น ๋ฅธ ํ์ต๊ณผ ์ต์ ํ๋ฅผ ์ํด ์ฌ์ฉ ย ย ย ย => ๊ธฐ์กด๋ณด๋ค ๋ง์ผ๋ฉด ์ ๋ฐ ์์ค๊น์ง ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ ์ฌ์ฉํ๋ ๋ชจ์ต ํ์ธ Scheduler - ๊ธฐ์กด Cosine Annealing with Warm Restart(์ดํ CAWR)๋ max๊ฐ์ด ๊ณ ์ ๋์ด์๊ธฐ ๋๋ฌธ์ ๊ธฐ์กด์ ์ฌ์ฉ ์ค์ธ StepLR๋๋น ํ๋ฐ๋ถ์ ์์ ์ ์ธ ํ์ต์ด ํ๋ค ๊ฒ์ด๋ผ ์๊ฐํ์ฌ ์ฌ์ดํด์ ๋ฐ๋ผ max๊ฐ์ ์ค์ฌ๋๊ฐ๋ Custom CAWR ์ค์ผ์ค๋ฌ๋ฅผ ์ฌ์ฉ ย ย ย ย => ๊ธฐ์กด ๋๋น ํ์ต ์ข ๋ฃ epoch์ด ์ ๋ฐ์ผ๋ก ์ค์๊ณ ํ์ต ์๋ ด ์์ฒด๋ 10๋ฐฐ์ ๋ ๋น ๋ฅด๊ฒ ์คํ ๊ฐ๋ฅ |
| Ensemble & TTA | Ensemble - soft voting์ ์ ํํ์ฌ ๊ตฌํ (softmax ์ฌ์ฉ) - age band ์์ 1,3๋ฒ ๋ฐ์ดํฐ, seed : 42, random ์ด Resnet50 4๊ฐ๋ก ์์๋ธ ์งํ TTA - ๋ชจ๋ธ์ ํ๋ฆฐ ์์ธก์ ์ต๋ํ ๋ฐฉ์งํ๊ธฐ ์ํด TTA๋ฅผ ์ ์ฉ - 5ํ ์งํ |
Clone repository
git clone https://github.com/JaiyoungJoo/level1_imageclassification-cv-06.git
cd level1_imageclassification-cv-06
Make new Conda env
conda create -n classification python=3.8
conda activate classification
Install requirements
pip install -r requirements.txt
wget path/to/download/
tar -zxvf [ํ์ผ๋ช
.tar.gz]
find . -name '._*' -exec rm {} \;
./configs/queue ์ ์ํ๋ ์คํ๋ค์ config.json ํ์ผ ์์ฑ(base_config ์ด์ฉ) ํ,

sh auto_trainer.sh
python inference.py

