[카테고리:] 미분류

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


    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와의 명확한 의사소통 방식입니다.