딥러닝 모델 전처리의 핵심: 왜 리사이징(Resizing)과 정규화(Normalization)이 필요한가?
딥러닝에서 이미지 입력 전 전처리의 핵심은 리사이징(Resizing)과 정규화(Normalization)입니다.
이 둘은 단순 편의가 아니라 모델 구조와 학습 안정성을 동시에 만족시키는 필수 단계입니다.
1. 리사이징(Resizing): 구조적 요구사항과 배치 처리
(1) 고정 입력 크기 필요
CNN 계열은 최종적으로 FC(완전연결) 계층과 연결될 때 입력 차원이 고정되어야 합니다.
- 예: YOLOv1은 입력 448x448 기준으로 최종 feature map 크기를 전제로 FC를 설계
- 입력 크기가 달라지면 FC 입력 차원이 달라져 모델 구조가 깨짐
즉, 리사이징은 아키텍처 일관성 유지에 필수입니다.
(2) 배치 학습 효율
딥러닝은 배치 단위 텐서 연산을 사용하므로, 샘플 크기가 같아야 병합 가능합니다.
- 크기가 제각각이면 DataLoader 스택 단계에서 오류 발생
- Resize로 크기를 통일해야 GPU 병렬 처리가 가능
(3) ROI Pooling과의 연결
탐지 모델(Fast/Faster R-CNN)은 ROI 크기가 다양하므로 ROI Pooling/Align으로 고정 크기 표현으로 변환합니다.
- 이는 본질적으로 “특징맵 상의 리사이징” 문제를 해결하는 메커니즘
2. 정규화(Normalization): 학습 안정성과 일반화
(1) 표준 전처리 파이프라인
현대 비전 모델은 보통 아래 순서를 따릅니다.
- Resize
- ToTensor
- Normalize(mean, std)
사전학습 모델 재사용 시 ImageNet 통계(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])가 표준처럼 사용됩니다.
(2) 학습 안정화
입력 스케일이 과도하면 그래디언트 폭발/소실 위험이 커집니다.
- 정규화로 입력 분포를 안정화하면
- 수렴 속도 개선
- 최적화 안정성 향상
(3) 스케일 독립성
정규화는 이미지 픽셀뿐 아니라 박스 회귀에서도 중요합니다.
- 박스 좌표를 폭/높이 기준 상대값으로 정규화하면
- 절대 해상도 변화에 덜 민감한 학습 가능
결론
- 리사이징: 모델 구조/배치 처리 관점에서 필수
- 정규화: 수렴 안정성/일반화 성능 관점에서 필수
즉, 두 단계는 “데이터를 맞추는 보조 과정”이 아니라, 학습 가능성과 성능을 보장하는 핵심 설계 요소입니다.
PyTorch 예시
import torchvision.transforms as T
transform = T.Compose([
T.Resize((448, 448)),
T.ToTensor(),
T.Normalize(mean=[0.485, 0.456, 0.406],
std=[0.229, 0.224, 0.225]),
])