Skip to content

Tiny-Imagenet 데이터셋을 200개의 클래스로 분류합니다. 이미지는 npy파일로 제공되며, 해당 파일은 이미지로 복원해서 확인가능합니다. scratch로 image classification 모델을 만들고, tiny-imagenet 데이터셋에 대해 우수한 분류 성능을 달성하도록 합니다.

Notifications You must be signed in to change notification settings

PaleBlueNote/ML_tiny-imagenet-efficient-learning

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

⚡ Tiny ImageNet Efficient Classification (Under 1M Params)

PyTorch Model Size Accuracy

📖 Project Overview

Pretrained Model 없이 Scratch(바닥)부터 모델을 직접 설계하여 Tiny ImageNet(200 classes)을 분류하는 프로젝트입니다. 가장 큰 특징은 총 파라미터 개수를 100만(1M) 개 이하로 제한하는 엄격한 조건 하에서, 모델 구조 최적화와 최신 증강(Augmentation) 기법을 통해 **53.34%**의 높은 정확도를 달성했다는 점입니다.

💡 Key Challenge: 제한된 파라미터(Budget) 내에서 표현력을 극대화하기 위해 모델 깊이와 너비의 균형을 맞추고, 과적합을 막는 Advanced Training Strategy 적용.


📂 Repository Structure

tiny-imagenet-efficient-learning/
│
├── 📂 docs/                  # 프로젝트 결과 보고서 (PDF)
├── 📂 notebooks/             # 모델 구현 및 학습 코드 (.ipynb)
├── .gitignore             # Git 추적 제외 설정
├── README.md              # 프로젝트 메인 문서
└── requirements.txt       # 의존성 라이브러리 목록

📑 Project Report

1M 이하의 파라미터 제약 조건을 만족시킨 증거(Code)와 학습 로그, 상세한 실험 결과는 아래 보고서에서 확인 가능합니다.


🛠️ Methodology & Technical Strategy

1. Efficient Model Design (Architecture)

  • Constraint Compliance: 전체 파라미터 수를 999,838개로 설계하여 제한(1,000,000개) 대비 **99.98%**의 효율적인 리소스 활용률을 보였습니다.
  • Custom CNN: 적은 파라미터로 깊은 층을 쌓기 위해 Bottleneck 구조 등을 활용하여 자체 모델을 구축했습니다.

2. Advanced Augmentation & Regularization

작은 모델이 다양한 패턴을 학습하고 일반화 성능을 높일 수 있도록 강력한 규제 기법을 적용했습니다.

  • Mixup & CutMix: 이미지를 섞거나(Mix) 잘라 붙여(Cut) 데이터 분포를 다양화.
  • DropPath (Stochastic Depth): 학습 중 확률적으로 경로를 끊어 앙상블 효과 유도.

3. Optimization Techniques

  • EMA (Exponential Moving Average): 학습 중 모델 가중치의 이동 평균을 저장하여, 최종 추론 시 더 안정적인 성능을 확보했습니다.
  • Label Smoothing: 정답 레이블을 Soft하게 만들어 과신(Over-confidence) 방지.

📈 Experimental Results

Metric Score Note
Parameters 0.99M Limit: 1.0M (Complied)
Public Score 53.12% Testset Accuracy
Private Score 53.34% Final Robustness Verified

🚀 Getting Started

Prerequisites

pip install -r requirements.txt

Run Training (Scratch)

# GPU 환경 권장 (CUDA)
jupyter notebook notebooks/tiny_imagenet_scratch_training.ipynb

👤 Author

Github: @PaleBlueNote

Email: yoonseokchan0731@gmail.com


This project was conducted to study Efficient Deep Learning and Model Optimization under strict constraints.

About

Tiny-Imagenet 데이터셋을 200개의 클래스로 분류합니다. 이미지는 npy파일로 제공되며, 해당 파일은 이미지로 복원해서 확인가능합니다. scratch로 image classification 모델을 만들고, tiny-imagenet 데이터셋에 대해 우수한 분류 성능을 달성하도록 합니다.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published