[roboflow] Preprocess Images

FSA·2024년 10월 12일

keypoint_detection

목록 보기
2/19

이미지 전처리

모델을 위한 데이터를 준비하는 이미지 전처리 단계입니다.
전처리는 데이터셋이 표준 형식(예: 모든 이미지가 동일한 크기)을 따르도록 보장합니다. 이 단계는 모델을 훈련하기 전에 데이터셋이 일관성을 유지하도록 하는 데 필수적입니다.
전처리는 훈련 세트, 검증 세트, 테스트 세트의 모든 이미지에 적용됩니다(훈련 세트에만 적용되는 증강(Augmentation)과는 다릅니다).
Roboflow 플랫폼은 다음과 같은 전처리 옵션을 제공합니다:

  • Auto-Orient
  • Resize
  • Grayscale
  • Auto-Adjust Contrast
  • Isolate Objects
  • Static Crop
  • Tile
  • Modify Classes
  • Filter Null
  • Filter by Tag

각 옵션은 아래에서 설명합니다.

Auto-Orient

Auto-Orient는 이미지의 EXIF 데이터를 제거하여 이미지를 디스크에 저장된 방식과 동일하게 표시합니다.
EXIF 데이터는 특정 이미지의 방향을 결정합니다. (Mac의 Preview와 같은) 응용 프로그램은 이 데이터를 사용해 이미지를 특정 방향으로 표시하지만, 실제 디스크에 저장된 방향과 다를 수 있습니다.
이는 객체 탐지 모델의 성능을 조용히 망칠 수 있다는 논의가 있습니다.
Roboflow는 기본적으로 이 기능을 켜두고, 추론 중 이미지가 모델에 어떻게 전달되는지 확인하는 것을 권장합니다.
Auto-Orient 기능을 사용할지 여부에 대해 더 알고 싶다면, 블로그를 확인하세요.

Resize

Resize는 이미지 크기를 변경하고, 필요에 따라 원하는 차원으로 스케일을 조정합니다. 주석도 비율에 맞게 조정됩니다(아래 "fill"의 경우 제외).
현재, 다운사이징만 지원합니다. 사용 사례에 맞는 리사이즈 옵션에 대한 가이드를 제공합니다.

  • Stretch to: 이미지를 픽셀별로 원하는 크기로 늘립니다. 주석도 비율에 맞게 스케일 조정됩니다. 이미지는 왜곡되지만 원본 이미지 데이터는 손실되지 않습니다.
  • Fill (with center crop): 생성된 이미지는 원하는 출력 크기의 중앙을 자른 이미지입니다. 예를 들어, 원본 이미지가 2600x2080이고 리사이즈 옵션이 640x640으로 설정된 경우, 출력된 이미지는 원본 이미지의 중앙 640x640 부분이 됩니다. 종횡비는 유지되지만 원본 이미지 데이터는 일부 손실됩니다.
  • Fit within: 원본 이미지의 차원을 출력 이미지의 크기에 맞게 스케일 조정하되, 원본 이미지의 종횡비는 유지됩니다. 예를 들어, 원본 이미지가 2600x2080이고 리사이즈 옵션이 640x640으로 설정된 경우, 더 긴 차원(2600)은 640으로 스케일 조정되고, 두 번째 차원(2080)은 약 512 픽셀로 스케일됩니다. 이미지 종횡비와 원본 데이터는 유지되지만, 이미지는 정사각형이 아닙니다.
  • Fit (reflect edges) in: 원본 이미지의 차원을 출력 이미지의 크기에 맞게 스케일 조정하되, 원본 이미지의 종횡비를 유지하며, 새로 생성된 여백은 원본 이미지의 반사된 픽셀입니다. 예를 들어, 원본 이미지가 2600x2080이고 리사이즈 옵션이 416x416으로 설정된 경우, 더 긴 차원(2600)은 416으로 스케일 조정되고, 두 번째 차원(2080)은 약 335.48 픽셀로 스케일됩니다. 남은 픽셀 영역(416-335.48 또는 80.52 픽셀)은 원본 이미지의 반사된 픽셀로 채워집니다. 주석도 기본적으로 반사됩니다. 이미지는 정사각형이고, 패딩되며, 종횡비와 원본 데이터는 유지됩니다.
  • Fit (black edges) in: 원본 이미지의 차원을 출력 이미지의 크기에 맞게 스케일 조정하되, 원본 이미지의 종횡비를 유지하며, 새로 생성된 여백은 검은색으로 채워집니다. 예를 들어, 원본 이미지가 2600x2080이고 리사이즈 옵션이 416x416으로 설정된 경우, 더 긴 차원(2600)은 416으로 스케일 조정되고, 두 번째 차원(2080)은 약 335.48 픽셀로 스케일됩니다. 남은 픽셀 영역(416-335.48 또는 80.52 픽셀)은 검은색 픽셀로 채워집니다. 이미지는 정사각형이고, 검은색으로 패딩되며, 종횡비와 원본 데이터는 유지됩니다.
  • Fit (white edges) in: 원본 이미지의 차원을 출력 이미지의 크기에 맞게 스케일 조정하되, 원본 이미지의 종횡비를 유지하며, 새로 생성된 여백은 흰색으로 채워집니다. 예를 들어, 원본 이미지가 2600x2080이고 리사이즈 옵션이 416x416으로 설정된 경우, 더 긴 차원(2600)은 416으로 스케일 조정되고, 두 번째 차원(2080)은 약 335.48 픽셀로 스케일됩니다. 남은 픽셀 영역(416-335.48 또는 80.52 픽셀)은 흰색 픽셀로 채워집니다. 이미지는 정사각형이고, 흰색으로 패딩되며, 종횡비와 원본 데이터는 유지됩니다.

Grayscale

RGB 채널이 있는 이미지를 단일 그레이스케일 채널로 변환합니다. 이를 통해 메모리를 절약할 수 있습니다. 각 그레이스케일 픽셀의 값은 해당하는 빨간색, 녹색, 파란색 픽셀의 가중 합으로 계산됩니다: Y = 0.2125 R + 0.7154 G + 0.0721 B.
이 가중치는 CRT 인광체가 사용하며, 이는 빨간색, 녹색, 파란색을 인간이 인식하는 방식에 더 가깝게 표현합니다(Scikit-Image를 통해).

Auto-Adjust Contrast

대비가 낮은 이미지를 개선합니다. 대비를 전처리 단계로 사용할지 여부에 대해 연구한 바가 있습니다.

  • Contrast Stretching: 이미지가 2번째와 98번째 백분위수에 포함되는 모든 강도를 포함하도록 재조정됩니다. 더 알아보기.
  • Histogram Equalization: 이미지에서 가장 빈번한 강도 값을 분산시킵니다. 균등화된 이미지는 대략적으로 균일한 분포를 가지며, 모든 색상의 픽셀이 대략 동일하게 나타납니다. 더 알아보기.
  • Adaptive Equalization: Contrast Limited Adaptive Histogram Equalization(CLAHE). 이미지의 서로 다른 타일 영역에 대해 계산된 히스토그램을 사용하는 지역 대비 강화 알고리즘입니다. 이로 인해 대부분의 이미지보다 더 어둡거나 밝은 영역에서도 지역 세부 사항을 강화할 수 있습니다(Scikit-Image를 통해).

고급 전처리 기능

이 기능들은 Public Workspaces와 Starter Plan 및 Enterprise 계정에 대해 제공됩니다. Sandbox Workspaces(초기 개념 증명을 위해 비즈니스용으로 생성된)의 사용자는 고급 기능이 필요할 경우 영업팀에 문의하세요.

Isolate Objects

Isolate Objects 변환은 각 경계 상자를 개별 이미지로 잘라내고 추출합니다. 이 단계는 객체 탐지 데이터셋을 분류 데이터셋으로 변환합니다.
데이터셋 내 많은 클래스가 유사한 경우, 두 개의 모델을 순차적으로 사용하는 것이 일반적입니다. 첫 번째 모델(객체 탐지)은 객체를 찾고, 두 번째 모델(분류)은 그 객체가 무엇인지를 식별합니다. Isolate Objects 변환은 두 번째 모델 훈련에 필요한 데이터셋을 생성하는 데 유용합니다.

Static Crop

Static Crop 기능과 그 예시 출력.

Tile

타일링은 작은 객체를 감지하는 데 도움이 됩니다(특히 항공 이미지와 현미경 이미지를 다룰 때 유용합니다). 기본 설정은 2x2 타일링이지만, 필요에 따라 조정할 수 있습니다. 타일링은 전처리 파이프라인에서 리사이즈 이전에 수행됩니다.

타일링 도구와 "그리드"로 표시된 출력 미리보기

Modify Classes

특정 클래스를 생략하거나 클래스 이름을 재매핑(변경)하는 데 사용되는 전처리 도구입니다. 이러한 변경 사항은 데이터셋이 아닌 버전에만 영향을 미칩니다.
비디오 데모를 여기에서 확인하세요.

  • "Apple leaf" 클래스를 생략하는 예시
  • 3개의 클래스를 "Apple Leaf"로 재매핑(재라벨링)하는 예시

Filter Null

Null 필터 변환은 데이터셋 내

이미지 중 일부가 반드시 주석 처리되도록 요구할 수 있게 해줍니다. Modify Classes 도구를 적용한 후 Null 주석으로 표시된 이미지나 "주석 처리되지 않은(Unannotated)" 이미지만 Null 필터를 사용할 때 영향을 받습니다.
이 변환은 데이터셋의 대부분이 관심 있는 객체를 포함하지 않을 때 유용합니다.
비디오 데모를 여기에서 확인하세요.

참고: 이 도구를 사용하기 전에 데이터셋의 모든 이미지를 올바르게 주석 처리했는지, 적절한 이미지를 Null 주석으로 지정했는지, 불필요한 클래스를 생략했는지 확인하세요.

Missing 주석과 Null 주석의 차이점

"Missing Annotations"는 이미지가 주석 처리되지 않은 상태를 말합니다(이미지를 주석 처리하지 않으면 훈련된 데이터셋의 성능에 문제가 발생할 수 있으며, 훈련 실패로 이어질 수 있습니다).
Null 주석은 모델이 탐지하기를 원하는 객체가 해당 이미지에 아무것도 없을 때만 적용해야 합니다.

태그별 필터

태그별 필터 변환은 특정 태그가 적용된 이미지가 포함되거나 포함되지 않도록 버전을 필터링할 수 있게 해줍니다. 이 변환은 새로운 데이터 하위 집합으로 모델을 훈련하거나 훈련에서 불필요한 이미지를 제외하는 데 유용합니다.
각 태그에는 세 가지 옵션이 있습니다:

  • Require(필수): 필수 태그가 있는 이미지만 버전에 포함됩니다.
  • Exclude(제외): 제외 태그가 있는 이미지는 버전에 포함되지 않습니다.
  • Allow(허용): 허용 태그가 있는 이미지는 버전에 포함되지만, 제외 및 필수 규칙에 따라 조건부로 포함됩니다.

태그별 필터 전처리 단계의 스크린샷. 이 예에서는 반드시 포함 태그가 있는 이미지 중 포함하지 말아야 할 태그가 없는 이미지만 최종 버전에 포함됩니다.

profile
모든 의사 결정 과정을 지나칠 정도로 모두 기록하고, 나중에 스스로 피드백 하는 것

0개의 댓글