[Paper] Faster R-CNN 논문 리뷰

조치연·2025년 6월 6일

Paper

목록 보기
8/8
post-thumbnail

안녕하세요. 오늘은 Faster R-CNN 논문을 읽어보고, 공부하려고 합니다.
Faster R-CNN


Abstract

Faster R-CNN은 2015 COCO competition에서 우승을 한 모델입니다.
논문에서는 Faster R-CNN을 이루는 핵심 축인 RPN(Region Proposal Network)을 집중적으로 소개합니다.


1. Introduction

최근 Object Detection 영역은 region proposal method의 발전과 Convolutional network에 의해 좋은 성능을 내고 있습니다.

Convolutional network를 이용한 Detection은 일반적으로 컴퓨팅 연산량이 많이 들었지만, sharing convolution 덕분에 급격하게 연산량이 줄었습니다.(Fast R-CNN)

Fast R-CNN은 real time에 가깝게 빠른 예측을 보여줬습니다. region proposal부분을 제외하면요.
다시말해, region proposal은 detection 모델의 병목 현상을 이끌어내는 원인입니다.

region proposal을 위해 다양한 기법이 나왔습니다.
Selective Search는 이미지 하나 당 2초가 걸릴정도로 느렸습니다.
EdgeBoxes는 이미지 하나 당 0.2초가 걸리면서 상당히 빠른 속도를 지녔지만, 여전히 느렸습니다.

Selective Search는 region proposal 기법 중 하나입니다. 자세한 내용은 다음 링크를 참고해주세요. Selective Search

기존 region proposal은 CPU에서 작동했습니다.
그렇다면 region proposal을 GPU에서 작동하도록 재구성하면 속도가 더 빨라지지 않을까요?
하지만, region proposal을 따로 재구성하면 feature map 혹은, fcn과 연산이 공유되지 않습니다.

논문에서는 이런 문제를 해결하고자 RPNs를 제시합니다.
deep convolutional neural network로 구성된 RPNs는 test time에서 합성 곱 연산을 공유하기 때문에 컴퓨팅 비용이 적습니다.(이미지 당 10ms 정도로 속도도 우수)

논문에서는 Convolutional feature map을 region proposal에도 적용시킬 수 있다는 생각을 했습니다.
기존 CNN의 마지막 부분에 약간의 convolutional layer를 더한 RPN을 구성합니다.
RPN은 bounding box를 예측할 뿐만 아니라 objectness scores도 예측합니다.
RPN으로 인해 end-to-end 학습이 가능해졌습니다.

따라서 RPN은 FCN이라고 봐야합니다.

기존 region proposal은 pyramid 형식으로 사용하였지만, RPN은 다양한 스케일과 비율의 "anchor boxes"를 사용합니다. 위 그림에서 (a), (b)는 기존 방식이고, (c)는 anchor box를 이용한 방식입니다.

anchor boxes를 사용하면 고정된 스케일의 이미지만 사용하면 되므로 예측 시간이 빨라집니다.

Faster R-CNN은 RPN과 Fast R-CNN network를 결합하기 위해서 region proposal과 object detection을 위한 파인튜닝을 따로 진행합니다.
이런 방식은 결합된 Convolutional layer 형태를 띄며, 속도가 빨라집니다.

Faster R-CNN은 Selective Search에서 사용되는 컴퓨팅 비용을 거의 모두 없앴습니다.
(proposal을 위한 시간도 10ms로 매우 빨라졌습니다.)
또한, GPU에서 매우 깊은 모델을 사용하면서도 5fps를 유지합니다. 이는 Faster R-CNN이 정확도와 속도 면에서 유용한 모델이라는 증거입니다.

RPN은 오로지 proposal하기 위해 학습합니다. 따라서 feature map에서 유용한 정보를 잘 찾아냅니다.

Faster R-CNN과 RPN은 ImageNet detection, ImageNet localization, COCO detection, and COCO segmentation 대회에서 1등을 하며 좋은 성능을 보였습니다.
이러한 결과는 Faster R-CNN과 RPN이 비용적으로 효율적일 뿐만 아니라, 정확도 측면에서도 유용하다는 증거입니다.


2. RELATED WORK


Object Proposals

그동안 Object Proposal방법에 대한 많은 논문이 있었습니다.
하지만, 그동안 적용된 Object Proposal은 detector와 독립적으로 적용되었습니다.

여기서 "독립적으로 적용"이라는 말은 Selective Search와 같이 따로 학습되지 않는 Object Proposal을 의미합니다.


Deep Networks for Object Detection

기존 R-CNN은 객체의 bounds를 예측하지는 않았습니다. 단순히 정제했을 뿐이죠.
따라서 R-CNN의 정확도는 region proposal 모듈의 성능에 달려있었습니다.

이런 상황 속에서 그간 딥러닝을 통해 객체의 bounding box를 예측하려는 시도를 계속 했습니다.
만약 딥러닝을 통해 bounding box를 예측할 수 있다면, 연산이 feature와 공유 가능해져 성능을 올리 수 있게 됩니다.
실제로 Fast R-CNN은 end-to-end 학습 방식으로 합성곱 연산을 공유하며 모델의 성능과 속도를 올렸습니다.

물론, Fast R-CNN도 region proposal을 딥러닝으로 구현한 것은 아닙니다.
논문에서는 Shared computation의 중요성을 강조한 것입니다.



3. Faster R-CNN

Faster R-CNN은 RPN과 Fast R-CNN 이렇게 2개의 모듈로 이루어져 있습니다.
여기서 RPN은 deep fully convolutional network를 이용한다는 점이 이전과는 달랐습니다.
두개의 모듈을 합쳐져서 하나의 network를 형성합니다.


✔ RPN(Region Proposal Networks)

RPN은 이미지를 object proposal해줍니다.
이때, 각 proposal은 objectness score를 가집니다.

objectness score는 해당 proposal이 object인지 아닌지의 확률을 의미합니다.
나중에 objectness score를 이용해 data를 선택합니다.

RPN은 proposal network에 기존과는 달리 convolutional network를 적용했습니다.
또한, Fast R-CNN network와 연산을 공유한다고 가정하고 RPN을 구축했습니다.

region proposal을 진행하기 위해, feature map에 슬라이딩을 적용합니다.
이때, 슬라이딩을 하는 네트워크를 논문에서는 small network라고 표기합니다.
small network는 n x n으로 구성된 spatial window입니다.

spatial window를 이용하여 sliding-window 방식을 적용하면, fully_connected_layer는 모든 공간 정보들을 공유할 수 있습니다.


Anchors

sliding-window 방식을 진행하면서 각 위치당 정해진 k만큼의 proposal을 뽑아낼 수 있습니다.
이를 가능하게 한 것이 Anchor Box입니다.

하나의 anchor는 sliding window의 정 중앙에 위치하며, anchor는 9개의 크기, 비율을 가집니다.
예를 들어, W x H 크기의 feature map이 있다고 가정한다면, 총 WHk만큼의 anchor가 존재합니다.
이런 접근 방식은 두 가지 특징이 있습니다.

Translation-Invariant Anchors

혹시나 이미지에서 객체의 위치가 달라지더라도, Faster R-CNN은 같은 객체로 잘 인식합니다.
RPN은 슬라이딩 윈도우 방식을 통해 이미지 전체를 훑기 때문에 객체의 위치에 따라 좌지우지 될 확률이 적다는 의미입니다.

이런 특성은 모델 사이즈를 감소시키기도 합니다.(파라미터 감소)
이렇게 모델 사이즈가 줄어들면 작은 데이터셋(PASCAL VOC)에서 오버피팅이 위험률도 줄어들게 됩니다.

Multi-Scale Anchors as Regression References

지금까지 multi-scale 예측을 하기위한 두가지 방법이 있었습니다.

첫 번째 방법인 image pyramid를 이용하면, 성능은 좋지만 시간 소요가 크다는 단점이 있습니다.
두 번째 방법은 multi-scale sliding window가 있었습니다.

논문에서 따로 언급하진 않지만, multi-scale sliding window 또한 시간의 소요가 큽니다.

Faster R-CNN에서 사용하는 anchor box는 다양한 스케일과 비율을 위한 창의적인 구조를 가집니다.
이런 anchor box는 pyramid of anchors 구조를 가지며 비용적으로도 더 효율적입니다.

Faster R-CNN은 anchor box를 참고하여 detection을 수행합니다.
anchor box는 오로지 단일 스케일 이미지에 의존합니다. 그리고 단일 사이즈의 필터를 사용합니다.
multi-scale 특성을 가진 anchor box 덕분에 single image에서 추출된 feature map을 사용할 수 있습니다.
multi-scale anchor box는 추가 비용없이 sharing features를 하는 중요한 요소입니다.

Loss Function

anchor box를 기반으로 한 RPN network를 학습시키기 위해, 각 anchor box에 이진 분류를 시도합니다.

gt box와의 IOU가 0.3 미만인 경우, non-positive anchor로 분류합니다. 이때 positive, negative 모두에 속하지 않는 경우에는 학습에 기여하지 않습니다.

예를 들어, positive anchor 기준이 IOU 0.7이라고 한다면, IOU 0.3 ~ 0.7인 box는 학습에 기여하지 않습니다.

Fast R-CNN에서 multi loss function을 제시한 것처럼 Faster R-CNN도 multi loss function을 활용합니다.
loss는 cls와 reg로 구성되는데 이는, 각각 batch size로 정규화 됩니다.

classification loss부터 살펴보겠습니다.
L(cls)는 logloss로 구성되며, 인자로 pi, pi*이 들어갑니다. pi는 해당 box가 지정하는 구역이 object일 확률이 들어갑니다. pi*은 1 또는 0을 나타내며 1인 경우에는 object, 0은 not object를 뜻합니다.

regression loss는 pi*을 이용하여 실제 객체인 경우에만 적용하도록 했습니다.(pi*이 0인 경우 어차피 0)
L(reg)는 smooth L1이라고 논문에서 언급합니다.
ti와 ti*은 각각 모델이 예측한 bounding box, gt bounding box 좌표입니다.
그리고 classification loss와의 밸런싱을 위해 람다를 곱해줍니다.(논문에서는 람다를 10으로 정함.)

smooth L1은 Fast R-CNN에서 언급된 개념으로 Fast R-CNN 논문 리뷰에서 multi loss부분을 살펴보시면 나와있습니다.

bbox 회귀에 사용되는 파라미터는 위와 같습니다.
t(x, y, w, h)는 positive anchor와의 x, y좌표, width, height 차이 입니다.
t
(x, y, w, h)*는 ground truth와의 차이 입니다.

이렇게 만들어진 loss funciton은 어떻게 쓰이는지 살펴보겠습니다.

위 그림에서 positive anchor box, gt box가 있습니다. 이때, 학습중인 모델이 약간 벗어난 bbox를 예측했네요. gt box와 positive anchor box와의 차이가 positive anchor box와 predict bbox와의 차이와 가까워질수록 예측을 잘했다고 저자들은 생각합니다.

따라서 t_x와 같은 식이 도출된 것을 보면 anchor box를 기준으로 한 식임을 알 수 있습니다.

당연한 얘기지만, Positive Anchor Box와 Ground Truth Box는 고정된 값입니다.


Training RPNs

RPN은 SGD를 통해 end-to-end 방식으로 학습됩니다.
Object Detection 특성상 negative sample이 많기 때문에 positive sample과 비율을 맞추어 학습을 진행합니다.

예를 들어, mini batch가 256이라면 positive sample 128개, negative sample 128개를 유지합니다. 하지만, 이때 positive sample이 128개가 안된다면 negative sample로 채웁니다.
우리는 이를 Hard Negative Mining기법 이라고 부릅니다.



4. Conclusion

논문에서 RPNs에 대해 자세히 설명했습니다.
RPNs는 region proposal을 효율적이고, 성능 좋게 만든 방법입니다. 합성곱 연산을 공유하면서 사실상 연상 비용이 거의 들지 않게 했습니다.

논문에서 소개한 방식은 기존과는 달리 Object Detection 모델이 오로지 deep-learning-based Object Detector로 만들었습니다. 이는 real time detection을 가능하게 했으며, 좋은 성능을 보여주었습니다.

Faster R-CNN을 한마디로 정의하자면, Fast R-CNN + RPNs라고 볼 수 있습니다.



Reference

논문 리뷰 - Faster R-CNN 톺아보기
Object Detection and Classification using R-CNNs
[개정판] 딥러닝 컴퓨터 비전 완벽 가이드

profile
세종대학교 지능기전공학과 23

0개의 댓글