프로젝트 회고
1. 프로젝트 개요
- 프로젝트 주제: Document Type Classification
- 주요 목표:
- 지속 가능한 실험 체계 구축
- Hydra Config 및 WandB 로깅 시스템 도입 및 보급
- Baseline 모델 준비 및 실험 개요 정리 소개
대회 주요 정보
- Dataset
- Train Data:
- 총 1570개의 문서 이미지
- 17종 클래스 (각 클래스당 46~100개 샘플)
- Test Data:
- 총 3140개의 문서 이미지 (Train 데이터보다 약 2배 많음)
- 특징: 현실 환경을 반영한 Noise Augmentation이 포함되어 있으며, 구체적인 Augmentation 방식은 비공개
- 클래스 불균형 문제 존재
- Task
- Multi-class Classification: 이미지 데이터를 17종 문서 타입으로 분류
- Evaluation Metric
- Macro F1 Score: 각 클래스별 F1 Score 평균
2. 주요 역할 및 업무
- Baseline 코드 준비
- Hydra Config를 통해 실험별 설정 및 환경 관리.
- Config 파일 구조화로 실험 재현성 강화.
- Baseline 모델 코드 최적화 및 초기 학습 파이프라인 준비.
- WandB 로깅
- 기본적인 Train, Validation F1 metric 로깅.
- V2.0 업그레이드: Confusion Matrix, Precision, Recall 등 클래스별 세부 시각화 결과 로깅.
- 실험 결과 공유 및 분석 간소화를 위해 Config 파일 구조 개선.
- 실험 설계 및 진행
- 초기 Model, Hyperparam 조합 실험 진행
- Image embedding clustering report 시각화 EDA
- Train/Validation Metric 불일치 문제(Data Leakage Issue) 분석 및 해결.
- Augmentation 전략 조정:
- Offline 방식 추가 적용.
- 증강 이미지 상태와 Metric 개선 효과를 정량/정성적으로 평가.
- 클래스별 Precision/Recall 불균형 개선 시도:
- Focal Loss, Weighted Sampler 적용.
3. 주요 실험 결과
3.1 Data Leakage 문제
- 발견: Train보다 Validation Metric이 높고, 1에 가까운 Saturation 현상 확인.
- 원인: Augmentation을 모든 데이터에 일괄 적용한 후 Train/Validation 분리.
- 해결 방안:
- Train/Validation Split 후 Train 데이터에만 Augmentation 적용.
- 결과: 데이터 Leakage 제거 후 Validation Metric 신뢰성 확보 및 성능 안정화.
3.2 Augmentation 전략 개선
- 문제:
- Noise Augmentation 방식이 Test 데이터에 적용되어 현실적 노이즈 반영.
- 과도한 Augmentation으로 인해 Train 데이터의 왜곡 및 모델 학습 효율 저하 확인.
- 개선:
- 증강 강도를 조정하고 Offline Augmentation 방식을 추가로 시도.
- 증강된 이미지의 상태를 정성적으로 검토 및 Metric 기반 정량 평가.
- 결과: Augmentation 강도를 조정한 후 모델의 Train/Validation 성능 균형 개선.
3.3 클래스 불균형 문제
- 발견: Train 및 Test 데이터 모두에서 클래스 불균형 존재.
- 분석 도구: PR Curve, Confusion Matrix 등을 활용하여 문제 원인 파악.
- 해결 방안:
- Focal Loss로 어려운 클래스 학습 강조.
- Weighted Sampler로 데이터 불균형 보완.
- 결과: 일부 클래스에서 Precision/Recall 개선 확인.
4. 잘한 점
- Hydra Config 관리
- 실험 설정 및 재현성 강화.
- Config 파일을 통해 다양한 실험 간 빠른 전환 가능.
- WandB 로깅
- 실험 결과 공유 및 시각화를 통해 팀 간 협업 효과 증가.
- Confusion Matrix, PR Curve 등 시각화 보고서를 통한 문제 파악.
5. 아쉬운 점
- Domain Adaptation 기술에 과몰입
- 데이터 자체의 품질 및 Augmentation 전략 개선에 더 집중했어야.
- 특히 Offline Augmentation 방식을 더 적극적으로 활용하지 못함.
- 코드 복잡성 증가
- 우선 순위 설정 미비
6. 다음 프로젝트 개선 방향
- Logger 모듈화
- WandB 로깅 체계화
- Hyperparameter Tuning 도입
- 체계적인 Augmentation 전략
7. 개인 회고
나는 내 학습목표를 달성하기 위해 무엇을 어떻게 했는가?
- 목표: 실험 관리 효율화 및 데이터 기반 문제 해결.
- 이를 위해 최근 강의에서 접한
Hydra Config
를 적극 활용하여 실험 설정의 유연성을 확보하고, WandB
를 통해 실험 데이터 체계적 로깅, 시각화 및 협업의 효과를 높임
GitHub Repository
https://github.com/kafkapple/upstageailab-cv-classification-cv_c1
#패스트캠퍼스 #패스트캠퍼스AI부트캠프 #업스테이지패스트캠퍼스 #UpstageAILab #국비지원 #패스트캠퍼스업스테이지에이아이랩 #패스트캠퍼스업스테이지부트캠프