Skip to content

yjs616/level1-imageclassification-cv-07

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

🏆 Sketch Image Data Classification


Goal : 주어진 스케치 데이터를 활용하여 모델을 제작하고 제공된 테스트 세트의 각 이미지에 대해 올바른 레이블 예측
Data : 원본 ImageNet Sketch 데이터셋 중 상위 500개 객체(class)의 25,035개의 이미지 데이터

[1] Project Overview

⏲️ Timeline (09/03 - 09/26)

  1. EDA 및 baseline code 분석
  2. Baseline model 선정
  3. Baseline model 일반화 성능 개선
  4. 최종 결과 분석

🥇 최종 결과

Screenshot 2024-09-26 at 7 05 51 PM

[2] Environment

  • 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)

[3] File Tree

  ├─.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

[4] Project Workflow

  1. 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%로 확인
  2. Baseline model 선정
    • 다양한 backbone 모델 실험 후 최종적으로 가장 높은 88.3%의 public score를 달성한 Coatnet_3_rw_224를 baseline model로 선정
    • 모듈화 및 협업 툴 추가
      • Weights and Biases (WandB) 사용
      • tmux 사용
      • slack api 활용 모델 학습 완료 알림 자동화
  3. Baseline model 일반화 성능 개선
    1. Optimizer
    2. Data Augmentation
    3. Layer freeze
    4. Dropout & Batch normalization
    5. Loss
    6. Learning rate scheduler
    7. Progressive resizing (input size)
    8. Failure Analysis
    9. K-fold & Ensemble
    10. TTA

[5] Final Model Architecture

image_fma

Team Members

럭키비키🍀

이동진 정지환 유정선 신승철 김소정 서정연
앙상블, pseudo labeling, failure analysis 데이터 전처리, 앙상블, progressive resize, 하이퍼파라미터 조정 데이터 분석 및 전처리, data augmentation, freezing 데이터 전처리, data augmentation, 하이퍼파라미터 조정, 앙상블 프로젝트 스케줄링 및 문서화, freezing, data augmentation, TTA data augmentation, stratified k-fold, 깃허브 레포지토리 관리

About

level1-imageclassification-cv-07 created by GitHub Classroom

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 98.4%
  • Shell 1.6%