카테고리 없음

[논문 리뷰] Faster R-CNN: Towards Real-Time ObjectDetection with Region Proposal Networks

yenynb 2026. 5. 10. 22:45

Faster R-CNN: Towards Real-Time Object Detection

with Region Proposal Networks

 

Shaoqing Ren, Kaiming He, Ross Girshick, and Jian Sun

 

1. INTRODUCTION

1.1 기존 R-CNN 계열의 문제점

R-CNN

기존의 R-CNN은 Selective Search를 통해 약 2,000개의 후보 영역(Region Proposal)을 생성해야 했고, 각 후보 영역마다 CNN을 개별 수행하였고 이 때문에 매우 느린 속도를 가진다는 한계를 가지고 있었다.

 

Fast R-CNN

이러한 문제를 해결하기 위해 Fast R-CNN이 나오게 되었다.

Fast R-CNN은 이미지 전체에 대해 CNN feature map을 한 번만 추출하고, ROI Pooling을 통해 속도 개선할 수 있게 되었다.

그러나 여전히 Selective Search 사용하고 있고, Region Proposal 생성 단계가 병목 현상 발생한다는 한계가 존재했다.

 

→  즉, Fast R-CNN 이후에는 CNN 연산보다 Region Proposal 생성 속도가 더 느려지는 문제가 발생하였다.

 

1.2 Faster R-CNN Keypoint

Faster R-CNN의 핵심 아이디어는 다음과 같다.

 

  • CNN feature map을 공유 (RPN과 Detector가 같은 feature map 공유)
  • sliding window 방식으로 후보 영역 생성 (RPN)
  • 객체 존재 여부(objectness)와 bounding box를 동시에 예측
  • end-to-end 학습 가능

2. Related Work

  • R-CNN은 Region Proposal + CNN + SVM 구조로 정확도는 높지만 매우 느린다는 문제가 있다.
  • SPPnet CNN feature 공유하고 Spatial Pyramid Pooling 사용하게 되면서 어느정도 속도 개선이 되었다.
  • Fast R-CNN은 ROI Pooling 사용하고, end-to-end 학습 가능하게 되었지만 Selective Search는 외부 알고리즘을 사용해야 했다.

→ 하지만 “Region Proposal 단계가 여전히 문제이다. 그래서 Faster R-CNN은 이를 해결하기 위해 Proposal 생성까지 CNN 안에서 수행할 수 있도록 하였다.

 


3. Faster R-CNN Architecture

Fast R-CNN은 크게 두 단계로 이루어져 있다.

 

  1. RPN이 Region Proposal 생성
  2. Fast R-CNN detector가 최종 분류 수행

→ 이 두 단계는 convolution layer를 공유

 

3.1  Region Proposal Network (RPN)

RPN은 feature map 위를 sliding window 방식으로 이동하면서 객체 후보 영역을 생성한다.

그 과정은 입력 이미지 → CNN → Feature Map → RPN → Proposal 생성으로 진행하게 된다.

 

RPN은 각 위치마다 객체 존재 여부와 bounding box 좌표를 예측하게 된다.

 

Sliding Window

본 논문에서는 3×3 convolution window를 사용하였다. 각 위치마다 두 개의 branch가 존재한다.

 

Classification Layer

객체 존재 여부를 예측

 

Regression Layer

bounding box 좌표 보정

 

3.2 Anchor Box

논문은 다양한 크기와 비율의 bounding box를 처리하기 위해 Anchor를 도입하였다.

 

Anchor를 설정할 때에는

각 위치마다 3개의 scale과 3개의 aspect ratio를 사용한다.

즉, k = 3x3 = 9로 9개의 anchor를 생성하게 된다.

 

각 anchor는 postive/negative로 분류되어 학습된다.

Postive Anchor의 조건은 GT box와 IoU가 가장 높은 anchor이거나  IoU > 0.7인 경우이다.

Negative Anchor의 조건은 IoU < 0.3인 경우이다.

 

3.3 Multi-task Loss

RPN은 classification loss와 regression loss를 동시에 학습하는데, 논문의 loss function은 다음과 같다.

 

 

$$ L(\{p_i\}, \{t_i\}) = \frac{1}{N_{cls}} \sum_i L_{cls}(p_i, p_i^*) + \lambda \frac{1}{N_{reg}} \sum_i p_i^* L_{reg}(t_i, t_i^*) $$

 

 

 

    •  
\(L_{cls}\) : object classification loss
  •  
\(p_i\) : 예측 확률
    •  
\(t_i\) : 예측 bounding box 좌표

 

위의 식을 통해서 객체 여부를 판단하고, 위치 보정을 동시에 최적화한다.

 


 

4. Sharing Features with Fast R-CNN

Faster R-CNN의 핵심은 RPN과 Detector가 feature map을 공유한다는 것이다.

 

기존의 방식은 Proposal 생성용 feature와 Detection용 feature를 따로 계산하는 방식이다.

 

하지만 Faster R-CNN은 하나의 CNN backbone을 공유한다.

따라서 계산량은 감소하게 되고, 속도는 증가하며 메모리 효율이 향상되는 효과를 얻을 수 있게 되었다.

 

  본 논문에서는 "RPN이 detector에게 “어디를 봐야 하는지” 알려주는 역할을 한다."라고 언급하였다.

 


5. Traning Strategy

Faster R-CNN은 4-step alternating traning을 제안하였다.

 

Step 1 : RPN 학습

Step 2 : Fast R-CNN detector 학습

Step 3 : RPN과 detector의 convolution layer 공유

Step 4 : 두 네트워크 fine-tuning


→ 이를 통해 proposal 생성하고 detection을 하나의 unified network로 결합


6. Experiments

PASCAL VOC 2007에서 Faster R-CNN의 성능을 평가했을 때 SS(selecive search), EB(edge box)기법에 비해 성능이 좋다는 결과를 확인할 수 있었다.

RPN을 VGG-16으로 훈련해 성능을 측정했을 때 mAP가 올랐으며 데이터를 하나씩 추가할수록 mAP가 올랐다. 

one stage보다 two stage(Faster R-CNN)의 mAP가 더 좋은 성능을 보였다.

COCO 데이터셋으로 훈련하였을 때도 Faster R-CNN이 Fast R-CNN보다 더 높은 성능을 보였다. 


6. Conclusion

본 논문에서는 빠르고 정확한 영역 추정을 하기 위해 RPN을 제안했다. RPN과 detection이 Feature를 공유함으로써 정확도와 속도 측면에서 훨씬 개선되었으며, 효율도 챙길 수 있었다.