Machine Learning, Deep Learning

Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

n.han 2021. 7. 2. 16:04

Ren, Shaoqing, et al. "Faster r-cnn: Towards real-time object detection with region proposal networks." Advances in neural information processing systems 28 (2015): 91-99.

Abstract

Object detection은 object가 존재하는 bounding box를 예측하고, 그 object를 classification하는 문제.
Fast R-CNN과 같은 object detection 네트워크는 bounding box의 후보들이 될만한 region들을 제안하는 region proposal 알고리즘을 활용하게 되고, 이는 학습의 bottleneck.
본 논문에서는 이를 개선하기 위해 end-to-end로 학습되는 Region Proposal Network(RPN)의 도입.

Introduction

- Selective Search와 같은 region proposal 알고리즘은 학습에 여전히 bottleneck.
- 본 논문에서는 object detection 네트워크와 convolutional layer를 공유하는 Region Proposal Networks(RPN)을 제안.
  . RPN은 feature를 추출하는 convolution layer들의 꼭대기에 추가된 몇몇의 convolutional layer들.
  . 이들은 object가 있는 region을 찾고 region bound를 regression하는데 활용.
  . RPN에서는 region들을 다양한 scale과 aspect 비율로 추출.

- Region proposal task과 object detection task를 번갈아가며 네트워크를 학습 시키는 훈련 방식을 제안
  -> 학습 속도가 개선되고 효과적으로 두 task를 모두 수행할 수 있는 통합된 네트워크를 만들 수 있음.

Faster R-CNN Architecture

- Faster R-CNN은 RPN과 Fast R-CNN detector로 구성.
- Feature map을 추출하는 단계까지는 두 네트워크가 공유됨.
- RPN 모듈은 Fast R-CNN 모듈이 feature map의 어디에 'attention'해야 하는지 말해줌.
- Fast R-CNN에서 각각 크기가 다른 RoI들을 같은 크기로 맞춰주는 RoI pooling 을 그대로 차용.

크기가 다른 RoI들을 같은 크기로 변경하여 FC layer의 입력될 수 있도록 하는 RoI pooling. 출처: https://www.slideshare.net/JinwonLee9/pr12-faster-rcnn170528

Faster R-CNN Architecture: Region Proposal Networks

- RPN은 이미지를 입력으로 받고 classification score를 가지는 사격형의 region들을 출력.
- Conv feature map을 n x n window로 sliding해가며 k개의 anchor boxes(region 후보들)들을 생성.
- Anchor boxes들은 각 sliding window를 여러 scale과 aspect ratio로 변경하며 생성.
- 본 논문에서는 n을 3, k를 9로 실험.

Region Proposal Network(RPN)


- cls layer는 two-class softmax layer (class 1: object가 있음. class 0: object가 없음).
- reg layer는 anchor를 실제 bounding box에 맞게 정교하게 조절(regression)하는 용도.
- FC layer들이 sliding window 방식으로 동작하기 때문에, n x n convolutional layer와 두 1 x 1 convolutional layer들(for cls and reg)로 구현.

구현 관점에서의 RPN. 출처: https://www.slideshare.net/JinwonLee9/pr12-faster-rcnn170528


- End-to-end로 region을 추출하기 때문에, 이미지가 translation 되면 region들도 따라서 translation해줘야 하는 기존 region proposal 알고리즘의 문제점이 없음.

여러 scale들과 aspect ratio들로 생성된 anchor들. 출처: https://www.youtube.com/watch?v=x8BDyubehhk

Faster R-CNN Architecture: Loss Function in Region Proposal Networks

- 각 anchor가 positive(object가 있음)로 분류되는 조건은 다음과 같음 (or 조건):
  1. 하나의 ground-truth box과 IoU(Intersection-overUnion)이 가장 큰(가장 크게 겹치는) anchor에 대하여.
  2. grund-truth box와 > 0.7 IoU인 모든 anchor에 대하여.
  . 따라서 하나의 ground-truth box에는 positive로 label된 anchor들이 여러개 있을 수 있음.
  . 위 조건 중 2를 만족하지 못하는 특이한 경우들을 발견하여 or 조건임.
- 각 anchor가 negative로 분류되는 조건은 모든 ground-truth box와의 IoU가 0.3 보다 작은 경우.
- negative와 positive 둘 중 하나로 분류되지 못하는 anchor들은 학습 목적 함수에 영향을 주지 않음.
- 위와 같은 조건 하에, 다음과 같은 목적 함수를 최소화:

Faster R-CNN loss function

- Log loss는 다음과 같은 cross entropy: 

Log loss / Binary cross entropy

- Anchor와 GT간 교집합이 커지도록 regression term을 출력하는 reg network를 학습. x,y는 원래 anchor의 x,y에 각각 width,height에 비례한 값이 더해지는 식으로 regression. w,h는 원래 anchor의 w,h에 지수함수가 곱해지도록 regression.

Bounding box regression

- t는 reg layer의 출력. L_reg는 t가 실제 GT box로 계산된 t*에 가까워지도록 구성.
- Loss function은 smooth l1 loss 활용.

Bounding box regression and loss function
smooth l1 loss

Faster R-CNN Architecture: Non-Maximum Suppression

- 하나의 이미지에 겹쳐지는 proposal들이 많이 나오는 경우가 있음.
- 이런 중복을 해결하기 위하여, Non-Maximum Suppresion을 도입.
- 알고리즘:
1. 제안된 proposal들을 cls score가 높은 순서대로 정렬.
2. 정렬된 순서대로 다른 proposal들과의 IoU가 0.7 이상인 것들을 삭제한다.

Faster R-CNN Architecture: Training steps

Faster R-CNN 4-step training. 출처: https://www.slideshare.net/xavigiro/faster-rcnn-towards-realtime-object-detection-with-region-proposal-networks
VGG Net과 같은 pre-trained된 모델과 RPN을 덧대어 Proposal 생성, Proposal<-> GT와 비교하여 네트워크 학습.
Pre-trained된 모델(Step1의 conv layer가 아님을 유의)과 Step 1에서 생성된 proposal들을 활용하여 Fast R-CNN 학습.

 

Step 2의 conv layer를 fix하고, RPN 학습.
Step 2의 conv layer를 fix하고, Step 3에서 생성된 Proposal들로 Fast R-CNN 학습.
Faster R-CNN training steps summary. 출처: https://www.slideshare.net/JinwonLee9/pr12-faster-rcnn170528

Results

Faster R-CNN 속도 비교. 기존 모델과 비교하여 정확도가 오르고, 속도도 많이 개선됨을 확인.
Selective Search(SS)와 RPN을 썼을 때의 속도 비교. SS -> RPN으로 대체하여 속도가 2s -> 0.2s로 크게 개선됨을 확인. (단위 ms)
anchor가 bounding box regression을 거쳐 변경된 크기.예를 들어 256X128인 anchor(128 scale, 2:1 aspect ratio)는 평균 188X111 proposal로 regression. (s는 이미지 scale로 600 pixel로 하였을 때의 실험 결과)

 

다양한 scales, aspect ratios들을 적용했을 때의 성능 변화. 3 scales, 1 ratio -> 3 scales, 3 ratios로 setting을 변경했을 때 성능 향상이 미미하지만, 다양한 이미지 데이터 셋에 범용적으로 적용하기 위하여 3 scales, 3 ratios 세팅을 추천.
Lambda를 변경했을 때의 정확도 변화. 10으로 했을 때가 가장 좋은 성능을 보임.
Selected examples.