딥러닝에서 이미지 입력 전 전처리의 핵심은 리사이징(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) 표준 전처리 파이프라인

현대 비전 모델은 보통 아래 순서를 따릅니다.

  1. Resize
  2. ToTensor
  3. 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]),
])