딥러닝을 위한 이미지 전처리 개념 정리 (교육용 문서)


1. 전처리의 목적

이미지 데이터를 딥러닝 모델에 입력하기 전에 반드시 거쳐야 할 과정입니다. 모델이 이미지의 픽셀을 수치적으로 이해할 수 있도록 구조화하는 것이 핵심입니다.


2. 핵심 전처리 단계

✅ Resize (크기 조정)

  • 목적: 이미지 크기를 모델에 맞는 해상도로 변경 (예: 224×224)
  • 이유: 대부분의 모델은 입력 크기가 고정되어 있음
  • 예시 코드 (PIL):
from PIL import Image
img = Image.open("sample.png").resize((224, 224))

✅ RGB 변환

  • 목적: PNG는 투명도(A채널)를 포함할 수 있으므로 RGB로 통일
  • 예시:
img = img.convert("RGB")

✅ NumPy 배열 변환

  • 목적: 이미지 데이터를 수치화된 배열로 변환
  • 예시:
import numpy as np
img_array = np.array(img)

✅ Normalize (정규화)

  • 목적: 픽셀값을 01 또는 -11 범위로 조정
  • 이유: 신경망은 정규화된 데이터를 더 잘 학습함
  • 예시:
img_array = img_array / 255.0

✅ Reshape (구조 정리)

  • 목적: 모델이 올바르게 해석할 수 있도록 텐서 구조 설정
  • TensorFlow 형식 (NHWC): (batch_size, height, width, channels)
  • 예시:
img_tensor = img_array.reshape((1, 224, 224, 3))

✅ (PyTorch의 경우) Permute

  • PyTorch 형식 (NCHW): (batch_size, channels, height, width)
  • 예시:
img_tensor = np.transpose(img_array, (2, 0, 1))  # CHW
img_tensor = img_tensor.reshape((1, 3, 224, 224))  # NCHW

3. base64와 이미지의 구분

  • base64는 바이너리 데이터를 텍스트로 바꾸는 인코딩 형식
  • PNG 등의 이미지를 전송할 때 주로 사용되며, 직접 모델 입력으로 사용 불가
  • 모델에 넣으려면 반드시:
    • base64 → decode → 이미지 객체 → 배열 변환 → 전처리

4. 전처리의 핵심 개념 요약

단계설명
Resize모델이 요구하는 고정 크기로 변경
ConvertRGB로 변환
Normalize픽셀을 01 또는 -11로 스케일 조정
Reshape텐서 구조 명시
Permute(PyTorch 전용) 채널 순서 맞추기

5. 실전 활용 예시

이미지 1장을 모델에 넣는 예 (TensorFlow 기준):

from PIL import Image
import numpy as np

img = Image.open("sample.png").convert("RGB").resize((224, 224))
img_array = np.array(img) / 255.0
input_tensor = img_array.reshape((1, 224, 224, 3))

6. 결론

  • 모든 전처리 단계는 “모델이 이미지 구조를 정확하게 이해하게 하는 것”을 목표로 합니다.
  • reshape, resize 등은 단순한 배열 조작이 아니라 AI와의 명확한 의사소통 방식입니다.

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다