CNN 전체 파이프라인: 입력 이미지 → 특징 추출 → 분류
- 위 다이어그램은 32×32×3 RGB 이미지가 CNN을 통과하는 전체 과정을 보여줍니다
- 왼쪽에서 오른쪽으로: 입력 → Block 1,2,3(특징 추출) → Flatten → FC(분류)
특징 추출부 (Feature Extractor)
- 각 Block은 Conv → BatchNorm → ReLU → Pool 패턴을 반복합니다
- 채널 수 증가: 3 → 32 → 64 → 128 (점점 추상적인 특징)
- 공간 해상도 감소: 32×32 → 16×16 → 8×8 → 4×4 (풀링으로 다운샘플링)
분류부 (Classifier)
- Flatten: 4×4×128 = 2,048차원 벡터로 변환
- FC(2048 → 클래스 수): 최종 예측
각 레이어의 역할
- Conv: 공간 특징 추출 (엣지 → 텍스처 → 객체 부분)
- BatchNorm: 학습 안정화 — 각 레이어 출력을 정규화하여 gradient vanishing 방지
- ReLU: f(x) = \max(0, x) — 비선형성 추가
- Pool: 공간 크기 축소 + 이동 불변성 확보
왜 이 구조를 이해해야 하는가?
- CNN을 직접 구현하려면 데이터가 어떻게 흘러가는지 전체 그림을 파악해야 합니다
- 채널↑ + 해상도↓ 패턴은 VGG, ResNet, EfficientNet 등 모든 현대 CNN의 공통 설계입니다
PyTorch 구현 골격
- `self.features = nn.Sequential(nn.Conv2d(3,32,3,padding=1), nn.BatchNorm2d(32), nn.ReLU(), nn.MaxPool2d(2), ...)`
- `self.classifier = nn.Linear(2048, num_classes)`
CNN 구현의 표준 프레임워크인 PyTorch는 Paszke 등이 개발한 자동 미분 기반 딥러닝 라이브러리이다 (Paszke et al., 2019).