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 (정규화)
- 목적: 픽셀값을 0
1 또는 -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 | 모델이 요구하는 고정 크기로 변경 |
Convert | RGB로 변환 |
Normalize | 픽셀을 0 |
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와의 명확한 의사소통 방식입니다.
답글 남기기