Fast R-CNN 이해하기



Fast R-CNN이란?

Fast R-CNN는 이전 포스트에서 설명한 R-CNN을 속도 측면에서 큰 변화를 준 모델입니다. R-CNN은 2000개의 Region Proposal들이 Convolution Layer를 거쳐서, 연산 속도가 굉장히 오려걸렸었습니다. 반면 Fast R-CNN는 이런 R-CNN의 속도전 한계를 개선한 모델입니다.

fastrcnn_img_1

2-Stage Detection Model의 메커니즘 (Fast R-CNN)

  • 1) Region Proposal

  • 2) ROI Pooling Layer

[1] Region Proposal

rcnn_img_2

기존 R-CNN과 Fast R-CNN의 차이점은 ‘어떻게 Region Proposal을 해줄 것이냐?’ 입니다.

위에서 언급한것 처럼 R-CNN은 , 그 이미지를 동일한 사이즈의 크기로 Resize해준 후, CNN Model에 입력으로 넣고 지역을 분류와 Bounding Box를 예측합니다.

그렇다면 Fast R-CNN은 어떨까요?

fastrcnn_img_2

먼저 2000개의 Region Proposal를 먼저 추천받는 것은 기존 R-CNN모델과 동일합니다. 하지만 CNN Model엔 1장의 이미지가 들어가며, Feature map이 출력됩니다.

이후 출력된 Feature map에서 추천받았던 2000개의 Region Proposal의 Crop합니다.

기존 R-CNN은 2000개의 이미지가 CNN Model에 입력되어 연산이 오래걸린 반면, Fast R-CNN은 1장의 이미지가 CNN Model에 입력되어 엄청나게 많은 연산을 줄여줍니다!

[2] ROI Pooling Layer

다음은 ROI Pooling Layer에 대한 설명입니다. 맨 처음 업로드한 Fast R-CNN의 Architecture이미지를 보시면 Region Proposal부분 이후에 해당하는 Layer입니다.

fastrcnn_img_3

우리는 Region Proposal에서 Feature map에서 추천받았던 2000개의 Region Proposal의 Crop했습니다. 하지만 Region Proposal는 사이즈의 크기가 다르기 떄문에, Crop을 한다고해도 2000개마다 사이즈가 전부 다를 것입니다.

ROI Pooling Layer에서 이미지를 7x7등분 해줌으로써 모든 Region Proposal을 같은 크기로 만들어주고, 이후 Fully Connected Layer에 넣어줄 것입니다. 그렇다면 각각 사이즈가 다른 Region Proposal의 문제를 해결할 수 있습니다.


Fast R-CNN의 발전

Fast R-CNN은 기존 R-CNN보다 훨씬 빨라졌지만, 여전히 2000개의 영역을 추천받는데 시간이 걸립니다. 우리는 이 후 Region Proposal 영역 조차 Neural Network 구조로 만들어, Fast R-CNN에 Region Proposal Network(RPN)을 적용할 것입니다.

이 모델의 이름은 Faster R-CNN이며, 다음 포스트에서 다뤄보겠습니다.

Reference
  • https://arxiv.org/abs/1504.08083