Object Detection 개인적으로 헷갈리기 쉬운 내용들



Detector 구조의 구성 요소

  • CornerNet
    • Anchor-free 방식의 one-stage detector
    • RPN을 사용하지 않음
    • [Input → Backbone → Dense prediction] 구조
  • Fast R-CNN
    • RPN이 없음 (selective search 사용)
    • Neck 구조가 없음
    • [Input → Backbone → Sparse prediction] 구조
  • YOLO
    • One-stage detector로 RPN 없음
    • [Input → Backbone → Dense prediction] 구조
    • Sparse prediction 대신 Dense prediction 사용
  • Faster R-CNN + FPN
    • Input: 입력 이미지
    • Backbone: 특징 추출 (ResNet 등)
    • Neck: FPN (Feature Pyramid Network)
    • RPN: Region Proposal Network
    • Sparse prediction: RoI Head에서의 예측
    • 문제에서 제시한 5가지 구성요소를 모두 포함
  • RetinaNet
    • One-stage detector로 RPN 없음
    • [Input → Backbone → Neck → Dense prediction] 구조
    • Focal loss를 사용하는 것이 특징





YOLO v1 loss

  1. 첫 번째 부분
    • (x,y) 좌표와 (w,h) 크기에 대한 loss
    • 박스의 위치와 크기를 예측하는 localization loss
  2. 두 번째 부분
    • 객체가 있을 확률(C)에 대한 loss
    • confidence score를 예측하는 confidence loss
  3. 세 번째 부분
    • 클래스 확률(p)에 대한 loss
    • 객체의 클래스를 분류하는 classification loss

localization / confidence / classification

  • 수식의 순서와 정확히 일치
  • 각 loss의 역할을 정확히 반영





Object detection evaluation metric

  • FLOPS (Floating Point Operations Per Second)
    → Object detection에서 사용되는 metric
    • 모델의 연산량을 측정
    • 모델의 효율성 평가
    • 실제 구현 시 중요한 고려사항

  • FPS (Frames Per Second)
    → Object detection에서 사용되는 metric
    • 실시간 처리 속도 측정
    • 초당 처리할 수 있는 프레임 수
    • 실시간 응용에서 중요한 지표

  • FID (Fréchet Inception Distance)
    → Object detection metric이 아님
    • GAN 모델의 성능 평가에 사용되는 지표
    • 생성된 이미지의 품질 평가
    • Object detection과는 관련이 없음

  • mIoU (mean Intersection over Union)
    → Object detection에서 사용되는 metric
    • 예측 박스와 실제 박스의 겹침 정도 측정
    • 위치 예측의 정확도 평가
    • Segmentation에서도 사용됨

  • mAP (mean Average Precision)
    → Object detection에서 사용되는 metric임
    • 검출 정확도를 종합적으로 평가
    • PR 커브의 면적 계산
    • 가장 널리 사용되는 평가 지표





Precision & Recall

  • 먼저 각 요소를 파악
    • Ground truth (실제 고양이): 4마리
    • Positive prediction (빨간 박스): 4개
    • True Positive (TP): (실제 고양이를 맞게 예측)
    • False Positive (FP): (고양이가 아닌 것을 고양이로 예측)
    • False Negative (FN): (놓친 고양이)
  • 총 8개를 검출하고 그 중 3개가 옳은 검출이므로, precision = 3/8 = 0.375
  • 총 4개의 GT가 있고 그 중 3개를 검출했으므로, recall = 3/4 = 0.75





Corner Pooling

CornerNet에서는 corner를 결정하기 위해 corner pooling이라는 방법을 사용한다. 그림과 같은 두 개의 feature maps의 일부가 주어지고 각각에 대해 수직, 수평방향으로 pooling을 할 때, corner pooling의 output map에서 (a), (b), (c), (d) 에 들어갈 숫자의 순서로 옳은 것

Corner pooling은 각 feature map에 대해 horizontal pooling, vertical pooling을 수행한 후 element-wise summation을 수행한다.





DarkNet Output

YOLO v1에서는 입력 이미지를 SxS의 grid cell로 분할하며, 각 cell마다 B개의 bounding box와 confidence score, 그리고 각 cell마다 C개의 class에 대한 conditional class probabilities를 예측한다. Input image의 shape은 288x288x3이며 S=12, B=3, C=100일 경우, YOLO v1 DarkNet의 최종 output으로 나오는 feature map의 shape (W, H, C)이다. 이 때 W+H+C의 값으로 옳은 것

주어진 조건

  • Input image: 288x288x3
  • Grid cell: SxS (S=12)
  • 각 cell당 B개의 bounding box와 confidence score (B=3)
  • 각 cell당 C개의 클래스에 대한 확률 (C=100)

Output shape 계산

  1. 각 Grid cell당 예측해야 하는 값

    • B개의 bounding box 좌표 (x,y,w,h): 4×B
    • B개의 confidence score: 1×B
    • C개의 클래스 확률: C
  2. 전체 계산

    • Cell당 필요한 값 = (4+1)×B + C
    • = 5×3 + 100
    • = 15 + 100
    • = 115
  3. 최종 output shape

    • W = H = S = 12 (grid size)
    • C = 115 (각 cell당 예측값)
    • 따라서 12×12×115 = 139

YOLO v1은 각 grid cell별로 B개의 bounding box(4개의 좌표)와 confidence score, 그리고 C개의 conditional class probabilities를 예측한다. 즉, 각 cell마다 B5+C 개의 예측값이 나오기 때문에 DarkNet의 최종 output shape은 (S, S, (B5+C))이다. 따라서 문제에서 주어진 것처럼 S=12, B=3, C=100일 경우 output shape은 (W, H, C) = (12, 12, (3*5+100)) = (12, 12, 115)이며, W+H+C = 12+12+115 = 139이다





Computing AP

PR Curve를 그리기 위한 표를 보고 실제 AP가 어떻게 계산되는지 직접 계산해 보자.

1x0.2 + 0.8x0.2 + 0.71x0.1 + 0.6x0.1 = 0.49



'Study - AI > Object Detection' 카테고리의 다른 글

Advanced Object Detection  (0) 2025.04.02
EfficientNet & EfficientDet  (0) 2025.02.04
Neck  (0) 2025.01.27
Object Detection Library : MMDetection, Detectron  (0) 2025.01.24
Object Detection Overview  (0) 2025.01.17