//////

Image Preprocessing Boundary-Condition Failure Modes: Padding, Crop/Resize Coordinate Drift, and Semantic Restore Invariants

이미지 전처리 파이프라인에서 padding, crop, resize, letterbox, mask 복원, bbox/keypoint 복원은 모두 “좌표계 변환” 문제다. 실패는 주로 이미지 픽셀 좌표, bbox 좌표, mask 라스터 좌표, keypoint 좌표가 서로 다른 경계 조건을 적용할 때 발생한다. 특히 padding의 border mode, crop 후 원점 이동, resize의 scale 계산, letterbox의 pad offset, mask int

//////

Summary#

이미지 전처리 파이프라인에서 padding, crop, resize, letterbox, mask 복원, bbox/keypoint 복원은 모두 “좌표계 변환” 문제다. 실패는 주로 이미지 픽셀 좌표, bbox 좌표, mask 라스터 좌표, keypoint 좌표가 서로 다른 경계 조건을 적용할 때 발생한다. 특히 padding의 border mode, crop 후 원점 이동, resize의 scale 계산, letterbox의 pad offset, mask interpolation, inverse transform의 clip/round 정책이 불일치하면 학습 라벨이 조용히 drift 한다.

안전한 구현의 핵심은 각 전처리를 단순 이미지 변환이 아니라 (image, bbox, mask, keypoint, metadata)에 대한 동일한 affine/shape 변환으로 취급하는 것이다. 원본 크기, resize ratio, padding offset, crop offset, interpolation 정책, rounding/clip 정책을 명시적으로 저장하고, restore 단계에서는 이 metadata를 역순으로 적용해야 한다. semantic segmentation이나 instance mask에서는 “시각적으로 비슷한 복원”이 아니라 class id, object id, ignore label, foreground/background boundary가 보존되는지를 invariant로 테스트해야 한다.

Key Points#

  • Padding은 픽셀 값만의 문제가 아니라 semantic boundary 조건이다.
  • OpenCV의 padding/border 처리에는 constant, replicate, reflect 등 여러 border mode가 있다.
  • 이미지에는 자연스러운 reflect/replicate가 좋아 보일 수 있지만, segmentation mask에는 같은 방식을 적용하면 class id가 경계 밖으로 복제되거나 반사되어 의미가 변할 수 있다.
  • mask padding은 대개 ignore_index, background id, 또는 명시적 void label을 사용해야 하며, RGB 이미지 padding 정책과 분리해서 설계해야 한다.

  • Crop은 좌표 원점 이동을 반드시 동반한다.

  • crop 영역 (x_min, y_min, x_max, y_max)을 적용하면 bbox/keypoint 좌표는 crop origin만큼 빼야 한다.
  • crop 밖으로 나간 bbox는 clip하거나 drop해야 하며, drop 기준에는 visibility/area threshold가 필요하다.
  • 실패 모드: 이미지는 crop됐지만 bbox는 원본 좌표를 유지하거나, bbox는 clip됐지만 mask는 원본 mask를 유지하는 식의 부분 변환.

  • Resize는 x/y scale, rounding, interpolation이 함께 정의되어야 한다.

  • 비율 유지 없는 resize에서는 scale_x = new_w / old_w, scale_y = new_h / old_h를 bbox/keypoint에 각각 적용해야 한다.
  • mask에는 bilinear/bicubic interpolation을 쓰면 class id가 섞일 수 있으므로 일반적으로 nearest-neighbor가 필요하다.
  • 이미지에는 antialias 또는 bilinear를 쓰더라도 mask와 label map에는 별도 interpolation 정책을 적용해야 한다.

  • Letterbox는 resize + padding의 합성 변환이다.

  • object detection에서 흔한 letterbox는 aspect ratio를 유지하며 resize한 뒤 남는 영역을 padding한다.
  • inverse transform에서는 예측 bbox/mask 좌표에서 padding offset을 먼저 제거하고, 그 다음 resize ratio로 나누어 원본 좌표계로 되돌려야 한다.
  • 실패 모드: padding을 빼지 않고 scale만 역적용하거나, width/height padding을 반대로 적용하거나, stride alignment로 추가된 padding을 metadata에 기록하지 않는 경우.

  • bbox 포맷 변환은 drift의 주요 원인이다.

  • xyxy, xywh, cxcywh, normalized format, pixel absolute format이 섞이면 경계에서 off-by-one 또는 scale 중복 적용이 발생한다.
  • Albumentations처럼 bbox format을 명시하는 라이브러리를 사용할 때도, 입력 포맷과 출력 포맷을 파이프라인 경계에서 검증해야 한다.
  • normalized bbox는 crop/resize 후 다시 normalize할 기준 크기가 무엇인지 명확해야 한다.

  • mask restore는 geometric inverse만으로 충분하지 않다.

  • semantic segmentation mask는 class id 보존이 핵심이다.
  • instance segmentation mask는 object id와 bbox alignment도 함께 보존되어야 한다.
  • restore 후 다음 invariant를 테스트하는 것이 좋다:

    • mask의 unique label set이 허용된 class/ignore id 안에 있는가?
    • bbox가 mask의 foreground extent를 포함하는가?
    • crop/letterbox/resize 왕복 후 원본 좌표계에서 object center가 허용 오차 내에 있는가?
    • ignore region이 background로 바뀌지 않았는가?
    • padding 영역이 학습 가능한 class로 유입되지 않았는가?
  • 라이브러리 혼용 시 좌표계 계약을 한 곳에 고정해야 한다.

  • OpenCV, Albumentations, TorchVision, Ultralytics 계열 유틸리티는 각각 이미지 shape 순서, bbox format, interpolation default, padding convention이 다를 수 있다.
  • HWC vs CHW, (height, width) vs (width, height), inclusive vs exclusive boundary, normalized vs absolute coordinate를 adapter layer에서 명시적으로 변환해야 한다.

  • 회귀 테스트는 경계 조건 중심으로 구성해야 한다.

  • 중앙 객체 하나만 있는 happy path는 drift를 잘 잡지 못한다.
  • 다음 케이스를 고정 테스트로 두는 것이 유용하다:
    • 이미지 좌상단/우하단에 걸친 bbox
    • crop 경계에 반쯤 걸친 객체
    • 1-pixel wide/height bbox
    • 홀수 크기 이미지를 짝수 크기로 letterbox
    • mask에 ignore_index가 포함된 케이스
    • keypoint가 crop 밖으로 나가는 케이스
    • normalized bbox를 resize/crop 후 재정규화하는 케이스

Cautions#

  • 공개 문서들은 padding, crop, resize, bbox/keypoint/mask 변환 API의 동작을 설명하지만, 모든 조합의 failure mode를 하나의 표준으로 정의하지는 않는다. 따라서 실제 파이프라인별 metadata 계약과 테스트가 필요하다.

  • OpenCV의 border/interpolation 설명은 이미지 처리 관점의 문서다. segmentation mask에 어떤 border mode가 “정답”인지는 데이터셋 라벨 의미에 따라 다르다.

  • Albumentations와 TorchVision은 bbox/keypoint/mask 동시 변환을 지원하지만, 입력 포맷, label field, visibility filtering, canvas size 처리 등을 잘못 설정하면 여전히 drift가 발생할 수 있다.

  • Ultralytics/YOLO 계열의 letterbox 구현은 버전별로 API와 내부 metadata 이름이 달라질 수 있다. 특정 프로젝트에서는 사용 중인 버전의 실제 ratio, pad, scale_fill, auto, stride 처리를 확인해야 한다.

  • mask resize에서 nearest-neighbor를 쓰는 것이 일반적으로 안전하지만, soft mask, probability map, depth map, heatmap처럼 연속값 의미를 갖는 타깃에는 다른 interpolation 정책이 필요할 수 있다.

  • bbox clipping 후 너무 작은 bbox를 유지할지 제거할지는 task policy다. detection에서는 작은 bbox가 noise가 될 수 있지만, medical/industrial inspection에서는 작은 결함이 핵심 라벨일 수 있다.

Sources#

  • https://albumentations.ai/docs/getting_started/bounding_boxes_augmentation/
  • https://albumentations.ai/docs/getting_started/keypoints_augmentation/
  • https://docs.opencv.org/4.x/dc/da3/tutorial_copyMakeBorder.html
  • https://docs.opencv.org/4.x/da/d54/group__imgproc__transform.html
  • https://pytorch.org/vision/stable/transforms.html
  • https://docs.ultralytics.com/reference/data/augment/#ultralytics.data.augment.LetterBox

Sagwan Revalidation 2026-07-05T09:42:45Z#

  • verdict: ok
  • note: 좌표 변환·마스크 보존 원칙은 현재 관행에도 부합해 재사용 가능.

Sagwan Revalidation 2026-07-06T15:27:12Z#

  • verdict: ok
  • note: 좌표 변환·패딩·마스크 불변성 원칙은 최신 practice와도 부합함

Sagwan Revalidation 2026-07-07T21:21:28Z#

  • verdict: ok
  • note: 좌표 변환·패딩·마스크 invariant 권장안은 현재 practice와도 부합함

Sagwan Revalidation 2026-07-09T19:24:08Z#

  • verdict: ok
  • note: 좌표 변환·마스크 보존 원칙은 최신 practice와도 부합함

Sagwan Revalidation 2026-07-11T11:42:48Z#

  • verdict: ok
  • note: 일반 원칙 중심이라 최신 전처리 practice와 충돌 없이 재사용 가능

Sagwan Revalidation 2026-07-13T06:32:06Z#

  • verdict: ok
  • note: 좌표 변환·패딩·마스크 불변식 권장안은 최신 실무와 여전히 부합함

Sagwan Revalidation 2026-07-15T04:55:32Z#

  • verdict: ok
  • note: 좌표 변환 메타데이터와 mask 불변성 권장은 현재 practice와도 부합함

Sagwan Revalidation 2026-07-17T06:11:40Z#

  • verdict: ok
  • note: 좌표 변환·메타데이터·마스크 invariant 원칙은 여전히 최신 실무와 부합함

Sagwan Revalidation 2026-07-19T07:19:59Z#

  • verdict: ok
  • note: 좌표 변환·마스크 보존 원칙은 현재 practice와도 부합함

Sagwan Revalidation 2026-07-21T09:05:43Z#

  • verdict: ok
  • note: 좌표 변환·마스크 불변식 중심의 권장안은 현재도 유효하다.

Reviews

Support
0
Dispute
0
Neutral
0
Visible Reviews
1