위클리페이퍼(7) 리사이징, 정규화, 데이터 증강, 전이학습?

윤승호·2025년 5월 1일

◆ Q & A 요약

Q1. 이미지를 모델에 입력하기 전에 리사이징(Resizing)과 정규화(Normalization)를 하는 이유는 무엇인가요?
A1. 리사이징은 입력 이미지를 모델이 요구하는 크기로 맞추거나, 폴더 내 이미지 사이즈가 각기 다를 때 이를 통일하기 위해 필요하다. 정규화는 픽셀 값을 일정 범위로 조정하는 것으로, 학습 속도와 추론 성능을 높이기 위해 필요하다.

Q2. 데이터 증강(Data Augmentation)이란 무엇이며, 이미지 데이터에서 주로 사용하는 증강 기법에는 어떤 것들이 있나요?
A2. 데이터 증강은 학습 데이터를 인위적으로 변형해 데이터 수를 늘리는 기법이다. 주로 학습 데이터가 충분하지 않을 때 사용한다. 기법 종류로는 회전, 반전, 크롭, 줌, 밝기, 대비, 색상, 노이즈 조절 등이 있다.

Q3. Transfer Learning(전이 학습)이란 무엇이며, 이미지 분류 모델에서 어떻게 활용할 수 있나요?
A3. Transfer Learning이란 학습이 완료된 모델의 가중치를 새로운 테스크에 재사용하는 기법이다. 이미지 분류에서는 ResNet과 VGGnet 등의 학습 모델을 사용하며, 내가 가진 데이터 수에 따라 Classifier Tuning, Full Fine Tuning, Partial Fine Tuning을 선택하여 학습을 진행한다.

항목정의핵심 이유예시
리사이징입력 크기 통일모델 호환성Resize(224,224)
정규화픽셀값 스케일링학습 안정화Normalize(mean, std)
데이터 증강이미지 변형일반화 향상회전, 반전, 크롭 등
전이 학습기존 모델 재사용빠른 학습, 적은 데이터ResNet + 새 출력층

1. 이미지를 모델에 입력하기 전에 리사이징(Resizing)과 정규화(Normalization)를 하는 이유는 무엇인가요?

(1) 리사이징 (Resizing)

  • 입력 이미지의 크기를 모델이 요구하는 고정된 크기로 변환하는 전처리 단계
  • 대부분의 CNN 모델은 고정된 입력 크기(예: 224x224)를 요구함
  • 다양한 크기의 이미지를 동일한 텐서 형식으로 처리하려면 통일 필요
  • transforms.Resize((224, 224)) → 모든 이미지를 224x224로 조정
  • CIFAR-10: 원래 32x32 / ImageNet: 224x224 / Custom 모델에 따라 다름
  • 과도한 리사이징은 이미지 품질 저하, 왜곡 가능
  • 보통 비율 유지하며 패딩(padding) 또는 중심 자르기(center crop)와 병행

(2) 정규화 (Normalization)

  • 이미지 픽셀 값을 특정 범위로 조정하는 전처리 작업
  • 보통 0~2550~1, 또는 1~1로 스케일 조정
  • 입력 값의 분포를 일정하게 하여 학습 안정화
  • *경사하강법(GD)**에서 폭주하거나 미세한 변화에 민감해지는 문제 완화
  • transforms.ToTensor() → 0255를 01로 변환
  • transforms.Normalize(mean, std) → 평균, 표준편차 기준으로 정규화
    • 예: mean = [0.5, 0.5, 0.5], std = [0.5, 0.5, 0.5] → [-1, 1] 범위로 조정
  • 빠른 수렴, 학습 효율 향상
  • 동일한 입력 분포 유지로 전이학습(Transfer Learning)에 유리

2. 데이터 증강(Data Augmentation)이란 무엇이며, 이미지 데이터에서 주로 사용하는 증강 기법에는 어떤 것들이 있나요?

(1) 데이터 증강이란?

  • 원본 데이터를 변형하여 새로운 데이터를 생성하는 기법
  • 모델이 다양한 상황에 견딜 수 있도록 일반화 성능 향상
  • 데이터가 적을 경우 과적합(overfitting)을 방지
  • 테스트 이미지와 유사한 상황(회전, 밝기, 노이즈 등)을 학습 시뮬레이션
  • 모델이 위치, 각도, 조명 변화에 덜 민감해지도록 도움

(2) 주요 기법

이미지 기준

종류설명
수평/수직 반전이미지를 좌우 또는 상하로 뒤집음
회전 (Rotation)일정 각도로 이미지를 회전시킴
크롭 (Crop)이미지의 일부분만 잘라 사용
확대/축소 (Scale)이미지 일부를 확대하거나 축소
밝기 조정이미지의 밝기를 랜덤하게 조절
노이즈 추가가우시안 노이즈 등으로 이미지에 무작위 흔들림 부여
색상 변화Hue, Saturation, Contrast 등을 랜덤하게 조정
혼합 (Mixup, CutMix)두 이미지를 합쳐 새로운 입력 생성

(3) 코드 예시 (PyTorch)

from torchvision import transforms

train_transform = transforms.Compose([
    transforms.Resize((224, 224)),
    transforms.RandomHorizontalFlip(),
    transforms.RandomRotation(15),
    transforms.ColorJitter(brightness=0.2, contrast=0.2),
    transforms.ToTensor(),
    transforms.Normalize([0.5]*3, [0.5]*3)
])

3. Transfer Learning(전이 학습)이란 무엇이며, 이미지 분류 모델에서 어떻게 활용할 수 있나요?

(1) 전이 학습이란?

  • *이미 학습된 모델의 가중치(Weight)**를 활용해 새로운 작업에 적용하는 기법
  • 대규모 데이터셋으로 사전 학습한 모델의 특징 추출 능력을 재사용
  • 소량의 데이터만 있어도 좋은 성능 가능
  • 학습 시간과 리소스를 크게 절약
  • ImageNet 등 대규모 데이터셋으로 사전학습된 모델이 강력한 표현력을 가짐

(2) 활용 방식

A. Feature Extractor로 사용

  • 사전학습된 CNN의 합성곱 부분만 사용하고, 출력층만 새로 학습
  • CNN이 추출한 feature vector를 기반으로 새로운 분류기를 연결

B. Fine-tuning (미세조정)

  • 일부 레이어는 동결하고, 일부는 학습 가능 상태로 설정해 재학습
  • 하위 레이어는 기본 패턴 유지, 상위 레이어만 도메인 특화

(3) 대표 사전학습 모델

모델 이름특징
VGGNet단순하고 깊은 구조, 성능 좋지만 파라미터 많음
ResNet잔차 연결(skip connection)로 매우 깊은 네트워크 구현 가능
EfficientNet파라미터 수 대비 성능 최적화
MobileNet모바일 환경을 위한 경량화 모델

(4) 예시 코드 (PyTorch)

from torchvision import models

# 사전학습된 ResNet 불러오기
model = models.resnet18(pretrained=True)

# 마지막 출력층만 교체
model.fc = nn.Linear(model.fc.in_features, num_classes=10)


◆ 해설

1. 이미지를 모델에 입력하기 전에 리사이징(Resizing)과 정규화(Normalization)를 하는 이유는 무엇인가요?

딥러닝 모델에 이미지를 입력하기 전에 리사이징(Resizing)과 정규화(Normalization)를 하는 이유는 모델 학습의 효율성과 성능을 높이기 위해서입니다.

먼저, 리사이징(Resizing)은 모든 입력 이미지의 크기를 통일하기 위해 필요합니다. 딥러닝 모델은 고정된 크기의 입력을 받도록 설계되므로, 다양한 크기의 이미지를 일관된 형태로 맞춰야 합니다. 예를 들어, ResNet과 같은 사전 학습된 모델은 일반적으로 224x224 크기의 이미지를 입력으로 받습니다. 따라서, 모델이 학습할 수 있도록 모든 이미지를 동일한 크기로 변환해야 합니다.

다음으로, 정규화(Normalization)는 이미지의 픽셀 값 범위를 조정하는 과정입니다. 일반적으로 이미지의 픽셀 값은 0에서 255 사이의 정수값을 가지는데, 이를 [0, 1] 범위 또는 평균을 0, 표준편차를 1로 조정하는 방식으로 정규화합니다. 이렇게 하면 모델이 더 안정적으로 학습할 수 있으며, 특히 경사 소실(vanishing gradient) 문제를 완화하는 데 도움이 됩니다. 또한, 정규화를 통해 데이터의 분포를 일정하게 맞춰주면 모델이 특정 값 범위에 편향되지 않고 더 효과적으로 특징을 학습할 수 있습니다.

결론적으로, 리사이징은 입력 형태를 맞춰주고, 정규화는 학습을 안정적으로 진행하도록 도와주는 과정이라고 볼 수 있습니다.


2. 데이터 증강(Data Augmentation)이란 무엇이며, 이미지 데이터에서 주로 사용하는 증강 기법에는 어떤 것들이 있나요?

데이터 증강(Data Augmentation)이란 기존 데이터에 다양한 변형을 가하여 새로운 학습 데이터를 생성하는 기법입니다. 딥러닝 모델은 많은 데이터를 필요로 하지만, 충분한 양의 데이터를 확보하기 어려운 경우가 많습니다. 데이터 증강을 활용하면 기존 데이터를 다양하게 변형하여 모델의 일반화 성능을 향상시킬 수 있습니다. 이를 통해 과적합(overfitting)을 방지하고, 모델이 특정 패턴에 치우치지 않도록 학습할 수 있습니다.

이미지 데이터에서 자주 사용하는 데이터 증강 기법에는 다음과 같은 것들이 있습니다.

첫째, 회전(Rotation)입니다. 이미지를 특정 각도로 회전시켜 모델이 다양한 방향에서의 데이터를 학습할 수 있도록 합니다.

둘째, 수평/수직 뒤집기(Flipping)입니다. 특히 수평 뒤집기는 이미지 데이터가 좌우 대칭성을 가질 때 효과적인 방법입니다.

셋째, 잘라내기(Cropping) 및 크기 변환(Scaling)입니다. 이미지의 일부분을 랜덤하게 잘라내거나 확대 및 축소하여 다양한 시각적 변화를 학습할 수 있습니다.

넷째, 밝기 및 색상 변화(Brightness & Color Jittering)입니다. 이미지의 밝기, 대비, 색조 등을 조정하여 다양한 조명 환경에서도 모델이 잘 작동하도록 만듭니다.

다섯째, 노이즈 추가(Adding Noise)입니다. 이미지에 랜덤한 노이즈를 추가하여, 모델이 깨끗한 데이터뿐만 아니라 노이즈가 포함된 데이터도 잘 인식할 수 있도록 학습합니다.

이러한 데이터 증강 기법들은 이미지 데이터의 다양성을 증가시키고, 모델이 보다 일반적인 특징을 학습하도록 돕는 중요한 역할을 합니다.


3. Transfer Learning(전이 학습)이란 무엇이며, 이미지 분류 모델에서 어떻게 활용할 수 있나요?

전이 학습(Transfer Learning)이란 이미 학습된 모델의 가중치를 활용하여 새로운 데이터나 문제에 적용하는 기법입니다. 딥러닝 모델을 처음부터 학습하려면 많은 데이터와 연산 자원이 필요하지만, 전이 학습을 사용하면 기존에 학습된 지식을 재사용하여 적은 데이터로도 좋은 성능을 얻을 수 있습니다.

이미지 분류 모델에서 전이 학습을 활용하는 방법은 크게 두 가지가 있습니다.

첫 번째는 특징 추출(Feature Extraction) 방식입니다. 사전 학습된 모델의 합성곱 층(Convolutional Layers)은 일반적인 이미지 특징(엣지, 패턴, 질감 등)을 잘 학습하고 있기 때문에, 이 부분을 그대로 사용하고 마지막 분류 층(Fully Connected Layer)만 새롭게 학습하는 방법입니다. 예를 들어, ResNet이나 VGG 같은 사전 학습된 모델을 로드한 후, 마지막 출력 층만 교체하고 새로운 데이터셋에 맞춰 학습시키는 방식이 이에 해당합니다.

두 번째는 미세 조정(Fine-Tuning) 방식입니다. 이 방법은 사전 학습된 모델을 일부 수정하여 새로운 데이터에 맞춰 추가 학습하는 방식입니다. 특정 층(예: 상위 몇 개 층)은 고정하고, 나머지 층들은 새로운 데이터에 맞춰 학습할 수 있도록 설정하여 모델이 기존의 일반적인 특징뿐만 아니라 새로운 데이터셋의 특징도 학습할 수 있도록 합니다.

전이 학습은 특히 의료 영상 분석, 소규모 데이터셋을 활용한 산업별 특화 모델, 객체 탐지(Object Detection) 등의 다양한 이미지 분석 분야에서 널리 사용됩니다. 기존의 대규모 데이터셋(예: ImageNet)에서 학습된 모델을 활용함으로써, 학습 시간을 단축하고 일반화 성능을 높이는 데 큰 장점이 있습니다.

profile
나는 AI 엔지니어가 된다.

0개의 댓글