1. 🎯 프로젝트 개요
- 주제: 폐기물 분류를 위한 AI 모델 개발
- 목표: 폐기물 이미지를
organic(유기물)과 recyclable(재활용 가능)로 분류
- 활용 모델: EfficientNetV2-M
- 구현 환경: NVIDIA H200 GPU
2. 💡 모델 선택 및 비교
| 모델명 | ImageNet Top-1 Accuracy | 파라미터 수 | 특징 |
|---|
| EfficientNetV2-S | 84.6% | 24M | 경량, 속도 우수 |
| ✅ EfficientNetV2-M | 85.1% | 55M | 정확도·속도 균형 |
| ConvNeXt-B | 85.8% | 89M | 연산량 많음 |
| ViT-B/16 | 81.8% | 86M | 대규모 데이터 필요 |
- 최종 선택:
EfficientNetV2-M
- 정확도 85.1% 이상
- H200 환경에서 병렬 연산 최적화
- 적당한 규모로 과적합 위험 줄이면서 성능 확보
3. 🧪 데이터 구성 및 증강
📂 폴더 구조
/dataset
├── train/
│ ├── organic/
│ └── recyclable/
└── val/
├── organic/
└── recyclable/
📈 데이터 증강 전략
RandomFlip
RandomRotation
RandomZoom
RandomTranslation
Brightness, Contrast
- 추가 가능:
CutMix, MixUp, RandAugment
4. ⚙️ 학습 파이프라인 요약
Mixed Precision 설정 (H200 최적화)
from tensorflow.keras.mixed_precision import set_global_policy
set_global_policy('mixed_float16')
모델 구성 요약
from tensorflow.keras.applications import EfficientNetV2M
base_model = EfficientNetV2M(include_top=False, weights='imagenet', input_shape=(256, 256, 3))
# 전이학습 구조
x = tf.keras.layers.GlobalAveragePooling2D()(base_model.output)
x = tf.keras.layers.Dense(128, activation='relu')(x)
x = tf.keras.layers.Dropout(0.3)(x)
output = tf.keras.layers.Dense(1, activation='sigmoid', dtype='float32')(x)
model = tf.keras.Model(inputs=base_model.input, outputs=output)
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
5. 📊 성능 목표 및 평가 지표
| 모델 | Train Acc | Val Acc | Notes |
|---|
| EfficientNetV2-M | 97.5% | 95.6% | fine-tuning 완료 시 예상 |
- 지표: Accuracy, Precision, Recall, F1 Score
- 추가 권장: Confusion Matrix, ROC Curve 시각화
6. 🛠 사용 도구 및 환경
- 프레임워크: TensorFlow 2.x + Keras
- 하드웨어: NVIDIA H200 GPU
- 개발 환경: Google Colab Pro / JupyterLab / VS Code
- 툴:
TensorBoard: 학습 시각화
Matplotlib: 성능 비교 그래프
FastAPI: 향후 서빙용 API 구성 가능
7. 🧑🤝🧑 팀 운영 & 발표 구성 요소
필수 발표 항목
- Why 이 문제를 푸는가 (정당성 부여)
- 데이터 예시 및 증강 방식
- 모델 비교 및 성능 정리
- 팀원별 역할
- 사용한 도구 및 로고
- 배운 점 & 향후 계획
🔚 다음 단계 제안
- 학습 진행 후 로그 및 그래프 정리
- confusion matrix 및 class activation map 시각화
- FastAPI 기반 예측 API 개발 (옵션)