🔑 Object Detection, Detector, One-Stage Detector, Two-Stage Detector, Precision & Recall


Object Detecion

  • 객체의 위치를 찾는 localization과 객체의 종류를 분류하는 classification을 모두 수행하는 task
  • 객체의 위치를 탐지하고 객체의 종류를 분류하는 2가지 과정을 나누지 않고 한번에 수행하면 detection 속도가 훨씬 빠르다.
    • YOLO와 같은 one-stage detector가 이런 방식을 사용하며 더 빠른 속도를 실현함
  • Object detection은 자율 주행, OCR, CCTV 보안에 사용될 수 있는 기술
  • 객체의 위치를 완전히 결정하기 위해서 필요한 정보
    • class 종류
    • bounding box의 중심점 좌표 (x, y)
    • height
    • width
  • Segmentation은 모든 pixel을 분류하여 객체를 탐지하는 반면, object detection은 bounding box를 통해 객체의 위치를 지정함





Object Detector

  • DETR
    → 2020년 Facebook AI에서 발표한 모델로, Transformer 구조를 object detection에 처음 적용한 모델. end-to-end로 학습이 가능하며, NMS(Non-Maximum Suppression)와 같은 후처리 과정이 필요없다는 장점이 있음
  • SSD (Single Shot Detector)
    → CNN 기반의 one-stage detector. 여러 scale의 feature map을 사용하여 다양한 크기의 객체를 검출할 수 있음
  • YOLO (You Only Look Once)
    → CNN 기반의 대표적인 one-stage detector. 이미지를 그리드로 나누어 한 번에 객체를 검출하는 방식을 사용.
  • R-CNN (Region-based CNN)
    → CNN 기반의 초기 two-stage detector. selective search를 통해 region proposal을 생성하고, 각 영역에 대해 CNN을 적용함
  • Faster R-CNN
    → CNN 기반의 two-stage detector로, R-CNN의 개선된 버전. Region Proposal Network (RPN)를 도입하여 proposal 생성 속도를 크게 향상시켰음

Detector 구조의 구성 요소

  • Fast R-CNN
    → RPN이 없음. selective search를 사용하여 region proposal을 생성함. [Input → Backbone → Sparse prediction] 구조를 가짐.
  • RetinaNet
    → One-stage detector로 RPN이 없음. [Input → Backbone → Neck(FPN) → Dense prediction] 구조를 가짐. Focal Loss를 도입하여 class imbalance 문제를 해결한 모델임.
  • CornerNet
    → One-stage detector로 RPN이 없음. [Input → Backbone → Dense prediction] 구조를 가짐. 객체의 왼쪽 상단과 오른쪽 하단 corner를 예측하는 방식을 사용함.
  • YOLO
    → One-stage detector로 RPN이 없음. [Input → Backbone → Dense prediction] 구조를 가짐. 단순한 구조로 빠른 속도를 보여줌.
  • Faster R-CNN + FPN
    → Two-stage detector로 문제에서 제시한 모든 구성요소를 포함함. [Input → Backbone → Neck(FPN) → RPN → Sparse prediction]의 구조를 가지며, FPN을 통해 다양한 scale의 feature를 효과적으로 활용할 수 있음.

Object detection evaluation metric

  • mIoU (mean Intersection over Union)
    → Object detection의 metric임. 예측한 bounding box와 실제 ground truth box 간의 겹치는 영역을 평가하는 지표임. segmentation에서도 사용됨.
  • FID (Fréchet Inception Distance)
    → GAN과 같은 생성 모델의 성능을 평가하는 metric임. 생성된 이미지와 실제 이미지의 특징 분포 간의 차이를 측정함. Object detection과는 관련이 없음.
  • FPS (Frames Per Second)
    → Object detection의 metric임. 모델의 실시간 처리 능력을 나타내는 속도 지표임. 특히 실시간 객체 탐지가 필요한 응용에서 중요함.
  • mAP (mean Average Precision)
    → Object detection의 가장 대표적인 metric임. 각 클래스별 AP(Average Precision)의 평균값을 계산한 것으로, 검출 정확도를 평가함.
  • FLOPS (Floating Point Operations Per Second)
    → Object detection의 metric임. 모델의 연산량을 나타내는 지표로, 모델의 효율성을 평가할 때 사용함.

One/Two-stage detectors

  • SSD (Single Shot Detector)
    → One-stage detector임. 단일 네트워크에서 바로 객체 검출을 수행하며, region proposal 과정이 없음.
  • FasterRCNN
    → Two-stage detector임. 1단계에서 RPN으로 region proposal을 생성하고, 2단계에서 classification과 box regression을 수행함.
  • R-CNN
    → Two-stage detector임. 1단계에서 selective search로 region proposal을 생성하고, 2단계에서 CNN을 통해 특징을 추출하여 분류를 수행함.
  • RetinaNet
    → One-stage detector임. FPN 구조와 Focal Loss를 사용하여 class imbalance 문제를 해결한 모델임.
  • YOLO
    → One-stage detector임. 이미지를 그리드로 나누어 한 번에 객체를 검출하는 방식을 사용하며, 빠른 속도가 특징임.





Precision & Recall

TP: 10

TN: 15

FP: 15

FN: 15

precision : TP/(TP+FP) = 10 / (10+15)

precision은 모델이 찾은 모든 detections 중에 정답의 비율을 의미

recall : TP/(TP+FN) = 10 / (10+15)

recall은 모든 정답들 중에 모델이 맞춘 정답의 비율을 의미

Evaluation metric in OD

Object detection 에 평가지표에는 단순히 성능 뿐만 아니라 속도를 평가하는 지표들

→ Recall, AP, IoU 은 모두 성능을 평가하는 지표 중 하나인 mAP를 계산하기 위해 필요한FF 개념

FLOPs

FLOPs 는 model이 얼마나 빠르게 동작하는지 측정하는 metric이다. 아래 그림과 같은 행렬곱에 대하여 FLOPs를 계산했을 때 옳게된 FLOPs

MUL(3x2, 2x3) = 3x3

  • 각 셀 당 연산: 𝑎11 ∗ 𝑏11 + 𝑎12 ∗ 𝑏21
  • 곱셈 • 한 셀 당 2번, 3 x 3 x 2 = 18번
  • 덧셈 • 한 셀 당 1번, 3 x 3 x 1 = 9번 이기 때문에 총 FLOPS는 27





1-Stage Detectors

  • 전체 이미지에 대해 특징 추출, 객체 검출이 이루어진다.
  • 1 stage detector의 예시로는 다음과 같은 모델들이 있음 : YOLO, SSD, RetinaNet, ...
  • 속도가 매우 빠르다 (Real-time detection)
  • Localization, Classification이 동시에 진행한다.
  • 1 stage detector도 충분한 맥락적 이해가 가능함
  • RetinaNet과 같은 모델은 높은 정확도를 보여줌
  • FPN과 같은 구조를 통해 다양한 scale의 정보를 활용
  • 최신 1 stage detector는 2 stage와 비슷하거나 더 나은 성능을 보이기도 함





2-Stage Detectors

R-CNN

R-CNN은 object detection 분야에 CNN을 적용시킨 2-stage detector의 초기 모델로, 다음과 같은 pipeline으로 동작한다

  1. 입력 이미지에서 Selective Search를 통해 약 2k개의 후보 영역(RoI)을 추출한다.
  2. 추출된 RoI를 모두 동일한 사이즈로 warping한다.
  3. Warping된 RoI를 모두 CNN에 넣어 feature vector를 추출한다.

4-1. 추출된 feature vector를 SVM에 넣어 각 영역의 클래스를 예측한다.

4-2. 추출된 feature vector를 Regression에 넣어 각 영역의 bounding box를 예측한다.


Fast R-CNN

2 stage 초기 모델인 R-CNN은 1) 약 2000개의 RoI마다 모두 CNN 연산을 따로 수행해야 하며, 2) CNN의 fc layer의 입력 사이즈에 맞추기 위해 RoI를 강제로 warping해야한다는 단점이 있었다.

Fast R-CNN은 이 단점들을 해결하기 위해 1) 단일 CNN 연산으로 feature map을 추출하고, RoI를 이 feature map상에 매핑하는 RoI projection를 사용하여 연산량을 크게 줄였으며, 2) 매핑된 feature map상의 각 RoI들은 고정된 크기의 vector로 변환해주는 RoI pooling를 사용하여 성능과 속도를 모두 개선할 수 있었다.

  • RoI projection: 입력 이미지를 통째로 CNN에 통과시켜 feature map을 추출하고, 입력 이미지로부터 따로 추출한 RoI를 feature map 위에 그대로 매핑하는 방법을 사용하여 약 2000번의 CNN 연산을 단 한번으로 줄일 수 있었다.
  • RoI pooling: CNN의 fc layer에 입력하기 위해서는 고정된 크기의 벡터가 필요하기 때문에 R-CNN에서는 강제 warping을 사용하였다. 이 방식은 정보 또는 성능의 손실 가능성이 있기 때문에, SPPNet의 아이디어를 차용하여 고정된 크기의 vector로 변환해주는 RoI pooling 방식으로 대체하였다.

Faster R-CNN

Faster R-CNN에서 제안된 RPN(Region Proposal Network)의 동작 과정이다. 지정된 anchor box의 개수가 12개일 경우, 다음 (A,B,C)에 들어갈 숫자

  1. CNN에서 나온 feature map을 input으로 받음.
  2. Input feature map에 3x3x512 convolution을 수행하여 intermediate layer 생성.

3-1. Intermediate layer에 AxAxB convolution을 수행하여 binary classification 수행.

3-2. Intermediate layer에 AxAxC convolution을 수행하여 bounding box regression 수행.

  • A=1, B=24, C=48



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

Object Detection Wrap-Up  (0) 2025.04.05
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