Skip to content

JaiyoungJoo/level1_imageclassification-cv-06

ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

91 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Mask Image Classification

Project Overview

ํ”„๋กœ์ ํŠธ ๋ชฉํ‘œ

  • ์ž„์˜์˜ ์‚ฌ์ง„์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ๋‚˜์ด, ์„ฑ๋ณ„, ๋งˆ์Šคํฌ ์ฐฉ์šฉ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•˜๋Š” ๋ชจ๋ธ ์ œ์ž‘

๊ธฐ๋Œ€ ํšจ๊ณผ

  • ํ•ด๋‹น ํ”„๋กœ์ ํŠธ๋ฅผ ์ด์šฉํ•œ ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ์ ์€ ๋น„์šฉ์œผ๋กœ ๋งˆ์Šคํฌ ์ •์ƒ ์ฐฉ์šฉ ์—ฌ๋ถ€๋ฅผ ํŒ๋ณ„ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์œผ๋กœ ๊ธฐ๋Œ€

Dataset

  • 20 ~ 70๋Œ€ ์•„์‹œ์•„์ธ 4,500๋ช…์— ๋Œ€ํ•œ ์‚ฌ์ง„ 7์žฅ( ์ฐฉ์šฉ (5 ์žฅ) , ์ž˜๋ชป๋œ ์ฐฉ์šฉ (1 ์žฅ) , ๋ฏธ์ฐฉ์šฉ (1 ์žฅ) )
  • ํ•ด์ƒ๋„ : 384, 512
  • ์ด ์ด๋ฏธ์ง€ ์ˆ˜ : 31,500์žฅ(Train ์ด๋ฏธ์ง€ ์ˆ˜ : 18,900์žฅ)

GPU

  • V100(vram 32GB) 5๊ฐœ

ํ‰๊ฐ€๊ธฐ์ค€

  • F1-score

Team Introduction

Members

๊ณ ๊ธˆ๊ฐ• ๋ฌธ์ƒ์ธ ๋ฐ•์žฌ๋ฏผ ๋ฐ•์ข…์„œ ์ฃผ์žฌ์˜
Github Github Github Github Github
[email protected] [email protected] [email protected] [email protected] [email protected]

Members' Role

ํŒ€์› ์—ญํ• 
๊ณ ๊ธˆ๊ฐ•_T5011 EDA๋ฅผ ํ†ตํ•œ data re-labeling ์ง„ํ–‰, ์‹คํ—˜ ์ˆ˜ํ–‰
๋ฌธ์ƒ์ธ_T5075 ์ž๋™ํ™”๋ฅผ ์œ„ํ•œ baseline ์ฝ”๋“œ ๊ตฌํ˜„, ์‹คํ—˜ ์„ค๊ณ„ ๋ฐ ๋ถ„์„ ๋ ˆํฌํŠธ ์ž‘์„ฑ
๋ฐ•์žฌ๋ฏผ_T5089 ์ž๋™ํ™”๋ฅผ ์œ„ํ•œ baseline, shell script code ๊ตฌํ˜„, Loss ๋ฐ TTA ๊ตฌํ˜„
๋ฐ•์ข…์„œ_T5092 ๋‹ค์–‘ํ•œ ๋ชจ๋ธ, Loss, Ensemble ์ฝ”๋“œ ๊ตฌํ˜„ ๋ฐ ๊ฒ€์ฆ
์ฃผ์žฌ์˜_T5207 ์‹คํ—˜ ์ˆ˜ํ–‰ ๋ฐ ๊ฒฐ๊ณผ ๋กœ๊น… ๋ฐ ๊ด€๋ฆฌ

Our Notion


Procedure & Techniques

๋ถ„๋ฅ˜ ๋‚ด์šฉ
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ํšŒ ์ง„ํ–‰

Training History


Getting Started

Set up

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

Download dataset

wget path/to/download/
tar -zxvf [ํŒŒ์ผ๋ช….tar.gz]

find . -name '._*' -exec rm {} \;

Train (Auto Training)

./configs/queue ์— ์›ํ•˜๋Š” ์‹คํ—˜๋“ค์˜ config.json ํŒŒ์ผ ์ƒ์„ฑ(base_config ์ด์šฉ) ํ›„,

sh auto_trainer.sh

Inference

python inference.py

About

level1_imageclassification-cv-06 created by GitHub Classroom

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Jupyter Notebook 67.1%
  • Python 32.9%