Input Data

Normalization vs. Standardization

  • 학습 파이프라인에 따라 입력데이터가 Normalization 또는 Standardization 해서 들어감.
  • 특히 헤일로 양자화하는 과정에서 해당 모델이 어떤 입력데이터 정규화를 사용했는지 확인하고 알맞게 양자화 해야함(양자화 및 컴파일 과정에서 네트워크 내부에서 정규화 작업을 하게 만들기 위해).

Label File

  • 어노테이션(라벨링)된 파일은 대부분 PNG 포맷.
  • PIL로 PNG 포맷을 저장할 때, 인덱스(클래스넘버)에 따라 색상 값(Pallete)을 정해주는 팔레트 모드로 저장할 수 있음.
  • 팔레트 모드로 저장된 PNG 파일을 PIL Image로 읽어오면 픽셀 값은 인덱스로 구성되므로 그 자체가 라벨링 파일로 사용 가능함.

Crop Size

시멘틱 세그멘테이션에서 Crop Size란?

  • 시멘틱 세그멘테이션에서 crop_size란 입력 이미지에서 학습을 위해 잘라내는 패치(patch)의 크기를 의미함. 시멘틱 세그멘테이션 모델은 일반적으로 고해상도 이미지를 입력으로 받지만, 하드웨어 메모리 제약과 모델 효율성 문제로 인해 이미지를 일정 크기로 잘라서 학습을 수행함.
  • 목적:
    • GPU 메모리 사용량을 제한하고, 고해상도 데이터를 다룰 수 있게 하기 위함.
    • 작은 크기의 패치로 학습하면 지역적인 세부 정보(경계, 질감 등)를 더 잘 학습할 수 있음.
  • 작동 방식:
    • 원본 이미지에서 crop_size 크기로 패치를 랜덤하게 잘라서 네트워크에 입력으로 제공.
    • 잘라낸 패치 내에서만 손실(loss)을 계산.

Crop Size의 선택이 중요한 이유

  1. 모델의 컨텍스트 학습 능력에 영향:
    • 너무 작은 crop_size는 이미지 내 넓은 문맥(context) 정보를 잃을 수 있어, 물체 전체의 의미를 이해하기 어렵게 만든다.
    • 너무 큰 crop_size는 메모리 소모량이 커지고, 작은 물체에 대한 세부 정보를 학습하는 데 어려움을 겪을 수 있다.
  2. GPU 메모리 사용량:
    • crop_size가 커질수록 네트워크 입력 크기가 커지므로 메모리 사용량이 증가.
    • 하드웨어 성능에 따라 적절한 크기를 설정해야 함.
  3. 데이터셋의 해상도:
    • 데이터셋의 이미지 크기가 crop_size보다 작을 경우, 패딩(padding)을 추가해야 함.
    • 따라서 데이터셋의 평균 해상도에 적합한 값을 설정해야 함.

Crop Size 설정의 일반적인 기준

  1. 데이터셋의 해상도:
    • 데이터셋에 따라 crop_size를 조정해야 함.
      • 예: Cityscapes 데이터셋의 이미지 크기는 1024×2048이므로, 일반적으로 crop_size는 512×512 또는 768×768로 설정.
      • Pascal VOC 데이터셋의 경우, 이미지 크기가 더 작으므로 321×321 또는 512×512로 설정.
  2. 문맥 정보와 세부 정보 균형:
    • 물체의 크기와 경계가 중요한 데이터셋에서는 상대적으로 큰 crop_size가 적합.
    • 반면, 작은 물체가 많거나 지역적인 세부 정보가 중요한 경우에는 작은 crop_size가 유리.

잘못된 Crop Size가 문제가 되는 경우

  1. 작은 물체가 많은 데이터셋:
    • 예: Pascal VOC, COCO 데이터셋에서 작은 물체가 주로 등장하는 경우, crop_size로 인해 물체가 패치 내에 포함되지 않을 확률이 높아진다. (의미없는 패치)
  2. 경계 정보가 중요한 작업:
    • 예: 자율 주행에서 도로 경계선, 보행자 윤곽 등을 정확히 분류해야 하는 경우, 경계 정보가 없는 패치는 모델 성능을 저하시킬 수 있다.
  3. 클래스 불균형이 심한 데이터셋:
    • 예: 특정 클래스(예: 하늘, 배경)가 이미지의 대부분을 차지하는 데이터셋에서는, 잘못 설정된 crop_size가 모델 학습을 더욱 편향되게 만들 수 있다. (학습 데이터의 불균형)

해결 방법

  1. Random Crop 대신 Smart Crop 활용:
    • crop_size로 랜덤하게 패치를 잘라내는 대신, 의미 있는 객체가 포함된 패치를 선택적으로 샘플링하는 방법을 사용할 수 있습니다.
    • 예: 패치 내에 특정 클래스의 픽셀이 일정 비율 이상 포함되도록 설정.
  2. Oversampling Underrepresented Classes:
    • 희귀 클래스(또는 의미 있는 패치)가 포함된 이미지를 우선적으로 샘플링하여 학습 데이터의 불균형을 완화.
  3. 패치 크기 증가 (crop_size 확장):
    • 충분히 큰 crop_size를 사용하면 패치 내에 문맥 정보와 경계 정보가 포함될 가능성이 높아집니다.
    • 예: 데이터셋에 맞춰 512×512 대신 768×768이나 그 이상으로 설정.
  4. Data Augmentation 활용:
    • 랜덤 크롭을 사용하는 대신, 회전, 확대/축소 등 다양한 데이터 증강 기법을 활용하여 의미 있는 학습 샘플을 추가 생성.
  5. Adaptive Patch Sampling:
    • 경계 영역이나 객체 중심부와 같은 중요한 영역을 자동으로 식별하고, 패치를 적응적으로 샘플링하도록 학습 과정에 반영.