Pretrained Model 없이 Scratch(바닥)부터 모델을 직접 설계하여 Tiny ImageNet(200 classes)을 분류하는 프로젝트입니다. 가장 큰 특징은 총 파라미터 개수를 100만(1M) 개 이하로 제한하는 엄격한 조건 하에서, 모델 구조 최적화와 최신 증강(Augmentation) 기법을 통해 **53.34%**의 높은 정확도를 달성했다는 점입니다.
💡 Key Challenge: 제한된 파라미터(Budget) 내에서 표현력을 극대화하기 위해 모델 깊이와 너비의 균형을 맞추고, 과적합을 막는 Advanced Training Strategy 적용.
tiny-imagenet-efficient-learning/
│
├── 📂 docs/ # 프로젝트 결과 보고서 (PDF)
├── 📂 notebooks/ # 모델 구현 및 학습 코드 (.ipynb)
├── .gitignore # Git 추적 제외 설정
├── README.md # 프로젝트 메인 문서
└── requirements.txt # 의존성 라이브러리 목록1M 이하의 파라미터 제약 조건을 만족시킨 증거(Code)와 학습 로그, 상세한 실험 결과는 아래 보고서에서 확인 가능합니다.
- 📄 Detailed Report: 👉 프로젝트 결과 보고서 (PDF) 다운로드
- Constraint Compliance: 전체 파라미터 수를 999,838개로 설계하여 제한(1,000,000개) 대비 **99.98%**의 효율적인 리소스 활용률을 보였습니다.
- Custom CNN: 적은 파라미터로 깊은 층을 쌓기 위해 Bottleneck 구조 등을 활용하여 자체 모델을 구축했습니다.
작은 모델이 다양한 패턴을 학습하고 일반화 성능을 높일 수 있도록 강력한 규제 기법을 적용했습니다.
- Mixup & CutMix: 이미지를 섞거나(Mix) 잘라 붙여(Cut) 데이터 분포를 다양화.
- DropPath (Stochastic Depth): 학습 중 확률적으로 경로를 끊어 앙상블 효과 유도.
- EMA (Exponential Moving Average): 학습 중 모델 가중치의 이동 평균을 저장하여, 최종 추론 시 더 안정적인 성능을 확보했습니다.
- Label Smoothing: 정답 레이블을 Soft하게 만들어 과신(Over-confidence) 방지.
| Metric | Score | Note |
|---|---|---|
| Parameters | 0.99M | Limit: 1.0M (Complied) |
| Public Score | 53.12% | Testset Accuracy |
| Private Score | 53.34% | Final Robustness Verified |
pip install -r requirements.txt# GPU 환경 권장 (CUDA)
jupyter notebook notebooks/tiny_imagenet_scratch_training.ipynbGithub: @PaleBlueNote
Email: yoonseokchan0731@gmail.com
This project was conducted to study Efficient Deep Learning and Model Optimization under strict constraints.