← 모델 목록
수업 실습 2026-09-09 · image-classification
CNN 계열 (ConvNeXt, 트랜스포머 설계를 가져온 CNN)

torchvision convnext_small (ConvNeXt_Small_Weights.DEFAULT)

ConvNeXt-small Intel 풍경 이미지 분류 (딥러닝 미니대회 · 비교 실험)
모델
ConvNeXt의 small 크기(tiny보다 깊음). 분류기만 학습한 뒤 마지막 단계(features.7)를 아주 낮은 lr로 미세조정
사용 목적
수업 딥러닝 미니대회에서 tiny보다 큰 모델이 정확도를 더 올리는지 비교하려고, 노트북 밖 터미널 스크립트로 밤새 돌림
코드
mnmms/dl
가중치
best_convnext_small_s2.pth 189MB · 로컬 보관
best_convnext_small_s2.pth (노트북 폴더 기준)
test_accuracy93.5%
val_accuracy94.1%
학습 시간149.3분
추론 CPU / GPU측정 안 함

데이터

  • Kaggle Intel 풍경 6클래스 · test 3,000
  • train 11,228 · val 2,806 (seed 42)
  • 224×224 · ImageNet 평균·표준편차

학습

  • 1단계 분류기만 15 에폭 · lr 1e-4 (83.8분)
  • 2단계 features.7 · lr 3e-6 · 10 에폭 (65.6분)
  • GPU(CUDA) · 총 149분

결과

  • val accuracy 0.9408 · test accuracy 0.9350
  • ConvNeXt-tiny(0.9440)보다 낮음

배운 점

  • 2단계 끝까지 val이 오르는 중이었음
  • 낮은 lr + 에폭 부족으로 수렴 전에 멈춘 것으로 판단
개요용도 의도한 용도: 미니대회에서 모델 크기를 키우면 정확도가 오르는지 비교 대상 사용자: 해당 없음 (학습용) 의도하지 않은 …

용도

  • 의도한 용도: 미니대회에서 모델 크기를 키우면 정확도가 오르는지 비교
  • 대상 사용자: 해당 없음 (학습용)
  • 의도하지 않은 용도: 6개 클래스 밖의 사진 분류

모델 정보

항목 값
베이스 모델 torchvision.models.convnext_small(weights=ConvNeXt_Small_Weights.DEFAULT) (ImageNet-1k 사전학습)
크기 · 변형 ConvNeXt-small, 파라미터 약 5,020만 개 [🚩AI 설명] (torchvision 문서 기준 값, 스크립트에서 세지 않음)
리비전 torchvision 0.29.0+cu126 (uv.lock 기준)
아키텍처 features 0 ~ 7 단계 → classifier(LayerNorm, Flatten, Linear(768, 6))
학습 방식 1단계 분류기만 학습 → 2단계 features.7 + 분류기 미세조정
프롬프트 · 에이전트 구성 해당 없음
데이터ConvNeXt-tiny 카드 와 같은 데이터입니다. val 분할만 시드 42로 고정해 tiny와 val 구성이 다르고, te…

ConvNeXt-tiny 카드와 같은 데이터입니다. val 분할만 시드 42로 고정해 tiny와 val 구성이 다르고, test 3,000장은 같습니다.

항목 값
확보 방식 공개 데이터셋 그대로
출처 Kaggle puneet6060/intel-image-classification
직접 수집 내용 해당 없음
이용 조건 확인 [미확인]
규모 seg_train 14,034 / seg_test 3,000
분할 train 11,228 / val 2,806 (시드 42) / test 3,000 (finetune_small.log 출력)
레이블·클래스 분포 buildings, forest, glacier, mountain, sea, street (거의 균형)
전처리 Resize((224, 224)) → ToTensor → Normalize(ImageNet 평균·표준편차). 증강 없음
개인정보·민감정보 처리 해당 없음 (풍경 사진)
학습하이퍼파라미터 Adam , CrossEntropyLoss , 배치 32. 1단계 lr 1e-4 · 최대 15 에폭 · pati…
항목 값
하이퍼파라미터 Adam, CrossEntropyLoss, 배치 32. 1단계 lr 1e-4 · 최대 15 에폭 · patience 4. 2단계 lr 3e-6 · 최대 10 에폭 · patience 3
에폭 / 스텝 1단계 15 에폭, 2단계 10 에폭 (둘 다 early stopping 없이 끝까지)
학습 시간 1단계 5,026.5초 (83.8분) + 2단계 3,933.5초 (65.6분) = 149.3분 (finetune_small.log)
하드웨어 GPU (device: cuda 출력). 장비는 이 컴퓨터의 NVIDIA GeForce RTX 4070 Laptop GPU 8GB로 보이나 로그에서 직접 확인하지는 않음 [미확인]
프레임워크 torch 2.14.0+cu126, torchvision 0.29.0, tensorboard 2.21.0
시드 · 재현 방법 random_split(..., generator=torch.Generator().manual_seed(42)). 학습 시드 없음. python finetune_convnext_small.py로 실행
결과1단계 + 2단계 학습 곡선 (TensorBoard) test accuracy 0.9350 seg_test 3,000 0.94…
1단계 + 2단계 학습 곡선 (TensorBoard)
1단계 + 2단계 학습 곡선 (TensorBoard)
지표 값 테스트셋 비교 대상 (ConvNeXt-tiny r2)
test accuracy 0.9350 seg_test 3,000 0.9440
val accuracy (2단계 마지막) 0.9408 val 2,806 0.9487 (val 구성 다름)
1단계 val accuracy 0.9316 ~ 0.9330 val 2,806

추론 성능 (CPU / GPU)

측정 안 함.

장비 장비 이름 배치 크기 지연 시간 (샘플당, p50 / p95) 처리량 (샘플/초) 메모리 사용
CPU [미확인] - 측정 안 함 측정 안 함 측정 안 함
GPU [미확인] 32 측정 안 함 측정 안 함 측정 안 함
한계 · 배운 점한계 알려진 실패 유형: [미확인] (혼동행렬을 그리지 않음) 편향 / 공정성 이슈: 해당 없음 성능이 떨어지는 입력 조건: …

한계

  • 알려진 실패 유형: [미확인] (혼동행렬을 그리지 않음)
  • 편향 / 공정성 이슈: 해당 없음
  • 성능이 떨어지는 입력 조건: [미확인]

배운 점

wt_deep_7.ipynb "추가 비교 실험" 셀에서 옮긴 내용입니다.

  • 2단계는 early stopping이 걸리지 않고 끝까지 개선 중이었음 (val 0.9341 → 0.9408)
  • tiny보다 낮은 이유는 모델이 나빠서가 아니라 낮은 lr(3e-6)과 에폭 예산 부족으로 수렴을 다 못한 것으로 판단. 더 돌리면 tiny를 넘어설 가능성 있음
  • 시간 제약 때문에 노트북 커널과 별도로 터미널에서 백그라운드로 실행하고, 진행 상황은 finetune_small_progress.txt에 덮어써 확인
사용 방법코드 셀 2개
In [1]모델 준비 (1단계: 분류기만)
model = convnext_small(weights=ConvNeXt_Small_Weights.DEFAULT)
model.classifier[-1] = nn.Linear(model.classifier[-1].in_features, num_classes)

for param in model.parameters():
    param.requires_grad = False
for param in model.classifier.parameters():
    param.requires_grad = True
In [2]두 단계 학습
run_stage('S1-head', epochs=15, lr=1e-4, patience=4, ...)

for name, param in model.named_parameters():
    if name.startswith('features.7'):
        param.requires_grad = True

run_stage('S2-finetune', epochs=10, lr=3e-6, patience=3, ...)
Out[2] 출력 보기
[S1-head Epoch 15/15] train_loss=0.1920 train_acc=0.9325 | val_loss=0.1921 val_acc=0.9316
Stage1 done in 5026.5s
=== Stage 2: unfreeze features.7, low lr fine-tune ===
[S2-finetune Epoch 10/10] train_loss=0.1601 train_acc=0.9434 | val_loss=0.1767 val_acc=0.9408
Stage2 done in 3933.5s
FINAL TEST ACC (convnext_small) = 0.9350

같은 과제·데이터셋 비교 image-classification · Kaggle: puneet6060/intel-image-classification · 3개

굵은 이름이 이 모델입니다. 주황 테두리가 그룹 안 최고값입니다.

test_accuracy 높을수록 좋음 · 축 일부 생략