학습 파이프라인에 따라 입력데이터가 Normalization 또는 Standardization 해서 들어감.
특히 헤일로 양자화하는 과정에서 해당 모델이 어떤 입력데이터 정규화를 사용했는지 확인하고 알맞게 양자화 해야함(양자화 및 컴파일 과정에서 네트워크 내부에서 정규화 작업을 하게 만들기 위해).
Label File
어노테이션(라벨링)된 파일은 대부분 PNG 포맷.
PIL로 PNG 포맷을 저장할 때, 인덱스(클래스넘버)에 따라 색상 값(Pallete)을 정해주는 팔레트 모드로 저장할 수 있음.
팔레트 모드로 저장된 PNG 파일을 PIL Image로 읽어오면 픽셀 값은 인덱스로 구성되므로 그 자체가 라벨링 파일로 사용 가능함.
Crop Size
시멘틱 세그멘테이션에서 Crop Size란?
시멘틱 세그멘테이션에서 crop_size란 입력 이미지에서 학습을 위해 잘라내는 패치(patch)의 크기를 의미함. 시멘틱 세그멘테이션 모델은 일반적으로 고해상도 이미지를 입력으로 받지만, 하드웨어 메모리 제약과 모델 효율성 문제로 인해 이미지를 일정 크기로 잘라서 학습을 수행함.
목적:
GPU 메모리 사용량을 제한하고, 고해상도 데이터를 다룰 수 있게 하기 위함.
작은 크기의 패치로 학습하면 지역적인 세부 정보(경계, 질감 등)를 더 잘 학습할 수 있음.
작동 방식:
원본 이미지에서 crop_size 크기로 패치를 랜덤하게 잘라서 네트워크에 입력으로 제공.
잘라낸 패치 내에서만 손실(loss)을 계산.
Crop Size의 선택이 중요한 이유
모델의 컨텍스트 학습 능력에 영향:
너무 작은 crop_size는 이미지 내 넓은 문맥(context) 정보를 잃을 수 있어, 물체 전체의 의미를 이해하기 어렵게 만든다.
너무 큰 crop_size는 메모리 소모량이 커지고, 작은 물체에 대한 세부 정보를 학습하는 데 어려움을 겪을 수 있다.
GPU 메모리 사용량:
crop_size가 커질수록 네트워크 입력 크기가 커지므로 메모리 사용량이 증가.
하드웨어 성능에 따라 적절한 크기를 설정해야 함.
데이터셋의 해상도:
데이터셋의 이미지 크기가 crop_size보다 작을 경우, 패딩(padding)을 추가해야 함.
따라서 데이터셋의 평균 해상도에 적합한 값을 설정해야 함.
Crop Size 설정의 일반적인 기준
데이터셋의 해상도:
데이터셋에 따라 crop_size를 조정해야 함.
예: Cityscapes 데이터셋의 이미지 크기는 1024×2048이므로, 일반적으로 crop_size는 512×512 또는 768×768로 설정.
Pascal VOC 데이터셋의 경우, 이미지 크기가 더 작으므로 321×321 또는 512×512로 설정.
문맥 정보와 세부 정보 균형:
물체의 크기와 경계가 중요한 데이터셋에서는 상대적으로 큰 crop_size가 적합.
반면, 작은 물체가 많거나 지역적인 세부 정보가 중요한 경우에는 작은 crop_size가 유리.
잘못된 Crop Size가 문제가 되는 경우
작은 물체가 많은 데이터셋:
예: Pascal VOC, COCO 데이터셋에서 작은 물체가 주로 등장하는 경우, crop_size로 인해 물체가 패치 내에 포함되지 않을 확률이 높아진다. (의미없는 패치)
경계 정보가 중요한 작업:
예: 자율 주행에서 도로 경계선, 보행자 윤곽 등을 정확히 분류해야 하는 경우, 경계 정보가 없는 패치는 모델 성능을 저하시킬 수 있다.
클래스 불균형이 심한 데이터셋:
예: 특정 클래스(예: 하늘, 배경)가 이미지의 대부분을 차지하는 데이터셋에서는, 잘못 설정된 crop_size가 모델 학습을 더욱 편향되게 만들 수 있다. (학습 데이터의 불균형)
해결 방법
Random Crop 대신 Smart Crop 활용:
crop_size로 랜덤하게 패치를 잘라내는 대신, 의미 있는 객체가 포함된 패치를 선택적으로 샘플링하는 방법을 사용할 수 있습니다.
예: 패치 내에 특정 클래스의 픽셀이 일정 비율 이상 포함되도록 설정.
Oversampling Underrepresented Classes:
희귀 클래스(또는 의미 있는 패치)가 포함된 이미지를 우선적으로 샘플링하여 학습 데이터의 불균형을 완화.
패치 크기 증가 (crop_size 확장):
충분히 큰 crop_size를 사용하면 패치 내에 문맥 정보와 경계 정보가 포함될 가능성이 높아집니다.
예: 데이터셋에 맞춰 512×512 대신 768×768이나 그 이상으로 설정.
Data Augmentation 활용:
랜덤 크롭을 사용하는 대신, 회전, 확대/축소 등 다양한 데이터 증강 기법을 활용하여 의미 있는 학습 샘플을 추가 생성.
Adaptive Patch Sampling:
경계 영역이나 객체 중심부와 같은 중요한 영역을 자동으로 식별하고, 패치를 적응적으로 샘플링하도록 학습 과정에 반영.