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 사용.:
- Classification Loss: Cross-Entropy (Softmax 기반).
- 객체 클래스 예측 정확도.
- Bounding Box Regression Loss: Smooth L1 Loss.
- Default Box → Ground Truth 박스로의 좌표 보정.
- Classification Loss: Cross-Entropy (Softmax 기반).
하지만 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
- Foreground vs Background 불균형
- 이미지 대부분은 배경, 객체는 소수 → 배경 Anchor가 수천~수만 개.
- 예: COCO dataset → 객체 < 1%, 배경 > 99%.
- 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 |