[roboflow] What is Image Preprocessing and Augmentation?

FSA·2024년 10월 13일

keypoint_detection

목록 보기
10/19

1. https://blog.roboflow.com/why-preprocess-augment/

어떤 이미지 전처리 단계를 사용해야 할까?

  • 모델 성능을 높이기 위해 가장 유용한 전처리 단계를 식별하려면
    • 문제에 대한 이해, 수집된 데이터, 그리고 생산 환경에 대한 확실한 이해가 필요합니다.
  • 한 상황에서 잘 작동하는 것이 다른 상황에서는 적절하지 않을 수 있습니다. 이는 이미지 증강에서도 마찬가지입니다.
  • 따라서 각 기술이 왜 가치 있는지 고려함으로써 정보에 기반한 결정을 내릴 수 있습니다.
  • 이 글에서는 고려해야 할 사항을 제시하고 일반적으로 최선으로 여겨지는 권장 사항을 제공하겠습니다.
    • 다시 말하지만, "일반적으로 최선"이라는 팁조차도 모든 경우에 맞는 것은 아닐 수 있습니다.

리사이즈(Resize)

  • 이미지의 크기를 변경하는 것은 간단해 보이지만, 고려해야 할 사항이 있습니다.
  • 많은 모델 아키텍처는 정사각형 입력 이미지를 요구하지만, 정사각형 이미지를 완벽하게 캡처하는 장치는 거의 없습니다.
  • 이미지를 정사각형으로 변경하려면 그 차원을 늘려 정사각형에 맞추거나, 비율을 유지하면서 새로 생성된 "빈 공간"을 새로운 픽셀로 채워야 합니다.
  • 게다가 입력 이미지의 크기가 다양할 수 있으며, 일부는 원하는 입력 크기보다 작을 수 있습니다.
  • 최선의 팁:
    • 비율을 유지하는 것이 항상 필요하지는 않으며, 빈 픽셀을 이미지 내용과 반사된 픽셀로 채우는 것이 종종 최선이며, 큰 이미지를 작은 이미지로 다운샘플링하는 것이 가장 안전합니다.

방향(Orientation)

  • 이미지가 캡처될 때, 그 이미지가 디스크에 저장된 방식에 따라 입력 이미지를 어떻게 표시할지 알려주는 메타데이터를 포함하고 있습니다.
  • 그 메타데이터를 EXIF 방향이라고 하며, EXIF 데이터를 일관되게 처리하지 못하는 것은 오랫동안 개발자들에게 골칫거리였습니다.
  • 이 문제는 모델에도 적용됩니다. 우리가 이미지를 어떻게 인식했는지에 대한 주석 상자를 만들었는데, 모델이 그 이미지를 다른 방향으로 "본다면", 우리는 완전히 잘못된 방식으로 모델을 훈련하고 있는 것입니다!
  • 최선의 팁: EXIF 방향을 이미지에서 제거하고 모든 픽셀이 동일한 방식으로 정렬되었는지 확인하세요.


언제 이미지를 자동 방향 조정(Auto-Orient)해야 할까요?

  • 짧은 답변: 거의 항상 해야 합니다.
  • 이미지가 캡처될 때, 픽셀이 디스크에 배열된 방식에 따라 어떻게 표시해야 하는지 결정하는 메타데이터를 포함하고 있습니다.
  • 이 지시사항은 EXIF 방향 필드에 저장되며, 카메라가 이미지 캡처 시 인코딩 속도를 높여 센서에서 데이터를 효율적으로 샘플링할 수 있게 해줍니다.
  • 이 말은 대부분의 카메라가 픽셀을 동일하게 저장한다는 것을 의미합니다. 즉, 카메라가 가로 모드나 세로 모드로 설정되었든 상관없이 픽셀은 동일하게 저장되고, 이미지 뷰어에게 픽셀을 그대로 표시할지, 아니면 90도 또는 180도로 회전시켜 표시할지 신호를 보내기만 하면 됩니다.

  • 불행히도, 이미지를 표시하는 애플리케이션이 이러한 메타데이터를 인식하지 못하고 EXIF 방향을 무시한 채 이미지를 단순히 표시하게 되면 문제가 발생할 수 있습니다.

  • 이 문제는 실수하기 쉬운 부분입니다(특히 직접 이미지 파이프라인을 프로그래밍할 때).
  • 사실, 이는 컴퓨터 비전 프로젝트에서 가장 흔히 발생하는 버그 중 하나입니다.
  • 이미지의 일부가 디스크에 x,y로 저장되고, 일부가 y,x로 저장되어 있으면, 당신의 모델에 잘못된 정보를 제공하게 될 수 있습니다. 심지어 그 사실조차 모른 채 말이죠.

  • 다행히도, Roboflow는 기본적으로 이 문제를 해결해 줍니다. 단지 전처리 설정에서 "Auto-Orient"를 활성화하기만 하면 됩니다.

자동 방향 조정을 하지 말아야 할 때

  • 그렇다면 왜 Auto-Orient를 끌 수 있는 옵션을 제공하는 걸까요? 사실 아주 특정한 상황에서는 이를 속도 최적화에 사용할 수 있습니다.

  • 예를 들어, 특정 장치에서 실행되는 모바일 앱을 만들고 있으며, 모든 이미지가 동일한 EXIF 방향을 가질 것임을 알고 있을 때가 그 예입니다. 런타임에서 픽셀 값을 회전시키는 것을 피하기 위해, 같은 좌표계를 유지하는 것이 좋을 수 있습니다. 이때, 동일한 유형의 입력으로 모델을 훈련시키고(주석 도구가 이를 올바르게 처리하는 경우) 문제가 발생하지 않을 것입니다.


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

0개의 댓글