개발로 하는 개발

Faster R-CNN: Towards Real-TIme Object Detection with Region Proposal Network 본문

Study

Faster R-CNN: Towards Real-TIme Object Detection with Region Proposal Network

jiwon152 2024. 3. 4. 16:12

Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Network 을 읽고 정리한 내용입니다.

 

- Introduction

기존 object detection methods :

- Selective Search (2s/image) :  pixel 기준의 유사점 찾기

1. Image segmentation -> initial regions

2. Calculate similarity between neighbouring region pairs

3. Get highest similarity regions and merge

4. Recalculate similarity and add it to the set

5. Iterate 2-4

- EdgeBoxes (0.2s/image) : Edge를 사용한다는 차별점

1. Compute Edge detection

2. compute affinity based on angles, mean positions

3. use IoU to calculate score and find intersecting edge groups

Fast R-CNN (Fast R-CNN)

출처 : Fast R-CNN 논문

기존의

1) RoI (Region of Interest) 마다 CNN연산을 함으로써 속도저하 

2) multi-stage pipelines으로써 모델을 한번에 학습시키지 못함

의 한계점들을 

1) RoI pooling

2) CNN 특징 추출부터 classification, bounding box regression까지 하나의 모델에서 학습

을 통해 극복했다.

 

하지만 여전히 

Real-Time object detection을 하기에는 시간이 너무 오래 걸림

why? region proposal이 CPU에서 이루어짐

그럼 GPU reimplementation을 하면 되지 않나? -> down-stream detection network가 무시되어 computation 공유가 어렵다

 

∴ Fast R-CNN에 RPN(Region Proposal Network)를 추가해서 Single, Unified Network인 Faster R-CNN을 구현하자!

 

이 제안이 나오게 된 배경 :

- Convolutional feature maps used by region-based detectors can also be used for generation region proposals

- Share test-time convolution -> marginal cost 감소(10ms per image)

RPN을 추가로 conv layer위에 올리는 개념

Region Proposal Networks (RPN)

 

anchor box / pyramid of anchors

anchor” boxes : reference boxes

sliding window의 중앙을 기준으로 center되어 있으며, 3 scale, 3 aspect ratio로 실험되었다. (k = 9 in this paper)

따라서 anchor k개일 때 $W\times H$ 크기의 image는 anchor가 $WHk$개이다.

cls layer는 classification score를 계산해 object/non-object일 확률을 2k개의 score로 output한다.

reg layer는 각 box별로 직사각형의 좌표 4개가 return되므로 4k개의 coordinates가 output 된다.

 

- references at multiple scales and aspect ratios (1:1, 2:1, 1:2, $128^2, 256^2, 512^2$ in experiments)

 

1. Translation Invariace guaranteed

- 같은 object가 다른 곳으로 이동(translate)된 경우 위치만 translate된 proposal을 한다.

- translation invariant해서 model-size도 감소하게 된다.  

-> parameter 감소는 PASCAL VOC같은 small dataset에 overfitting할 확률이 줄어든다는 장점도 있다.

2. multi-scale anchors as regression references -> pyramid of “anchors”

pyramids of images and feature maps / pyramids of filters with multiple scales/sizes

- 기존의 방식은 image 전체를 scale하거나, 아니면 filter를 scale, size별로 정해서 계산하는 방법이였다.

- image와 feature map전체를 scale하는 방법은 time-consuming하다.

- pyramid of anchors를 사용하는 방법은 single-size image와 feature map을 사용하고, filter(sliding window)도 single size를 사용한다. -> more cost-efficient

- Fast R-CNN detector에서 계산한 single-scale image에 대한 convolutional feature를 추가적인 cost 없이 그대로 사용한다.

Loss Function

anchor class label = if (i or ii) 1 or 0

    i. Anchor(s) with the highest IoU overlap with ground-truth box

    ii. IoU overlap higher than 0.7 with any ground-truth box

if IoU ratio lower than 0.3 for all ground-truth boxes, assign negative label to non-positive anchor

 

$ 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_{cls}(t_{i}, t^*_{i})$

$i$ : index of an anchor in a mini-batch

$p_{i}$ : predicted probability of anchor $i$ being an object

$p^*_{i}$ : ground-truth label, 1 if the anchor label is positive, and 0 if the anchor is negative

$t_{i}$ : 4 coordinates of the predicted bounding box parameterized to an vector

$t^*_{i}$ : 4 coordinates of the ground-truth box associated with a positive anchor

$L_{cls}$ : log loss over two classes (object vs non-object)

$L_{reg}(t_{i}, t^*_{i}) = R(t_{i} - t^*_{i})$ where R is the robust loss function(smooth $L_{1}$)

$N_{cls}, N_{reg}, \lambda$는 각각 cls, reg normalization과 cls term과 reg term사이의 weight이다.

output의 경우 cls layer는 ${p_{i}}$, reg layer는 ${t_{i}}$로 각각 이루어진다.

 

Training RPN : 4 step alternate training

 

1. RPN training(SGD, backpropagation) for region proposal task

2. Fast R-CNN training using proposals from 1

3. detector network로 RPN initialize, RPN에 unique한 layer만 fine-tuning

4. Fast R-CNN에 unique한 layer fine-tuning

-> 여러번 반복할 수 있으나, 유의미한 차이는 없다고 한다. 

 

 

share 안 하는 경우 2번째에서 멈추면 3번째에서 detector-tuned features 를 사용해서 RPN fine-tuning 하는 과정이 빠져서 정확도에 차이가 난다.

그 아래에서는 training 과정에서 RPN influence를 제거한 실험으로, SS proposals + ZF net을 이용해서 training 하고 test 때는 SS대신 RPN을 넣는다56.8 baseline으로 해서 확인했을 때, NMS는 mAP에 악영향을 미치지 않고 false alarm을 감소시키는 효과가 보인다.

- cls layer output을 turn off하고 proposal randomly N개 sample 한 경우

:  N이 충분히 크면 상관없지만 작으면 accuracy of the highest ranked proposals를 계산하는데 문제가 생길 수 있다.

- reg layer output turn off한 경우

: proposals = anchor boxes로 두게 된다. 이 경우 regressed box bounds가 나오지 않으므로 mAP가 drop to 52.1한다.