[Object Detection] One-Stage Object Detection - YOLO, SSD, RetinaNet

2025. 9. 12. 00:15·Computer Vision1/Paper reviews

One-Stage Object Detection 개요

 

우리는 이전까지 Two-Stage Object Detection을 리뷰하였고 이번에는 Region Proposal 과정을 생략하고 Bounding Box Regression + Classification 동시에 수행하는 One-Stage Detector를 살펴보겠다.

 

YOLO

 

YOLO = You Only Look Once.

Region Proposal을 생략하고 한 번의 Forward Pass로 Detection 수행.

YOLOv1 → v2 → v3 → … → v5, v8, v10까지 지속 개발 되어 요즘도 널리 쓰이는 대표적인 One-Stage Detector이다.

 

 

우선 YOLO는 입력 이미지를 S×S Grid로 나눔. (YOLO v1에서는 7×7)

  • 단순히 이미지를 잘라내는 전처리가 아님.
  • Feature Map의 한 픽셀이 원본 이미지의 일정 영역(64×64)을 담당하는 개념.

각 Grid Cell은 B개의 Bounding Box를 예측한다. (YOLO v1에서는 B=2).

  • 각 Box는 (x, y, w, h, confidence) 5개 값 출력.

따라서 한 Grid Cell 출력 차원: 5*B + C. ( 예: B=2, C=20 → 30차원. )

  • 전체 7×7=49개의 Grid Cell → 총 98개의 Box 후보 생성.

 

 

 

448×448×3 RGB 이미지 =>

Backbone: GoogLeNet 기반 Convolution Network.

Fully Connected Layer를 통해 4096차원 벡터 → 1470차원 벡터로 변환하는데 이걸 다시 7×7×30 Feature로 변환

 

 

 

  • 7×7 Grid 기준, 각 픽셀은 원본 이미지의 64×64 영역 담당.
  • 각 Grid Cell 출력 벡터(30차원):
    • 첫 5개: Box1 (x, y, w, h, confidence).
    • 다음 5개: Box2 (x, y, w, h, confidence).
    • 나머지 20개: Class Probabilities.

최종 Confidence × Class Probability = Class-specific Score을 구함

데이터셋 클래스 수(C)에 따라 마지막 출력 차원 변경이 필요하

 

Loss Function

 

 

  • Bounding Box Regression Loss
    • (x, y, w, h) 예측값과 Ground Truth 차이 최소화.
    • 모든 Grid Cell × Box에 대해 계산.
    • λ (lambda)라는 하이퍼파라미터로 가중치 조절.
  • Confidence Loss
    • Object 존재 시: Confidence → 1 근접.
    • No Object 시: Confidence → 0 근접.
    • Indicator Function(지시 함수) 사용.
  • Classification Loss
    • 클래스별 예측 확률 분포가 Ground Truth One-hot 벡터와 가까워지도록 학습.

- YOLO의 장단점

 

 

Faster R-CNN 대비 6배 빠르고 Background Error가 적음

더보기

 

  • Two-Stage Detector (예: Faster R-CNN)
    • RPN(Region Proposal Network)이 수많은 후보 영역(anchors)을 생성.
    • 이 중 많은 영역이 사실상 배경인데도 객체 후보로 전달됨.
    • Classification 단계에서 배경을 걸러내야 하므로 FP가 증가하는 경향.
  • One-Stage Detector (YOLO)
    • 이미지 전체를 고정된 Grid Cell로 나눔.
    • 각 Grid Cell은 자신이 담당하는 영역 안에 객체가 있으면 예측, 없으면 “배경”으로 처리.
    • 불필요한 수천 개의 후보 영역을 만들지 않음.
    • 따라서 배경을 객체로 잘못 잡는 경우(Background Error)가 구조적으로 줄어듦.

 

하지만 한 Grid Cell은 사실상 하나의 객체만 예측 가능하고 여러 객체가 겹치면 성능 저하 문제가 존재하고, 작은 객체 Localization 한계, 입력 크기 고정.

더보기
  • YOLO v1은 최종 7×7 Feature만 사용
  • CNN의 뒤쪽 Feature는 시맨틱 정보(무엇인지)는 잘 잡지만, 공간 정보(어디에 있는지)는 손실됨

 

YOLOv2~v3 이후에는 Multi-Scale Feature Map(FPN), Anchor Box, Stride 축소 등을 도입해 작은 객체도 잘 잡도록 개선됨.

SSD

  • SSD = Single Shot MultiBox Detector
  • 이름 그대로 한 번(Shot)에 Detection을 끝내는 구조.
  • YOLO와 마찬가지로 Region Proposal 과정 없음.

하지만 YOLO와 차별점은 Multiple Feature Map을 활용한다는 것이다.

- YOLO: 마지막 하나의 Feature Map만 사용 (7×7).

- SSD: 여러 층에서 나온 Feature Map을 동시에 사용 → 작은 물체부터 큰 물체까지 다양한 크기 탐지 가능.

더보기
  • YOLO v1: 448×448 입력 → CNN → 마지막 7×7 Feature Map 사용.
    • 단점: 해상도(7×7)가 너무 작아서 작은 물체 검출에 한계.
  • SSD: 300×300 입력 이미지 → CNN(VGG16) → 중간 Feature Map들을 여러 개 사용.
    • 예: 38×38, 19×19, 10×10, 5×5, 3×3, 1×1 등.
    • 각각의 Feature Map에서 Classification + Bounding Box Regression 수행.
    • 따라서 다양한 스케일의 객체를 탐지할 수 있음

 

 

SSD의 핵심 특징

 

 

(1) Multiple Feature Map

  • 다양한 크기의 Feature Map을 모두 활용.

(2) Default Box (Anchor Box)

  • Faster R-CNN의 Anchor 개념을 차용.
  • 각 Grid Cell에 여러 개의 Default Box(미리 정의된 크기와 비율) 설정.
  • 예: 한 Cell에 4~6개의 Default Box.
  • 네트워크는 이 Default Box를 기준으로 좌표(x, y, w, h) 보정값을 학습.
  • 즉, Ground Truth와 가까워지도록 Default Box → 실제 객체 박스로 변환.

SSD 구조

입력: 300×300 (SSD300) / 512×512 (SSD512).

 

각 Layer 마다 Feature Map을 구함 (빨간색은 엥커박스 수)

  • Classification: C개의 클래스 확률.
  • Regression: Default Box 좌표 보정값 (Δx, Δy, Δw, Δh).

최종적으로 8732개의 Box 예측(SSD300 기준).

  • YOLO v1: 98개만 예측 → SSD는 훨씬 많은 후보.

 

 

하지만 작은 객체 탐지 여전히 약하고 Box 개수 너무 많아서 느려짐 (8732개)

  • 앞쪽 Feature Map(큰 해상도)을 사용하지만,
  • CNN 앞단 Feature는 Low-level Feature라 충분히 "영글지 못한 정보" → 예측 성능 낮음.
  • 실제로 작은 비행기, 자전거, 새 등 검출률 낮음.

 

Loss Function

 

 

  • Faster R-CNN과 거의 동일한 Loss 사용.:
    1. Classification Loss: Cross-Entropy (Softmax 기반).
      • 객체 클래스 예측 정확도.
    2. Bounding Box Regression Loss: Smooth L1 Loss.
      • Default Box → Ground Truth 박스로의 좌표 보정.

하지만 SSD도 작은 객체 검출력이 올라가긴 했으나 큰 객체 검출에 비해 낮은 성능을 보였다.

RetinaNet

 

  • Retina = 망막(눈), Net = 신경망 → 눈처럼 이미지에서 객체를 잘 잡아내고자 함.
  • One-Stage Detector의 문제를 해결하기 위해 제안됨.
    • Two-Stage(Faster R-CNN 등): Region Proposal로 배경 대부분을 걸러냄 → FP 줄어듦.
    • One-Stage(YOLO, SSD 등): Region Proposal 없음 → Negative(배경) 샘플이 너무 많아 Class Imbalance 발생.

Class Imbalance

  1. Foreground vs Background 불균형
    • 이미지 대부분은 배경, 객체는 소수 → 배경 Anchor가 수천~수만 개.
    • 예: COCO dataset → 객체 < 1%, 배경 > 99%.
  2. Foreground 내부 불균형
    • "사람" 클래스는 수십만 개, "드문 객체(예: 산삼..?)"는 몇 개.
    • 데이터셋 내 클래스 분포가 극도로 불균형.

결과적으로 One-Stage Detector는 쉽고 많은 Negative 샘플에 학습이 끌려 성능이 떨어진다고 생각

 

RetinaNet의 핵심 아이디어

(1) Focal Loss

  • 기본 Cross-Entropy에 가중치(감마) 추가.
  • 잘 분류되는 “쉬운 예제”(특히 배경)에 대해서는 Loss를 줄이고,
    어려운 예제(희소 클래스, 작은 객체)에는 Loss를 집중(focus).
  • Negative 샘플 억제, Positive 샘플 강조 → Class Imbalance 완화.

(2) Feature Pyramid Network (FPN, Neck 구조)

 

 

 

멀티 스케일 객체 검출 성능 개선을 목표로  Backbone(ResNet)과 Head 사이에 Neck = FPN 삽입

 

Neck?

.

Backbone에서 뽑은 Feature Map을 가공·변환·융합하는 중간 처리 단계.

여러 스케일의 Feature를 결합해서 멀티스케일 특징을 강화.

 

 

 

FPN 

Scale Invariant 달성 방법에는 여러가지가 있다

더보기

A. Multi-scale Input (이미지 피라미드)

  • 입력 이미지를 여러 크기로 줄이거나 키워서 CNN에 각각 넣음.
  • 각각에서 Detection을 수행 후 결과를 합침.
  • 장점: 단순하고 효과적.
  • 단점: 입력마다 CNN을 돌려야 하므로 속도가 매우 느림.

B. Single Feature Map (YOLO v1 방식)

  • 입력 이미지를 CNN에 넣고, 마지막 Feature Map 하나만 사용.
  • 예: YOLO v1 → 7×7 Feature Map 기반 예측.
  • 장점: 빠름.
  • 단점:
    • 해상도가 너무 낮아 작은 객체 탐지에 취약.
    • 겹쳐 있는 객체 탐지 어려움.

C. Multi-Feature Map (SSD 방식)

  • CNN의 중간 Feature Map과 마지막 Feature Map을 모두 사용.
  • 작은 Feature Map → 큰 객체 탐지
  • 큰 Feature Map → 작은 객체 탐지
  • 장점: 다양한 크기의 객체 처리 가능.
  • 단점: 앞단 Feature는 아직 영글지 않은 Low-level Feature라서 작은 객체 탐지 성능이 떨어짐.

D. Feature Fusion (FPN, RetinaNet 방식)

  • SSD의 단점을 보완.
  • Higher-level Feature (의미 풍부, 공간 해상도 낮음)
  • Lower-level Feature (공간 해상도 큼, 의미 정보 적음)
    → 업샘플링 + 1x1 Conv으로 크기와 채널 맞춰서 합성(Fusion)
  • 결과적으로 작은 객체와 큰 객체 모두 탐지가 가능.
  • RetinaNet은 이 구조를 Neck(FPN)으로 채택.

 

Bilinear Interpolation을 사용해서 이미지 크기를 늘려서 맞추고 채널은 1X1 Conv로 맞춰서 Feature를 같은 위치 (x,y) 픽셀별, 채널별로 더함.

 

Performance

 

 

기존 One-Stage Detector(YOLO, SSD)보다 AP(정확도) 크게 향상

 

최근 연구 동향

더보기

1. Backbone의 다양화

  • 기존 ResNet 대신 EfficientNet 계열을 Backbone으로 활용한 Object Detection 기법 등장
  • 효율성과 정확도를 동시에 추구하는 흐름

2. Transformer 기반 Detection

  • DETR (Detection Transformer) 등장
  • 이후 다양한 변형 모델들이 개발되어 성능 개선
  • CNN 기반 한계를 넘어선 Transformer 기반 검출 구조가 활발히 연구됨

3. Anchor 문제와 Anchor-free 기법

  • Faster R-CNN, SSD, RetinaNet 등은 Anchor Box를 사전 정의해야 했음 → 사람이 개입 필요, Hyperparameter 의존적
  • 단점: 사전 정의 크기·비율에 따라 성능이 달라짐
  • 해결책: Anchor-free Detector 개발 (대표: FCOS)
    • 객체 중심점(center point) + 크기 비율을 직접 학습 → Anchor 사전 정의 불필요

4. 3D Object Detection

  • 기존: 2D 이미지 입력 → 2D Bounding Box 출력
  • 최근: LiDAR 등 3D 센서를 활용 → 입체적 Bounding Box (육면체) 출력
  • 자율주행, 로보틱스 등에서 필수 기술로 발전
  • 대표적 기법: Point-based 3D Detection, CVF, 3D DETR 계열

5. 멀티모달 Object Detection

  • 단순히 이미지 속 모든 객체를 찾는 것이 아니라, 텍스트 Prompt 기반 검출 연구 확산
    • 예: “사람만 찾아줘”, “자전거만 찾아줘” 같은 요청 수행
  • 대표 사례: GLIP (Grounded Language-Image Pretraining)
    • 대규모 Foundation Model 기반, 텍스트와 이미지 융합

 

'Computer Vision > Paper reviews' 카테고리의 다른 글

[Generative AI] Flow Matching for Generative Modeling  (0) 2025.09.11
[ILSVRC 논문 정리해 보기] DenseNet, SENet과 대회 그 이후  (0) 2025.09.05
[ILSVRC 논문 정리해 보기] VGGNet, GoogleNet, ResNet  (0) 2025.09.05
[Object Detection] Faster R-CNN  (0) 2025.08.06
[Object Detection] SPPNet과 Fast R-CNN  (0) 2025.07.17
'Computer Vision1/Paper reviews' 카테고리의 다른 글
  • [Generative AI] Flow Matching for Generative Modeling
  • [ILSVRC 논문 정리해 보기] DenseNet, SENet과 대회 그 이후
  • [ILSVRC 논문 정리해 보기] VGGNet, GoogleNet, ResNet
  • [Object Detection] Faster R-CNN
임승택
임승택
"Hello, I am Lim Seungtaek, a computer engineering student. Nice to meet you!"
  • Lim's Technology
    임승택
    임승택
    "Welcome to Lim's Technology!"
  • 누적 조회수
    총 회
    구독하기
    • 분류 전체보기 (102)
      • Blog (10)
      • Computer Vision (44)
        • Computer Vision (4)
        • Paper reviews (24)
        • Project (8)
        • Basic (8)
      • LLM (8)
        • Paper reviews (3)
        • Project (3)
        • Basic (2)
      • Data Analysis (11)
        • Basic (8)
        • Project (3)
      • Computer Graphics (2)
        • Basic (2)
      • Robotics (5)
        • Paper reviews (3)
        • Basic (2)
      • Technology Notes (15)
      • Memo (5)
  • 인기 글

  • 최근 댓글

  • 최근 글

임승택
[Object Detection] One-Stage Object Detection - YOLO, SSD, RetinaNet
상단으로

티스토리툴바