Object Detection의 수학적 뼈대 — 왜 출력이 집합인가
가변 크기 집합 출력이라는 정의 하나가 IoU loss 진화, mAP 계산 방식, NMS 알고리즘, 그리고 DETR의 set prediction까지 모두 도출하는 과정을 추적한다.
- 01 Object Detection의 수학적 뼈대 — 왜 출력이 집합인가
- 02 R-CNN에서 Mask R-CNN까지 — 두 단계 검출기의 진화
- 03 One-Stage Detector는 어떻게 두 단계를 하나로 녹였나
- 04 Anchor-Free Detection은 무엇을 해방시켰는가
- 05 DETR은 왜 NMS 없이 작동하는가
- 06 COCO mAP 너머 — Detection Benchmark의 한계와 진화
- 07 Video에서 Foundation까지 — 객체 인식의 확장 경계
Object detection의 모든 설계 결정 — anchor 배치, NMS 파라미터, DETR의 Hungarian matching — 은 하나의 출발점에서 나온다. 출력이 가변 크기 집합이라는 사실. 이 정의 하나가 어떻게 loss 함수의 진화, 평가 지표의 구조, 중복 억제 알고리즘, 그리고 NMS를 아예 없애려는 시도까지 전부 도출하는가?
출력이 집합이라는 것의 의미
분류는 이미지 한 장을 라벨 하나로 압축한다. Segmentation은 픽셀 수만큼 고정된 라벨 맵을 출력한다. Detection은 다르다. 이미지마다 사물의 수 이 다르고, 모델의 예측 수 도 다르다.
이 출력은 순서가 없는 집합이다. “첫 번째 예측”과 “두 번째 예측”의 구분이 의미가 없다. 그리고 은 모델이 결정한다. 이 두 가지 성질 — 순서 무관성과 가변 크기 — 이 이후의 모든 문제를 만든다.
Bounding box 표기법도 이 맥락에서 정리된다. Center-size form 와 corner form 는 서로 정보 손실 없이 변환된다. 변환 의 Jacobian 행렬식은 1이므로 bijective하다. 그러나 두 표기법은 목적이 다르다 — center-size는 regression target으로 자연스럽고(YOLO), corner form은 IoU 계산에 자연스럽다(TorchVision, DETR).
IoU loss의 진화 — 집합이 만드는 proxy gap
집합 출력의 품질은 IoU로 측정한다.
그런데 학습 loss로 L1이나 L2를 쓰면 평가-학습 불일치가 생긴다. 좌표 오차가 작아도 IoU가 낮을 수 있고, 반대도 가능하다. IoU를 직접 loss로 쓰면 어떻게 될까?
두 박스가 겹치지 않으면() 모든 disjoint pair에서 이고, 따라서 거의 모든 disjoint 영역에서 이다.
정의에 의해 . 작은 perturbation 이 여전히 disjoint하면 IoU는 0으로 유지. 따라서 거의 모든 disjoint 영역에서 gradient가 0.
학습 초기에 예측 박스와 GT가 겹치지 않는 경우는 흔하다. GIoU(Rezatofighi 2019)는 이를 해결하기 위해 두 박스를 모두 포함하는 최소 enclosing box 를 도입한다.
이면 로, 와 의 상대 위치에 smooth하게 의존한다. Disjoint 영역에서도 gradient가 존재한다.
그러나 GIoU에도 한계가 있다. 이면 이므로 GIoU = IoU다 — 추가 신호가 없다. DIoU는 center distance penalty를 추가한다.
CIoU는 여기에 aspect ratio term까지 추가한다. 같은 IoU를 가진 tall 박스와 wide 박스를 구분하기 위해서다.
IoU → GIoU → DIoU → CIoU 순으로 더 많은 기하학적 정보를 loss에 담는다. 대신 구현 복잡도와 수치 안정성 문제(CIoU의 arctan, aspect ratio term의 stop-gradient)가 추가된다. YOLOv8의 default는 CIoU지만 mAP 개선은 +0.3~0.5 수준이다. Dataset 분포에 따라 ablation이 필요하다.
mAP — 집합 평가의 표준화
집합 출력을 어떻게 평가할 것인가? confidence threshold 를 변화시키면 precision과 recall이 trade-off를 이룬다. 이 curve 아래 면적이 AP다.
raw PR curve는 monotone-decreasing하지 않다. FP 직후 TP가 오면 precision이 잠깐 올라간다. Envelope 로 보정한 후 적분하는 이유다.
PASCAL VOC 2007 방식(11-point)과 COCO 방식(all-point)은 같은 curve를 다르게 적분한다. 11-point는 recall ∈ {0, 0.1, ..., 1.0} 11개 점의 평균이고, all-point는 모든 recall 변화점에서 step integral을 수행한다. 오래된 논문이 11-point AP를 보고하면 COCO all-point와 직접 비교할 수 없다.
COCO의 mAP@[.5:.95]는 IoU threshold 10개({0.50, 0.55, ..., 0.95})의 평균이다.
mAP@.5 = 0.7이지만 mAP@[.5:.95] = 0.3인 모델은 box localization이 부정확한 것이다 — class는 맞추지만 박스가 GT와 IoU 0.5~0.7 수준으로 대충 겹친다. 이 두 숫자의 gap이 localization 품질의 직접적인 지표다.
NMS — 집합 출력이 만드는 중복 문제
같은 object에 대해 두 prediction , 가 있고 이면, 정의에 의해 둘 중 하나는 반드시 FP가 된다.
GT box 가 하나뿐이고 모두 와 라 하자. TP/FP 매칭 규칙은 GT당 하나의 prediction만 TP로 인정한다. confidence 순으로 정렬 후 첫 번째만 매칭되고, 두 번째는 자동으로 FP가 된다.
Anchor-based detector는 dense prediction을 낸다. 같은 사람에 대해 인접한 여러 grid cell이 응답한다. 이는 학습의 robustness를 높이지만, 평가 시에는 위 정리에 의해 mAP를 깎는다. Greedy NMS는 이를 해결한다.
B ← ∅
sort D by score desc
while D ≠ ∅:
m ← argmax score
B ← B ∪ {m}
remove j if IoU(b_m, b_j) ≥ τ
시간복잡도는 이다. 실전에서 이면 연산이지만, TorchVision은 CUDA kernel로 가속한다.
Greedy NMS의 한계는 밀집 장면이다. 두 사람이 가까이 있어 IoU가 0.6이고 이면, 한 사람을 FN으로 만든다. Soft-NMS(Bodla 2017)는 hard remove 대신 score decay를 적용한다.
Gaussian decay는 모든 IoU에서 score를 비증가(non-increasing)하게 만든다. 가까운 박스를 제거하지 않고 score를 낮추므로, final threshold에서 자연스럽게 정리된다. COCO에서 를 사용하면 +1.7 mAP가 보고된다.
DETR은 이 문제를 training time에 해결한다. Hungarian matching으로 각 GT에 정확히 하나의 query를 배정해 중복 자체를 만들지 않는다. NMS가 필요 없다. 대신 학습이 느리고(500 epochs), fixed query 수가 small object recall을 제한한다.
정리
- Detection 출력이 가변 크기 집합이라는 정의 하나가 IoU loss의 필요성, mAP의 적분 방식, NMS, set prediction loss를 전부 도출한다.
- IoU loss 진화는 disjoint plateau → 포함 관계 무감도 → aspect ratio 무감도를 차례로 해결한 과정이다.
- mAP@.5와 mAP@[.5:.95]의 gap은 localization 품질의 직접 지표다. 두 숫자를 같이 봐야 한다.
- NMS는 dense prediction의 사후 처리다. 밀집 장면에서 Soft-NMS가 낫고, DETR 계열은 아예 학습으로 우회한다.
다음 글에서는 이 뼈대 위에서 R-CNN 계열이 어떻게 two-stage detection을 구성하는지, 그리고 region proposal의 수학적 의미를 추적한다.