이미지 전처리

모델을 준비하기 위한 이미지 전처리 단계입니다.

전처리는 데이터셋이 표준 형식(예: 모든 이미지가 동일한 크기)으로 되어 있는지 확인합니다. 이 단계는 모델을 학습하기 전에 데이터셋의 일관성을 보장하는 데 필수적입니다.

전처리는 Train, Valid, Test 세트의 모든 이미지에 적용됩니다 ( Augmentations는 Train 세트에만 적용되는 것과 달리).

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와 같은) 애플리케이션은 이 데이터를 사용하여 디스크에 저장된 방향과 다르더라도 이미지를 특정 방향으로 표시합니다. 자세한 내용은 Hacker News 첫 페이지 토론을 참고하세요. 이로 인해 객체 감지 모델이 조용히 망가질 수 있습니다.

  • Roboflow는 기본적으로 이 옵션을 켜 두고, 추론 시 이미지가 모델에 어떻게 입력되는지 확인할 것을 권장합니다.

  • 이미지를 자동 방향 조정해야 하는지에 대해 더 알고 싶다면, 저희 블로그를 참고하세요.

Resize

Resize는 이미지의 크기와, 선택적으로 원하는 크기로 비율을 조정합니다. 주석도 비례적으로 조정됩니다(아래의 “fill” 경우 제외).

현재는 축소만 지원합니다. 사용 사례에 적합한 resize 옵션에 대한 가이드를 제공합니다..

  • Stretch to: 이미지를 원하는 픽셀 단위 크기로 늘립니다. 주석도 비례적으로 조정됩니다. 이미지는 정사각형이지만 왜곡되며, 원본 이미지 데이터는 손실되지 않습니다.

  • Fill (with center crop) in: 생성된 이미지는 원하는 출력 크기의 중앙을 자른 것입니다. 예를 들어, 원본 이미지가 2600x2080이고 resize 옵션이 640x640이면, 출력 이미지는 원본의 중앙 640x640입니다. 종횡비는 유지되지만, 원본 이미지 데이터 일부가 손실됩니다.

  • Fit within: 원본 이미지의 크기를 출력 이미지의 크기에 맞게 조정하면서 원본의 종횡비를 유지합니다. 예를 들어, 원본이 2600x2080이고 resize 옵션이 640x640이면, 긴 쪽(2600)은 640으로, 짧은 쪽(2080)은 약 512 픽셀로 조정됩니다. 이미지 종횡비와 원본 데이터는 유지되지만, 정사각형이 아닙니다.

  • Fit (reflect edges) in: 원본 이미지의 크기를 출력 이미지의 크기에 맞게 조정하면서 종횡비를 유지하고, 새로 생기는 패딩은 원본 이미지를 반사하여 채웁니다. 예를 들어, 원본이 2600x2080이고 resize 옵션이 416x416이면, 긴 쪽(2600)은 416으로, 짧은 쪽(2080)은 약 335.48 픽셀로 조정됩니다. 남은 픽셀 영역(416-335.48, 즉 80.52 픽셀)은 원본 이미지를 반사하여 채웁니다. Roboflow는 주석도 기본적으로 반사합니다. 이미지는 정사각형이고, 패딩이 있으며, 종횡비와 원본 데이터가 유지됩니다.

  • Fit (black edges) in: 원본 이미지의 크기를 출력 이미지의 크기에 맞게 조정하면서 종횡비를 유지하고, 새로 생기는 패딩은 검은색 영역으로 채웁니다. 예를 들어, 원본이 2600x2080이고 resize 옵션이 416x416이면, 긴 쪽(2600)은 416으로, 짧은 쪽(2080)은 약 335.48 픽셀로 조정됩니다. 남은 픽셀 영역(416-335.48, 즉 80.52 픽셀)은 검은색 픽셀로 채워집니다. 이미지는 정사각형이고, 검은색 패딩이 있으며, 종횡비와 원본 데이터가 유지됩니다.

  • Fit (white edges) in: 원본 이미지의 크기를 출력 이미지의 크기에 맞게 조정하면서 종횡비를 유지하고, 새로 생기는 패딩은 흰색 영역으로 채웁니다. 예를 들어, 원본이 2600x2080이고 resize 옵션이 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.)

Advanced Preprocessing Features

Isolate Objects

Isolate Objects 변환은 각 바운딩 박스를 개별 이미지로 자르고 추출합니다. 이 단계는 Object Detection 데이터셋을 Classification 데이터셋으로 변환합니다.

데이터셋 내에 유사한 클래스가 많은 경우, 두 개의 모델을 연속적으로 사용하는 것이 일반적입니다. 첫 번째 모델(Object Detection)은 객체를 찾고, 두 번째 모델(Classification)은 객체가 무엇인지 식별합니다. Isolate Objects 변환은 두 번째 모델 학습에 필요한 데이터셋을 만드는 데 유용합니다.

Static Crop

Static crop 기능과 예시 출력입니다.

Tile

Tiling은 작은 객체를 감지할 때(특히 항공 이미지나 현미경 이미지 등) 도움이 될 수 있습니다. 기본 설정은 2x2 타일링이지만, 필요에 따라 조정할 수 있습니다. 타일링은 resize 전처리 파이프라인에서 전에 수행됩니다.

타일링 도구와 출력의 미리보기(“grid”로 표시됨)입니다.

Modify Classes

새 버전의 데이터셋을 생성할 때 특정 클래스를 생략하거나 클래스 이름을 재매핑(이름 변경)하는 데 사용되는 전처리 도구입니다. 이러한 변경 사항은 생성한 버전에만 적용되며, 기본 데이터셋에는 영향을 주지 않습니다.

"Apple leaf" 클래스를 생략하는 예시입니다.
클래스 "scratches"를 "scratch"로 재매핑하는 예시입니다.

Filter Null

Filter Null 변환을 사용하면 데이터셋 내 이미지 중 일부가 반드시 주석되어 있어야 하도록 설정할 수 있습니다. Modify Classes 도구를 적용한 후 null annotation 또는 "unannotated"로 표시된 이미지만 Filter Null 사용 시 영향을 받습니다.

이 변환은 데이터셋의 많은 부분에 관심 객체가 포함되어 있지 않은 경우에 유용합니다.

Filter Null 전처리 단계를 적용하는 예시입니다.

Missing과 Null 주석의 차이점

"Missing Annotations"는 이미지가 주석되지 않았을 때 발생합니다(이미지를 주석 없이 두면 학습 데이터셋의 성능에 문제가 생기고, 학습 실패로 이어질 수 있습니다). Null 주석은 아무것도 모델이 감지하길 원하는 객체가 이미지 내에 없을 때만 적용해야 합니다.

Filter by Tag

Filter by Tag 변환을 사용하면, 어떤 Tags 가 적용되었는지에 따라 버전에 포함할 이미지와 포함하지 않을 이미지를 필터링할 수 있습니다. 이 변환은 새로운 데이터 하위 집합으로 모델을 학습하거나 원하지 않는 이미지를 학습에서 제외할 때 유용합니다.

각 Tag마다 세 가지 옵션이 있습니다:

  • Require: Required 태그가 있는 이미지만 버전에 포함됩니다.

  • Exclude: Excluded 태그가 있는 이미지는 버전에 포함되지 않습니다.

  • Allow: Allowed 태그가 있는 이미지는 Exclude 및 Require 규칙에 따라 조건부로 버전에 포함됩니다.

이 예시에서는, 결과 Version에는 do-not-include 태그가 없는 이미지만 포함됩니다.

Last updated

Was this helpful?