Paper Review

[논문 리뷰] Faster R-CNN

슈넌 2022. 9. 2. 12:44

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


Abstract

이 당시 Object Detection을 수행하는 SOTA 모델들은 모두 물체의 위치를 찾기 위해 Region Proposal Algorithm을 사용하였다. SPPnet이나 Fast R-CNN은 Region Proposal 계산을 Bottleneck으로 생각하여 이를 줄이는 방법으로 Running time을 줄였다. 이 논문에서는 RPN을 소개한다. 이는 Fully Convolution Network이며, 물체의 경계와 확률 값을 픽셀 단위로 예측한다. 이를 Fast R-CNN과 합쳐서 하나의 Network로 만들었다. RPN은 요즘 트렌드인 Attention Mechanism을 사용하여 통합된 Network가 어느 지역을 주로 봐야 하는지 말해준다. 이를 통해 적은 실행 시간과 높은 정확도를 보였다.


1. Introduction

 Region Proposal Method가 Object Detection 분야에서 성공을 보이면서 region-based CNN이 많이 등장하였다. region-based CNN은 계산량이 많은 것이 문제였는데, SPPnet과 Fast R-CNN에서 이를 줄이는 방안을 마련하였다. Fast R-CNN의 경우 결국 Real-time에 근접한 속도를 보였다. Region Proposal Method는 Selective SearchEdgeBoxes가 존재하였는데, Selective Search는 정확도가 높지만 속도가 느리고, EdgeBoxes가 그나마 Trade-off가 적절히 되어 있는 방법이라고 말한다. 그럼에도 아직도 Region Proposal을 계산하는 시간은 아직 크다. GPU의 사용으로 region-based CNN은 속도가 빨라졌지만 Region Proposal을 추출하는 알고리즘은 CPU에서 작동하기 때문에 여전히 느리다. 이를 해결하기 위해 Region Proposal을 CNN을 이용하여 추출하는 방법인 RPN을 제안한다. Region-based detector에서 사용되는 feature map에서 Region Proposal을 생성할 수 있다는 것을 확인하여 Feature Map 이후에 RPN을 추가하여 Regression Region Bound와 객체 Score를 각 위치마다 계산하도록 만들었다. RPN은 여러 크기와 비율을 찾기 쉽도록 설계되었다. 여기서 Anchor라는 개념을 도입한다. 다양한 크기와 비율을 찾아내도록 하기 위한 것으로 Single-scale Image를 사용하고도 성능이 좋게 나왔다. 이를 통해 정확도와 속도 측면 모두에서 뛰어난 모델을 만들었다.


2. Related Work

Object Proposal Object Proposal을 구하는 방법은 여러 방법이 존재한다. super-pixels을 grouping하는 방법에 기반한 방법과 Sliding windows를 이용한 방법을 사용해왔다. 이러한 Method는 Detector와는 독립된 모듈로 사용되었다.

 

Deep Networks for Object Detection

R-CNN 모델은 Proposal Region을 Classify하고 Object가 있는지, Background인지 확인하는 과제를 수행한다. 따라서 R-CNN은 Object의 위치를 찾는 역할을 하는 것이 아니다. 따라서 Region Proposal 모델을 무엇을 사용하냐에 따라 성능이 결정된다. 이전 연구에서도 물체의 영역을 찾기 위해 딥러닝 모델을 사용하는 연구가 진행되어 왔다. OverFeat MethodMultiBox Method가 존재하는데, OverFeat Method는 FC Layer로 Box 좌표를 Regression한다. 이는 Single Object에 대해 진행된다. 여기서 FC Layer가 Convolutional Layer로 대체되면서 Multiple class의 Object를 Detect한다. MultiBox Method는 FC Layer를 통해 여러 개의 Class에 무관한 Box를 생성해낸다. 이렇게 나온 Region을 R-CNN에 넣어서 사용한다. 하지만 MultiBox Method는 Proposal Network와 Detect Network 사이에 Feature를 공유하지 않는다.


3. Faster R-CNN

Faster R-CNN은 두 가지 모듈로 구성된다. 첫번째 모듈은 Region Proposal을 생성하는 Deep Convolutional Network이다. 두 번째 모듈은 Fast R-CNN Detector로 첫 번째 모듈에서 뽑아낸 Region Proposal을 사용한다. 이 두 모듈을 통합하여 Object Detection을 수행한다. 아래 사진은 모델의 구조도이다.

RPN 모듈은 Fast R-CNN 모듈이 어느 곳을 봐야 할지 알려주는 Attention 기능을 제공한다.

 

1. Region Proposal Networks

RPN은 Image를 입력으로 받아서 객체에 대한 Score와 함께 사각형의 물체 Proposal을 추출한다. Fully Convolution으로 구성되어 있으며, 이 이유는 Fast R-CNN과 계산을 공유하기 위함이다. 기존의 공유 가능한 Convolution Layer가 있는 모델에는 ZF 모델과 VGG-16이 있다. Region Proposal을 생성하기 위해 작은 network를 사용하였는데, feature map을 입력으로 받아 사용하는 Convolution Network이다. 사용되는 Window(Convolution 혹은 Kernel)을 통해 Lower-dimensional feature로 mapping한다. 그리고 Fully Connected Layer를 통해 Box-regression과 Box-classification layer를 생성한다. 아래 사진은 RPN을 자세히 표현한 것이다.

1.1 Anchors

위의 사진에 나오는 것처럼 sliding window의 각 위치마다 여러 개의 Region Proposal을 만들게 된다. k는 각 위치마다 생성되는 Proposal의 최대 갯수이다. 따라서 4k coordinates는 k개의 박스의 좌표이므로 4k이고, 2k scores는 k개의 object의 score 값으로 물체인지 아닌지 판단하므로 2k개이다. 여기서 k개의 Box를 앵커의 개념을 도입한다. k개의 Proposal은 k개의 reference box에 대하여 parameterize될 수 있다. Anchor는 해당 sliding window의 중앙에 위치한다. 이 논문은 3개의 Scale과 3개의 Ratio를 고려하여 총 9개의 Anchor를 사용하였다.

 

Translation-Invariant Anchors

본 논문에서 중요한 Property가 바로 translation invariant이다. CNN을 공부하면 다 알고 있겠지만 translation invariant는 대상의 위치에 영향을 받지 않고, 위치 변화에 무관하다는 뜻이다. 앵커의 관점과 Proposal을 계산하는 관점에서 모두 translation invariant하다. 물체의 위치가 바뀌면 바뀐 물체의 영역을 뽑아낼 수 있는 것이다. 또한 이런 특성은 모델의 크기를 줄일 수 있다. MultiBox Method는 (4 + 1) x 800-dimensional FC Output Layer를 사용한다. 하지만 Anchor를 사용하게 되면 (4 + 2) x 9-dimensional Convolution Output Layer를 사용하게 되면서 Parameter 수가 감소하게 된다. 그렇기 때문에 Overfitting의 위험도 감소하게 된다. 

 

Multi-Scale Anchors as Regression References

저자가 설계한 Anchor는 여러 크기와 비율의 객체를 잘 찾는다. 기존의 여러 크기의 객체를 탐지하는 방법은 아래 사진과 같이 크게 두 가지가 존재하였다.

첫 번째는 Feature Pyramid 방식이다. 영상을 Resize하여 여러 크기의 영상을 만들고, 각 영상에서의 Feature를 뽑아내어 사용한다. 이는 유용하게 사용되지만 시간이 오래 걸린다는 단점이 있다. 두 번째 방법은 여러 크기의 Sliding Window를 쓰는 것인데, 여러 크기의 Convolution을 사용한다고 생각하면 된다. 이 방식은 첫 번째 방법과 함께 사용되는 것이 일반적이다. 이와 비교하여 이 논문에서 말하는 방법은 pyramid of anchor 방식이다. 계산량도 적고 사진도 한 장에 대해서만 계산하면 된다.

 

1.2 Loss Function

RPN을 학습하기 위해서는 각 Anchor에 Binary Classification Label을 할당해야 한다. 두 가지에 대한 Label 값인데, GroundTruth에 대한 IoU가 가장 높은 Anchor가 무엇인지와, GroundTruth에 대한 IoU 값이 0.7보다 높은 Anchor가 무엇인지의 정보를 담는 것이다. 한 개의 Ground-trurh Box에도 여러 개의 Anchor가 Positive Label로 존재할 수 있다. 대부분의 경우에는 2번째 조건을 만족하지만 몇몇의 경우 만족하지 않을 때를 위해 1번째 조건을 추가한 것이다. 또한, IoU 값이 모든 Ground-truth Box에 대해 0.3 보다 작을 때, negative label을 할당한다. Positive와 Negative가 아닌 Anchor들은 학습에 영향을 끼치지 않는다.

 

위의 정의를 이용하여 Multi-task Loss를 정의한다. 아래는 Loss Function의 수식이다.

i는 Anchor의 Index를 의미하고, pi는 i번째 Anchor가 예측한 객체가 있을 확률값, pi*는 Ground-truth Label으로 위에서 말한 Anchor에 대한 Label로 Positive면 1, Negative면 0이다. ti는 Bounding Box에 대한 4개 값의 벡터이고, ti*는 Ground-truth Box의 좌표 값이다. Lcls는 Classification을 위한 Loss로 Log Loss를 사용한다. Lreg는 Regression을 위한 Loss로 Robust Loss를 사용한다. pi*와 Lreg를 곱하는 이유는 Regression Loss는 Positive Anchor에 대해서만 활성화되도록 하기 위해서다. Ncls는 Normalize Term으로 mini-batch의 갯수이고, 여기서는 256을 사용하였다. Nreg는 Anchor Location의 갯수로 약 2400개 정도이다. 람다는 10으로 설정하여 cls term과 reg term의 weight를 비슷하게 설정해주었다. 실험을 통해 람다의 값이 중요하고 Normalize Term은 중요하지 않은 것을 밝혀내었다.

 

Bounding Box Regression을 위해 4개의 좌표값을 다음과 같이 표현하였다.

x, y, w, h는 Box의 중앙의 x, y 좌표와 넓이, 높이를 의미한다. x, xa, x* 각각 예측한 Box, Anchor Box, Ground-truth Box를 의미한다. y, w, h도 동일하다. 이것을 정리하면 Ground-truth Box 근처에 있는 Anchor Box를 통하여 Bounding Box Regression을 진행한다고 생각하면 된다. 또한, 이렇게 Parameterize를 해주는 이유는 크기가 큰 박스에서 Loss가 크게 발생되지 않도록 Anchor Box의 크기로 나누어 큰 물체든, 작은 물체든 동등하게 학습하기 위함이다. 이전 방법들과 비교하면 원래는 임의의 크기의 RoI를 사용하고, regression weight가 모든 크기의 region에 동일하게 사용되었었다. 하지만 이 논문에서는 3x3 Convolution으로 Feature Map을 동일한 영역만큼 본다. 그리고 k개의 Anchor들을 통해 다양한 크기의 영역을 찾아낸다. 각 Anchor들은 자신이 맡은 한 개의 크기에 대해서 찾기 때문에 다른 크기의 Anchor들과 Weight를 공유하지 않는다. 또한, Feature의 크기가 변하지 않아도 다양한 크기의 객체를 탐지할 수 있다.

 

1.3 Training RPNs

RPN은 일반적인 Neural Network처럼 end-to-end로 학습할 수 있다. 이를 학습하기 위해 Fast R-CNN에서 소개한 Image Centric Sampling을 사용하였다. Image Centric Sampling은 여러 RoI를 한 번에 뽑는 것이 아니라, 먼저 큰 영역을 뽑고, 그 영역에서 작은 영역들을 뽑아내는 방식이다. 학습 중에는 각 mini-batch마다 여러 개의 positive and negative anchor가 발생한다. 하지만 negative anchor의 경우가 훨씬 많기 때문에 bias가 일어나기 쉽다. 이를 해결하기 위해 256개의 Anchor를 임의로 뽑고, positive와 negative의 비율을 1:1로 맞춰서 Loss를 계산한다. 이때 positive anchor의 갯수가 128개가 되지 않는다면 negative 영역에서 차이나는 만큼 padding으로 채운다. 새로 추가한 Layer는 mean 0, std 0.01으로 Gaussian Distribution으로 초기화해주었고, 다른 Layer들은 ImageNet으로 학습시킨 Pretrained Weight를 사용하였다. 

 

2. Sharing Features for RPN and Fast R-CNN

RPN에서 생성한 Proposal을 사용하는 Detector를 여기서는 Fast R-CNN을 선정하였다. RPN과 Fast R-CNN을 통합하여 학습을 진행하고, Convolution Layer를 공유하는 방법을 사용하였다. 만약에 각각 따로 학습을 한다면 RPN과 Fast R-CNN은 각각 다른 방향으로 학습이 될 것이다. 따라서 Convolution Layer를 공유하는 방법을 통해 이를 해결하고자 하였다. Feature Sharing을 하는 방법은 총 3가지가 제안되었다.

 

첫 번째는 Alternating Training이다. 먼저 RPN을 학습하고, 여기서 추출한 Proposal을 통해 Fast R-CNN을 학습하는 방법이다. 이 과정에서 Fine-tuning이 일어나고, 그 Weight를 다시 RPN에 Initialize를 해준다. 이러한 과정이 반복되면서 학습을 진행한다. 이 방법은 추후에 다시 설명한다.

 

두 번째 방법은 Approximate Joint Training이다. 이 방법은 학습을 할 때, RPN과 Fast R-CNN을 합쳤고, 이를 바로 학습시킨다. Fast R-CNN을 학습할 때는, 미리 계산된 Proposal을 사용한다. 공유된 Layer에서는 Loss가 두 방향에서 오게 된다. RPN과 Fast R-CNN에서 Loss가 각각 오면서 합쳐지게 된다. 이 방법은 실행은 쉽지만 Proposal의 Box의 좌표값에 대한 미분값은 무시가 된다. 그렇기 때문에 대충 위치를 Approximate하는 것이다. 이 방법은 alternating training과 성능 차이가 별로 나지 않으면서 학습 시간은 25~50%가 줄었다.

 

세 번째 방법은 Non-approximate joint training이다. Fast R-CNN안에 존재하는 RoI Pooling Layer가 Convolution Feature와 Bounding Boxes를 입력으로 받아서 Box 좌표도 gradients에 포함되도록 하였다. 이 gradients는 앞에서 소개한 Approximate Joint Training에서는 무시되었던 것이 추가된 것이다. 이 방법을 사용할 때는 미분 가능한 RoI Pooling Layer가 필요하다.

 

4-Step Alternating Training

앞에서 말한 Alternating Training을 4가지 Step으로 세분화해서 설명하였다. 첫 번째 step은 RPN을 학습시킨다. 이때 Network는 ImageNet으로 Pretrained 되어있는 모델이고, RPN을 학습하면서 Fine-tuning이 진행된다. 두 번째 step은 Fast R-CNN을 Detector로 하여 RPN에서 뽑아낸 Proposal을 통해 학습한다. 이 Detection 모델 또한, ImageNet으로 Pretrained되어 있으며, Fine-tuning이 진행된다. 이 경우에는 아직 Feature Sharing이 일어나지 않은 상태이다. 세 번째 step은 공유되는 Convolution Layer는 고정시키고, RPN에 대해 고유한 Layer만을 학습시킨다. 즉, RPN으로 들어가는 Convolution만 학습시키는 것이다. 이렇게 되면 Backbone을 포함한 Feature를 공유하게 되는 것이고, 마지막 step으로 고정되었던 Convolution Layer를 유지한 채, Fast R-CNN 부분을 학습시킨다. 이렇게 되면 통합된 Network에서 같은 Feature를 공유하는 모델이 된다. 이 방법은 여러 번 반복시킬 수 있지만, 눈에 띌만한 성능 개선은 보이지 못하였다.

 

3. Implementation Details

학습과 테스트 모두 단일의 크기를 가진 영상을 입력으로 사용하였다. 이전에 사용되던 Multi-scale Feature Extraction 방법은 정확도를 높이긴 하였지만, 속도 측면에서 성능이 많이 떨어졌기 때문에 Trade-off 측면에서 더 성능이 악화됨을 보였다. 또한, 영상의 짧은 쪽을 600 Pixel을 갖도록 re-scale하였다. re-scale되면서 Feature Map의 Stride수도 증가하였는데, 이를 통해 성능 개선이 이루어졌다. 3개의 Scale과 3개의 Aspect Ratios의 Anchor를 사용하였다. Anchor를 사용하면서 Receptive Field보다 큰  영역을 Prediction하는 결과를 보였다.

 

Anchor Box가 경계를 넘어갈 때, 처리를 잘해주어야 한다. 학습할 때는 경계가 넘어가는 Anchor들을 모두 제거하였다. 사진 한 장에 약 20000개 정도의 Anchor가 사용되는데, 경계를 넘는 것을 제외하면 6000개 정도가 남는다. 만약 학습 시에 경계가 넘어가는 것을 사용하게 되면, Error를 찾기가 쉽지 않고, 학습이 Converge가 되지 않을 수 있다. 하지만 Test를 진행할 때에는 경계에 넘어가는 Anchor가 있으면 Image Boundary에 맞게 잘라주었다. 

 

RPN을 통해 뽑아낸 Proposal은 겹치는 부분이 많이 존재한다. 이를 줄이기 위해 Class Score에 기반한 Non-maximum Suppression (NMS)를 도입한다. IoU Threshold는 0.7으로 고정한 채 NMS를 적용하여 약 2000개의 Proposal Region만 남긴다. 2000개는 확률이 가장 높은 것들을 순위 매겨서 넣은 것이다.


4. Experiments

1. Experiments on PASCAL VOC

먼저 PASCAL VOC 2007 Dataset을 이용하여 실험하였다. Metric은 mAP를 사용하였다. 아래 표는 다양한 Region Proposal 방법을 사용하여 Train과 Test를 진행한 것이다.

표를 통해 알 수 있듯이 Selective Search나 EdgeBoxes보다 ZF에 RPN을 사용한 것이 mAP도 높았고, 사용한 Proposal 수도 적었다.

 

Ablation Experiments on RPN

RPN과 Fast R-CNN이 Convoloution Sharing을 하는 것의 효과를 확인하기 위해 4-step Training에서 2번째 step까지하여 비교하였다. 이때 성능이 미세하게 떨어지는 것을 확인할 수 있다. 다음으로 학습할 때, RPN의 영향을 구분하기 위하여 Selective Search와 ZF를 이용하여 Fast R-CNN을 학습하고 Detector 부분을 고정하여 성능을 확인하였다. 이때는 RPN과 Fast R-CNN은 Feature Sharing을 하지 않는다. 이후에 Test를 진행할 때, SS대신에 RPN과 ZF를 사용한다. Proposal을 300으로 했을 때, 56.8%로 성능이 떨어지는 것을 볼 수 있는데, 이는 SS와 RPN이 만들어내는 Region Proposal이 동일하지 않기 때문이다. 또한 주목할 점은 Proposal을 100개로 줄여도 55.1%의 성능을 보인다는 것이다. Top Rank 100개의 성능이 정확하다는 뜻이다. 하지만 6000개를 사용했을 때, FP가 증가하면서 성능이 떨어지게 된다. NMS를 사용하면 이를 줄이기 때문에 성능이 높아질 수 있다.

 

다음으로 Class Output과 Regression Output의 역할을 실험하기 위해 Test를 할 때, 각각 Layer를 지워서 실험하였다. 따라서 NMS를 진행하지 못했기 때문에 Proposal은 Random으로 뽑았다. Class Layer를 제거했을 때 Proposal의 갯수에 따라 성능 차이가 컸는데, class 정보가 없기 때문에 많이 뽑을수록 높은 확률에 있는 Proposal을 사용할 수 있기 때문에 Proposal의 갯수가 중요한 것이다. Regression Layer를 제거했을 때 성능이 많이 떨어진 것을 확인할 수 있는데, 이를 통해 Anchor Box로는 Bounding Box를 제대로 그릴 수 없고, Regression하는 과정이 필요한 것이다.

 

Backbone이 RPN에 미치는 영향을 실험하기 위해 RPN을 학습시킬 때, VGG를 사용하고, Detector를 사용할 때는 Selective Search와 VGG를 그대로 사용하였다. 이때 성능이 올라간 것을 확인할 수 있고, RPN+VGG가 RPN+ZF보다 좋은 것을 의미한다. 심지어 Selective Search를 학습할 때와 Test할 때 모두 사용한 것보다 성능이 좋았는데, 이는 VGG가 Selective Search보다 좋은 성능을 가지는 것을 의미한다.

 

Performance of VGG-16

아래 표 3은 VGG-16을 Proposal과 Detection에 모두 적용하여 실험한 결과이다.

RPN+VGG에 Feature Sharing을 하지 않은 것이 68.5%로 Selective Search보다 높은 성능을 보였다. Feature Sharing을 진행하면서 성능이 더 올라간 것을 확인할 수 있다. 또한, 2012 Dataset을 추가하면서 성능이 올라갔고, COCO까지 추가되면서 성능이 증가하였다.

위의 표 5를 통하여 Running Time을 확인할 수 있다. 이를 통해 Selective Search보다 RPN이 훨씬 빠른 속도를 보이는 것을 알 수 있고, Detector도 Proposal 수가 줄어들면서 걸리는 시간이 확연하게 줄어들었다.

 

Sensitivities to Hyper-parameters

아래 표를 통해  Anchor의 Setting에 따른 성능 차이를 확인할 수 있다.

이를 통해 앵커의 갯수가 늘어날수록 성능이 증가하는 것을 볼 수 있다. 특히 3 Scale을 사용했을 때 성능 개선이 일어났다.

이 표는 위에서 설명했던 Loss의 람다 Parameter 값에 따른 차이인데, 10일 때 성능이 가장 좋았고, 10배 단위로 측정해야 성능 차이가 발생하였다. 논문에서 성능이 가장 좋은 이유로 Normalized Term과 합쳤을 때 비슷하게 가중치가 들어가기 때문이라고 말한다.

 

Analysis of Recall-to-IoU

IoU Threshold 값에 따른 Recall을 계산하는 실험을 진행하였다. 아래 사진은 Proposal 갯수가 각각 300, 1000, 2000개일 때 실험한 것이다. SS와 EB, RPN을 비교하였고, N개의 Proposal만 남기는 NMS를 진행하였다.

위 사진을 통해 RPN은 Proposal이 2000부터 300까지 줄어도 성능 차이가 많이 나지 않는 것을 볼 수 있다. 이를 통해 RPN은 적은 Proposal을 통해서도 물체를 잘 찾아낼 수 있음을 알 수 있다. 

 

One-Stage Detection vs. Two-Stage Proposal + Detection

OverFeat 논문에서 One-stage 모델을 소개한다. OverFeat은 1개의 Aspect Ratio와 Scale을 이용하여 Region을 찾고, RPN은 Anchor를 이용한다. 두 방법 모두 Sliding Window를 통해서 Region Proposal을 뽑아내는 것이고, 1-Stage까지는 하는 역할이 동일하다. 그리고 Faster R-CNN의 경우 2-Stage에서 RoI Pooling을 통해 Fast R-CNN을 2-Stage에서 사용한다. 이 두 System을 비교하기 위해 One-Stage의 Fast R-CNN을 사용하여 OverFeat system을 만들어 비교하였다. 아래 표는 2-Stage System과 1-Stage System에서 Proposal과 Detector 측면에서 비교한 것이다.

ZF모델을 사용한 One-Stage System이 2-Stage보다 낮은 성능을 보였고, 이를 통해 2-Stage가 성능이 더 좋은 것을 확인할 수 있다. 또한 Proposal을 One-Stage에서 더 많이 사용하므로 속도도 2-Stage가 빨랐다.

 

2. Experiments on MS COCO

여기서는 MS COCO Dataset을 사용하여 추가적인 성능을 제공하였다. 이때는 Anchor의 Scale 수를 하나 더 늘렸다. 이는 작은 Object를 검출하기 위함이다.

위의 표 11을 통해 RPN이 성능이 더 좋은 것을 확인할 수 있고, mAP@[.5, .95]의 성능 차이를 통해 높은 IoU Threshold에서도 Localization 정확도가 높은 것을 확인할 수 있다.

 

Faster R-CNN in ILSVRC & COCO 2015 competitions

RPN의 좋은 성능 덕분에 Backbone을 ResNet 101로 교체하면서 Depth가 증가해도 성능이 좋아지는 것을 확인할 수 있었다. 이를 통해 COCO 2015 Competition에서 우승을 차지하였다.

 

3. From MS COCO to PASCAL VOC

이번 실험에서는 COCO Dataset에서 학습한 것이 PASCAL Dataset에서 어떠한 영향을 끼치는지 확인한다.

COCO를 통해서 학습했을 때가 VOC07+12보다 성능이 높은 것을 확인할 수 있다. 또한, COCO Dataset과 VOC Dataset 모두 함께 학습하여 사용했을 때, 더 높은 성능을 보이는 것을 알 수 있다.


5. Conclusion

RPN을 소개하면서 Region Proposal을 효과적으로, 정확하게 생성하는 방법을 제안한다. Convolution Layer를 공유하며 Region Proposal을 추출하는 과정에서 Cost를 줄였다. 이 당시 Real-time에 근접한 속도를 보였고 Region Proposal의 Quality를 향상 시켰고 따라서 Object Detection Task의 성능도 올랐다.

 

Faster R-CNN은 Vision을 공부하는 사람이라면 필수적으로 알아야 하는 모델이다. Anchor에 대한 개념, Feature Sharing 등은 지금까지도 사용되는 개념이고 앞으로 많이 보게 될 개념들이다.