학습 기록/Computer Vision

Faster R-CNN : Towards Real-Time Object Detection with Region Proposal Networks 설명 및 정리

@Lucas 2023. 2. 15. 16:58

 

 

최근 연구 과정에서 모델에 Region Proposal Network (RPN)을 적용해 보고자 논문을 읽고 간단하게 정리해 보기로 했다.

Faster R-CNN을 알기 전에, 이전 R-CNN과 Fast R-CNN을 가볍게 알고 가면 좋을 것 같다.

 

 

 

Fast R-CNN은 이전 R-CNN의 한계점을 극복하고자 나온 것인데, 이를 알기 전에 R-CNN에 대해 먼저 살펴보면R-CNN에서는 region proposal, classification, bounding box regression의 3가지 모듈에 대해 각각 따로따로 수행한다.

Object detection system overview

 

R-CNN은 RoI (Region of Interest) 마다 CNN 연산을 하기 때문에 속도 저하 문제점이 발생한다.

또한 R-CNN은 multi-stage 학습 과정으로 모델을 한 번에 학습시키지 못하는 한계가 있다.

 

 

이러한 문제들을 한번에 해결하고자 Fast R-CNN이 나오게 되었는데, Fast R-CNN의 큰 특징은 다음과 같다.

 

1. RoI pooling

2. region proposal 추출부터 classification, bounding box regression까지 하나의 모델에서 end-to-end 학습

 

 

위 : R-CNN architecture , 아래 : Fast R-CNN architecture

 

Fast R-CNN의 핵심 키포인트는 RoI Pooling인데, 여기서 Spatial Pyramid Pooling (SPP)가 제안된다.

 

Spatial Pyramid Pooling (SPP)

 

SPP의 역할은 이미지를 CNN에 통과시켜 피처맵을 추출하고 추출된 피처맵에서 2천 개의 region proposal을 만들어 region proposal 마다 SPPNet에 넣어 고정된 크기의 feature vector를 얻어낸다.

(자세한 수행 프로세스는 상세하게 설명한 블로그가 많으니 참고하길 바란다.)

 

 

하지만 여전히 region proposal 추출하는 과정에서 사용되는 Selective search 알고리즘은 CNN 외부에서 연산하기 때문에,

RoI (Region of Interest) 마다 CNN 연산을 하여 Bottleneck이 발생한다.

 

 

따라서 Faster R-CNN에서는 Conv feature를 Region Proposal Network (RPN)에서도 공유하여

RoI 생성도 CNN 단계에서 수행하여 속도를 향상시키고자 한다.

 

 

Faster R-CNN의 핵심적이고 심플한 아이디어는 기존 Selective search가 느린 이유가 cpu 프로세스에서 동작하기 때문에,

region proposal 생성하는 네트워크 또한 gpu 프로세스에서 동작하도록 하는 것이다.

 

RPN + Fast R-CNN

Faster R-CNN은 쉽게 설명하면 RPN + Fast R-CNN이라고 보면 된다.

 

 

RPN이란, Regional Proposal Network로 feature map을 input으로, region proposal을 output으로 하는 네트워크인데 기존 Selective search의 역할을 온전히 대체함으로써 속도 향상에 큰 기여를 했다고 본다.

 

 

RPN은 정사각형의 객체가 어디에 있는지 보여주는 이미지와 objectness score를 가져온다.

그다음 Fast R-CNN Object dectection 네트워크와 연산하는 것을 공유하는 과정이다.

 

RPN 구성

 

RPN의 입력값은 이전 CNN 모델에서 뽑아낸 피처맵이다.

어디 위치에 있는지 Region proposal을 생성하기 위해 피처맵 위에 N x N window를 sliding window 시킨다.

256차원의 피처가 생성되고, 생성된 피처는 2개의 Fully connect layer (Classification layer = cls layer , Box regression layer = reg layer)에 넣는다. 여기서 cls layer는 객체의 가능성을 추측하거나 객체가 없다고 알려주는 2k scores를 출력하고, reg layer는 k개의 박스의 coordinates를 인코딩하는 4k coordinates를 가지게 된다.

 

Basic Anchor Box

미리 정의된 형태의 경계박스 수를 앵커 박스라고 하는데, Faster R-CNN에서는 3개의 스케일과 3개의 비율로

총 k=9개의 앵커 박스를 사용했다.

 

 

RPN에 따른 Loss function은 다음과 같이 정의된다.

i는 mini-batch 안에서의 앵커 값이고, pi는 앵커 i가 Object인지에 대한 확률, pi* 는 ground truth (0, 1)

ti는 예측된 바운딩 박스에서 coordinates를 나타내는 벡터, ti* 는 positive 앵커 ground truth

 

 

 

결과적으로, RPN은 region proposal 생성에 효과적이고 정확하여 성능과 학습 속도 개선에 기여했고

Object dectection task 경우 실시간 프레임 사용이 중요한데 실시간 프레임으로 사용해도 될 정도로 좋기에

학습된 RPN은 region proposal 품질과 전반적인 객체 인식 정확도가 높아지는 장점이 있다.

 

 

Faster R-CNN에 대해 자세한 내용이 궁금하다면 본 논문을 읽어보는 것을 추천한다.

 

 

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

https://arxiv.org/abs/1506.01497

 

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

State-of-the-art object detection networks depend on region proposal algorithms to hypothesize object locations. Advances like SPPnet and Fast R-CNN have reduced the running time of these detection networks, exposing region proposal computation as a bottle

arxiv.org