10000 GitHub - boostcampaitech2/image-classification-level1-06: image-classification-level1-06 created by GitHub Classroom
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

boostcampaitech2/image-classification-level1-06

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
< 8000 /div>
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

pstage_01_image_classification

pstage

๐Ÿ”ฅ Getting Started

Dependencies

torch==1.7.1
torchvision==0.8.2
tensorboard==2.6.0
pandas==1.1.5
opencv-python==4.5.1.48
scikit-learn==0.24.2
matplotlib==3.3.4
timm==0.4.12
tqdm==4.51.0
numpy==1.19.2
python-dotenv==0.19.0
Pillow==8.1.0
h5py==3.1.0
glob2==0.7

Install Requirements

  • pip install -r requirements.txt

Contents

  • dataset.py
  • face_image.py : FaceNet ์ ์šฉ
  • loss.py
  • model.py
  • optimizer.py
  • train.py
  • inference.py
  • evaluation.py
  • perfect_train.csv : dataset

Training

  • SM_CHANNEL_TRAIN=[train image dir] SM_MODEL_DIR=[model saving dir] python train.py

Inference

  • SM_CHANNEL_EVAL=[eval image dir] SM_CHANNEL_MODEL=[model saved dir] SM_OUTPUT_DATA_DIR=[inference output dir] python inference.py

Evaluation

  • SM_GROUND_TRUTH_DIR=[GT dir] SM_OUTPUT_DATA_DIR=[inference output dir] python evaluation.py

๐Ÿ” Overview

Background

COVID-19์˜ ํ™•์‚ฐ์œผ๋กœ ์šฐ๋ฆฌ๋‚˜๋ผ๋Š” ๋ฌผ๋ก  ์ „ ์„ธ๊ณ„ ์‚ฌ๋žŒ๋“ค์€ ๊ฒฝ์ œ์ , ์ƒ์‚ฐ์ ์ธ ํ™œ๋™์— ๋งŽ์€ ์ œ์•ฝ์„ ๋ฐ›๊ณ ์žˆ์Šต๋‹ˆ๋‹ค.
ํ™•์‚ฐ์„ ๋ง‰๊ธฐ์œ„ํ•ด ๋งŽ์€ ๋…ธ๋ ฅ๋“ค์„ ํ•˜๊ณ  ์žˆ์ง€๋งŒ COVID-19์˜ ๊ฐ•ํ•œ ์ „์—ผ๋ ฅ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๋ฅผ ์˜ค๋žซ๋™์•ˆ ๊ดด๋กญํžˆ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ด๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ชจ๋“  ์‚ฌ๋žŒ์ด ๋งˆ์Šคํฌ๋กœ ์ฝ”์™€ ์ž…์„ ๊ฐ€๋ ค์„œ ํ˜น์‹œ ๋ชจ๋ฅผ ๊ฐ์—ผ์ž๋กœ๋ถ€ํ„ฐ์˜ ์ „ํŒŒ ๊ฒฝ๋กœ๋ฅผ ์›์ฒœ ์ฐจ๋‹จํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด๋ฅผ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” ๊ณต๊ณต์žฅ์†Œ์—์„œ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์˜ ์˜ฌ๋ฐ”๋ฅธ ๋งˆ์Šคํฌ ์ฐฉ์šฉ ์ƒํƒœ๋ฅผ ๊ฒ€์‚ฌํ•˜๋Š” ์‹œ์Šคํ…œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
์ฆ‰, ์นด๋ฉ”๋ผ๋กœ ๋น„์ถฐ์ง„ ์‚ฌ๋žŒ ์–ผ๊ตด ์ด๋ฏธ์ง€๋งŒ์œผ๋กœ ์ด ์‚ฌ๋žŒ์ด ๋งˆ์Šคํฌ๋ฅผ ์“ฐ๊ณ  ์žˆ๋Š”์ง€, ์“ฐ์ง€ ์•Š์•˜๋Š”์ง€,
์ •ํ™•ํžˆ ์“ด ๊ฒƒ์ด ๋งž๋Š”์ง€ ์ž๋™์œผ๋กœ ๊ฐ€๋ ค๋‚ผ ์ˆ˜ ์žˆ๋Š” ์‹œ์Šคํ…œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

Problem definition

์นด๋ฉ”๋ผ๋กœ ๋น„์ถฐ์ง„ ์‚ฌ๋žŒ ์–ผ๊ตด ์ด๋ฏธ์ง€๋งŒ์œผ๋กœ ์ด ์‚ฌ๋žŒ์ด ๋งˆ์Šคํฌ๋ฅผ ์“ฐ๊ณ  ์žˆ๋Š”์ง€,
์“ฐ์ง€ ์•Š์•˜๋Š”์ง€, ์ •ํ™•ํžˆ ์“ด ๊ฒƒ์ด ๋งž๋Š”์ง€ ์ž๋™์œผ๋กœ ๊ฐ€๋ ค๋‚ผ ์ˆ˜ ์žˆ๋Š” ์‹œ์Šคํ…œ or ๋ชจ๋ธ

Development environment

  • GPU V100 ์›๊ฒฉ ์„œ๋ฒ„
  • PyCharm ๋˜๋Š” Visual Studio Code | Python 3.7(or over)

Evaluation

๐Ÿ˜ท Dataset Preparation

Prepare Images

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2021-09-03 แ„‹แ…ฉแ„’แ…ฎ 11 05 14

์ถœ์ฒ˜ : kr.freepik.com
  • ์ „์ฒด ์‚ฌ๋žŒ ์ˆ˜ : 4500๋ช… (train : 2700 | eval : 1800)
  • age : 20๋Œ€ - 70๋Œ€
  • gender : ๋‚จ,์—ฌ
  • mask : ๊ฐœ์ธ๋ณ„ ์ •์ƒ ์ฐฉ์šฉ 5์žฅ, ๋น„์ •์ƒ์  ์ฐฉ์šฉ 1์žฅ(์ฝ”์Šคํฌ,ํ„ฑ์Šคํฌ...), ๋ฏธ์ฐฉ์šฉ 1์žฅ
  • ์ „์ฒด 31,500 Images (train : 18,900 | eval : 12,600)
  • ์ด๋ฏธ์ง€ ํฌ๊ธฐ : (384,512)

Data Labeling

  • mask, gender, age ๊ธฐ์ค€ 18๊ฐœ์˜ ํด๋ž˜์Šค๋กœ ๋ถ„๋ฅ˜

$ python face_image.py
  • face_image.py
  • FaceNet ์ด์šฉ ์–ผ๊ตด ์ธ์‹ ํ›„ FaceCrop
  • FaceCrop ํ›„ Resize๋ฅผ ๊ฑฐ์นœ ์ด๋ฏธ์ง€ ํฌ๊ธฐ : (280, 210)

Generate CSV files

  • perfect_train.csv

๐Ÿƒ Training

Train Models

# ๋‹จ์ผ ๋ชจ๋ธ train ์‹œ
$ python train.py 

Stratified K-fold

from sklearn.model_selection import StratifiedKFold
# cross_validation ์‚ฌ์šฉํ•ด train ์‹œ
$ python train.py --cv True

train.py cross_validation ํ•จ์ˆ˜

Multilabel Classification

# gender, age, mask ๊ฐ๊ฐ ํ•™์Šต
$ python train.py --multi=True

๐Ÿ’ญ Inference

# ๋‹จ์ผ model์„ ํ†ตํ•ด inference ์‹œ
$ python inference.py \
  --model_name={kinds of models} \
  --model_dir={model_filepath} \
  --pth_name={model parameter name} \
  --output_name={output_filename} \
# cross_validation ์„ ์‚ฌ์šฉํ•ด ๋‚˜์˜จ model 5๊ฐœ๋ฅผ ํ†ตํ•ด inference ์‹œ
$ python inference.py \
  --model_name={kinds of models} \
  --model_dir={model_filepath} \
  --pth_name=best \
  --output_name={output_filename} \
  --cv=True
# ensemble ์„ ์‚ฌ์šฉํ•ด inference ์‹œ
$ python inference.py \
  --ensemble_model_name={kinds of models : ๋„์–ด์“ฐ๊ธฐ๋กœ ๊ตฌ๋ถ„ํ•œ ์—ฌ๋Ÿฌ๊ฐœ์˜ model_name} \
  --ensemble_model_dir={model_filepath : ๋„์–ด์“ฐ๊ธฐ๋กœ ๊ตฌ๋ถ„ํ•œ ์—ฌ๋Ÿฌ๊ฐœ์˜ model_file_path} \
  --pth_name=best \
  --output_name={output_filename} \
  --ensemble=True
# multilabel inference ์‹œ
$ python inference.py \
  --model_name={kinds of models} \
  --model_dir={model_filepath} \
  --pth_name=best \
  --output_name={output_filename} \
  -- multi True

๐Ÿ“„ Wrap Up Report

Wrap Up Report

About

image-classification-level1-06 created by GitHub Classroom

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 6

Languages

0