[논문 리뷰] RetinaNet - Focal Loss for Dense Object Detection(2017)

‍이수빈·2025년 2월 4일

[논문 리뷰]

목록 보기
14/24

Paper: Focal Loss for Dense Object Detection

🔍1. Introduction

현재 최고의 객체 탐지(Object Detection) 모델들은 two-stage 기반의 방식으로 구성됨.
(ex. R-CNN)
stage 1: 객체의 후보 영역을 생성함
stage 2: 후보 영역을 분류하여서 배경(background)/특정 객체(foreground) 클래스로 구분함
이러한 two-stage 방식은 coco 데이터셋에서 높은 성능을 구현해냈음.

하지만, one-stage 방식이 two-stage 방식만큼 정확도를 높게 가질 수 없는 점에 초점을 두기 시작함.
YOLO, SSD와 같은 모델이 one-stage 모델인데, 이러한 모델의 경우, 객체 위치/크기/비율을 dense하게 sampling을 하여서 한 번에 탐지하는 방식임.
해당 방식은 속도는 two-stage 방식보다 훨씬 빠르지만, 정확도 측면에서 10~40% 낮음.

아무래도 class imbalance(클래스 불균형) 문제가 one-stage 모델의 정확도를 한정 짓는 주요 원인이라고 명명하였고,
따라서, Focal Loss라는 새로운 손실 함수를 제안하여 해당 문제를 극복하고자 함.
Focal Loss는 Cross Entropy Loss를 좀 변형해서 쉬운 sample에 대한 손실값을 낮추는 대신, 어려운 sample에 좀 더 집중시키고자 함.

이렇게 Focal Loss 검증을 위해 설계한 것이 RetinaNet이며, 본 연구에서는 RetinaNet이라는 새로운 One-Stage detector를 제안하고자 함.
이는 FPN(Feature Pyramid Network)과 Mask R-CNN을 기반으로 한 모델이며, Anchor Box를 활용한다는 특징을 갖고 있음.
실험 결과, 기존 One-stage 방식의 한계를 극복하고, Two-stage 방식보다 뛰어난 성능을 달성함.


<One-stage 방식>
모든 위치를 detect해야하기에, 처리할 sample 개수가 정말 많음.
따라서 class 불균형이 정말 심각하며, 쉬운 sample들이 학습 시에 꾸준히... 방해
Bootstrapping, Hard Example Mining 방식이 존재하지만, 이를 활용해도 한계가 있음.

<Two-stage 방식>
class 불균형 해결을 위해 다양한 방법 사용.
stage 1: 후보 영역을 만들어서 background sample을 걸러냄.
(ex. Selective Search, EdgeBoxes, RPN)
stage 2: Foreground:Background 비율을 1:3으로 조정해서 sampling 진행
(OHEM(Online Hard Example Mining) 방식을 통해 어려운 sample을 더 많이 학습하는 구조)

Classic Object Detectors

과거 객체 탐지는 sliding window 방식 사용.
그리고 딥러닝 발전에 의해 기존 sliding window 방식이 two-stage 방식이 주가 됨.

Two-stage Detectors

현재 사용되는 객체 탐지 대부분이 해당 방식.
객체 proposal을 생성하고, 후보 분류하는 구조.
R-CNN → Fast R-CNN → Faster R-CNN으로 점차 발전

One-stage Detectors

Two-Stage 방식보다 속도는 빠르나, 낮은 정확도.(ex. SSD, YOLO 등)

RetinaNet은 One-Stage 방식에서 Anchor 개념 도입 및 FPN 활용, Focal Loss 도입까지. (Focal Loss가 가장 주된 성능 향상 요인)

Class Imbalance

One-stage 방식은 클래스 불균형 문제가 너무 심함.
배경 sample이 너무 쉬워서 학습이 효율적으로 이루어지지 못함.
Hard Negative Mining이라는 기존 해결 방법(어려운 sample 먼저 학습)은 추가적인 sampling 과정이 필요하여서 비효율적.

Robust Estimation

기존 loss function은 이상치(outliers)를 줄이는 것을 주목적으로 삼았다면,
Focal Loss는 이상치 처리가 아닌, 쉬운 sample에 대한 가중치를 줄여서 학습을 어렵게 만드는 것!
따라서 어려운 sample에 좀 더 집중하여 학습하도록 설계.

✅3. Focal Loss

Focal Loss는 One-Stage 객체 탐지기의 클래스 불균형 문제를 해결하기 위해 설계됨.

먼저, Binary Classification에서의 Cross Entropy 함수의 경우,

  • y: 실제 정답(Ground Truth, 1 또는 0)
  • p: 모델이 예측한 확률(0~1 사이의 값)

으로 계산되고, 모델이 정답에 가까운 확률을 예측할 경우 손실 값이 점점 작아지는 구조.
단, 쉽게 분류된 sample이어도, 손실값이 존재하고, 이게 쌓이고 쌓일수록 모델 학습에 방해가 됨.


그래서 기존 해결 방법 중 하나로 Balanced Cross Entropy 적용 가능.
클래스 1(객체 존재 부분)과 클래스 -1(배경)에 대해 서로 가중치를 다르게(α) 부여하는 구조.
다만, 이는 어려운 sample과 쉬운 sample 구분을 못함.


그렇게 Focal Loss가 등장하게 되고...

쉬운 sample의 손실 ↓/어려운 sample에 학습 집중하도록 설계.

  • γ (Focusing Parameter): 쉬운 sample의 기여도 줄이는 정도를 조절하는 파라미터

γ=0이면 일반적인 크로스 엔트로피 손실과 동일하며, γ 값 증가할수록 쉬운 sample 손실 기여도가 낮아지도록 함.


Focal Loss를 더 개선하기 위해,
Balanced CE, Focal Loss결합한
Balanced Focal Loss 사용.

기존 Balanced CE보다 높은 성능을 띄고, 안정성도 높음.


Class Imbalance and Model Initialization
초기 모델이 배경 class에 치우쳐져서 학습되지 않도록 하기 위해, 초기 모델 확률(π)을 조정하는 방법을 사용함.
이를 통해 클래스 불균형 문제 해결 및 학습 안정성 향상 가능.


Two-Stage Detector의 경우, Focal Loss 없이도 클래스 불균형 문제를 해결할 수 있다고 함.
Proposal 생성 단계에서 배경 sample 제거하고, 학습 sample의 비율 조정해서 불균형 해결하는 방식.
다만, one-stage는 이렇게 될 수 없으므로 focal loss 필요함.

✅4. RetinaNet Detector

RetinaNet은 Single Unified Network로 구성되고,
CNN 기반 Backbone Network + 두 개의 Task-Specific Subnetworks.
즉, Classification & Regression로 구성.

  • Backbone Network에서는 input image를 CNN으로 변환해서 피처맵 생성

  • Classification Subnetworks: 객체 존재 확률 예측

  • Bounding Box Regression Subnetworks: 객체 위치(좌표) 예측

단순한 구조로 만들어졌고, 하이퍼파라미터 값에 덜 민감.

Feature Pyramid Network (FPN) Backbone

RetinaNet은 백본 네트워크로 FPN 사용.
이는 기존 CNN 네트워크에 Top-Down 경로와 Lateral Connection을 추가해서 멀티 스케일 피처맵을 만드는 방식임.
ResNet 기반으로 구축됨.

Anchor Box

Faster R-CNN 방식과 같이 Anchor Box 사용.
P3~P7 각 피라미드 레벨에 서로 다른 크기의 앵커 박스를 적용하고, 각 레벨에서 9개의 앵커를 사용.

객체 존재 판별 여부는 IoU(Intersection-over-Union) 사용.
IoU ≥ 0.5 → 객체로 할당
0 ≤ IoU < 0.4 → 배경으로 할당
0.4 ≤ IoU < 0.5 → 무시

Classification Subnet

각 앵커에 대한 객체 존재 확률을 예측하는 역할.
Fully Convolutional Network 구조 사용.
모든 FPN level에서 동일한 subnet 구조 적용.
4개 3 X 3 Conv + 1개의 최종 Conv + Sigmoid 활성화 함수 적용

Bounding Box Regression Subnet

각 앵커의 위치 보정을 통해 객체 좌표 정확히 예측하는 역할.
Classification Subnet과 동일한 구조를 사용하지만, 최종 출력은 4A개의 좌표 예측값 출력.(앵커마다 4개씩)
Faster R-CNN과 달리, 모든 class에 대해 같은 bounding box regressor 사용.


RetinaNet의 Inference는 FCN 구조이며,

ResNet 기반 FPN backbone (이미지에서 피처 추출)

  • Classification subnet (객체 존재 확률 예측)
  • bounding Box Regression subnet (객체 위치 예측)

위와 같이 구성됨.


RetinaNet은 Classification Subnet에서 Focal Loss 사용.
γ=2가 실험 결과 가장 효과적인 값이었음.
타 일반 객체 탐지 모델에서는 256개 minibatch sampling을 하지만, RetinaNet은 샘플링 없이 전체 100,000개의 앵커에 대해 Focal Loss 적용함!
α값과 γ는 서로 영향 미치기에, 둘 사이 잘 조정해서 사용해야 함.
loss 값은 매칭된 객체 앵커 개수로 normalization해서 계산.


모델 Initialization 단계에서는
ResNet-50-FPN, ResNet-101-FPN를 백본으로 사용.
FPN layer, subnet의 새로운 합성곱 계층은 가우시안 Initialization 적용


Optimization 단계에서는 SGD(Stochastic Gradient Descent, 확률적 경사 하강법) 사용하여 학습 진행.

  • 8개의 GPU에서 16개 이미지 학습
  • learning schedule
    : 90k 반복학습 후 60k 학습 후 lr 0.1배 감소. 그 후 80k 학습 후 0.1배 추가 감소
  • Data Augmentation: flip만 사용
  • loss function: Focal Loss (Classification) + Smooth L1 Loss (Bounding Box Regression)

✅5. Experiments

coco 벤치마크에서 성능 평가 진행.

Training Dense Detection

dense detection에서의 loss function과 다양한 최적화 전략을 분석하기 위한 실험을 진행함.
50 or 101 ResNets 사용 + FPN
이미지 pixel: 600

  • standard cross entropy를 사용할 경우, fail.
  • π 값이 insensitive해서, 0.01로 설정 후 사용.
  • Balanced Cross Entropy에서는 α값을 0.75로 설정했고 AP값이 0.9 증가함.
  • Focal Loss는 γ 추가 → 쉬운 샘플 무시/어려운 샘플 집중. γ = 2.0일 때 최적. hard negative examples에 더 큰 효과.
  • OHEM (Online Hard Example Mining) vs. Focal Loss 비교 진행. OHEM은 high-loss examples만 선택해서 학습하는 방식. 다만, easy examples를 완전히 제거하기에, 미세 조정이 어려움. 결론적으로 Focal Loss가 dense detectors training 시에, 더 효과적임.
  • Hinge Loss를 P_t에 적용도 해보았는데, 결론적으로 학습이 불안정해서, 유의미하지 않은 결과 도출.

Model Architecture Design

  • Anchor Density: "how densely it covers
    the space of possible image boxes", 즉, 얼마나 dense하게 후보 객체 박스 영역을 cover하는지가 중요. 앵커 개수를 증가시키면 AP가 향상되긴 하나, 불필요하게 많은 앵커는 필요 X. 3 scales and 3 aspect, 총 9개 앵커 사용할 때가 최적.
  • Speed versus Accuracy: 더 큰 Backbone 사용 시, 정확도는 증가하지만, 속도는 느려짐. high frame
    rate 탐지의 경우 special network가 필요함.

Comparison to State of the Art

RetinaNet-101-800 모델을 COCO test-dev에서 평가함.
결론적으로, RetinaNet은 기존 One/Two-Stage 탐지기보다 더 높은 AP를 기록함.
즉, RetinaNet은 기존 One-Stage 탐지기의 한계를 극복한 SOTA 모델으로 볼 수 있음.

🔚6. Conclusion

본 논문에서는 class imbalance(클래스 불균형)가 one-stage 객체 탐지가 높은 성능을 내지 못하는(two-stage 방식에 비해) 주요 원인임을 확인했음.

이를 해결하기 위해, Focal loss를 제안하였고, Cross Entropy에 조정 계수를 추가하여 Hard Negatives 샘플에 학습이 집중되도록 설계함.

단순한 방법처럼 보이지만 효과적인 방법이었으며, 이를 활용한 One-Stage Fully Convolutional Detector(완전 합성곱 기반 탐지기)를 설계하여서 실험을 진행하였고,
결과적으로, 타 객체 탐지 모델과 비교하였을 때 정확도/속도 면에서 모두 우위를 차지함.

profile
🏫 Kookmin University, Major in Electrical Engineering (First Major), AI Big Data & Management (Double Major), Smart Car ICT (Interdisciplinary Major)

0개의 댓글