Skip to content

Faster R-CNN

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

Region Proposal의 bottleneck을 해결했는데 이를 기발하게 Classification에서 사용되는 CNN weight를 재사용했다. 그리고 그 결과를 논문에서 제시한 Region Proposal Network에서 Region을 추론한다.

Category

INTRODUCTION

최신 객체 추출(Object detection) 방법은 영역 제안 방법 (Region proposal methods)과 R-CNN에 의해 구동된다.

  • Selective Search: 가장 품질이 좋다. CPU 구현시 1개의 이미지당 2초가 소비된다.
  • EdgeBoxes: 1개의 이미지당 0.2초가 소비된다. 품질과 속도의 균형이 좋다.

위 방법은 CPU 상에서 구현되어, 고성능의 GPU를 사용할 수 없다. GPU로 구현할 수 도 있지만, Down-stream detection network를 무시하는 현상이 발견된다. 이는 계산에 대한 공유 기회를 놓치게 된다. (재 조사 필요. Back-propagation이 불가능하다는 내용인듯. Down-stream detection network가 무엇인지 확인해야 한다.)

본 논문에서는 위의 단점을 보완(성능 개선)한 Region Proposal Network(RPN)를 도입한다.

RPN은 Fully convolutional network (FCN)의 일종이다. Convolution Layer에 몇가지 기능을 추가하여 RPN을 구성한다.

  • 영역 경계(Region bounds).
  • 사물성(OBjectness) 점수.

경역 제안(Detection Proposals)을 위해 종단간(End-to-End) 트레이닝이 가능하다.

RPN은 광범위한 스케일(Scales)과 종횡비(Aspect Ratios)의 영역 제안(Region Proposals) 예측(Predict)을 효과적인 방법으로 적용한다.

여러 스케일(Scales)과 종횡비(Aspect Ratios)를 참조로 제공하는 "Anchor" 박스를 소개한다. 이 방식은 회귀 참조 피라미드(Pyramid of regression references) 방식으로 간주할 수 있다. 여러 개의 스케일된 이미지나 필터를 방지할 수 있다. (Figure 1의 a, b와 같은 현상을 방지하여 c와 같이 만들 수 있다.)

Fast R-CNN과 RPN을 통합하기 위해 제안(Proposals)이 고정되어 있는 동안 아래 작업에 대하여 교대로 훈련하는 기법을 사용한다.

  • 지역 제안(Region Proposals)의 미세 조정.
  • 객체 탐지(Object Detection)의 미세 조정.

이 방식은 두 작업(RPN, Fast R-CNN)사이에 공유되는 Convolution Features와 함께 통합된 네트워크를 생성한다. (Fast R-CNN과 RPN이 통합된 네트워크는 적은 교육 시간으로 효율적인 훈련을 할 수 있음을 발견하였다.)

마지막으로 PASCAL VOC 벤치 마크를 비교한다.

  • Selective Search with Fast R-CNN
  • RPNs with Fast R-CNN

테스트는 아래와 같은 내용이 포함된다.

  • 테스트 시간에 선택 검색(Selective Search)에 대한 시간적 부담을 모두 포기한다.
  • 모든 단계를 포함한 GPU를 사용한 검출방법은 5fps의 프레임 레이트를 갖는다.
Faster-RCNN_-_figure1.jpg

Figure 1: Different schemes for addressing multiple scales and sizes. (a) Pyramids of images and feature maps are built, and the classifier is run at all scales. (b) Pyramids of filters with multiple scales/sizes are run on the feature map. (c) We use pyramids of reference boxes in the regression functions.

FASTER R-CNN

Figure 2: Faster R-CNN is a single, unified network for object detection. The RPN module serves as the 'attention' of this unified network

Faster R-CNN은 두 개의 모듈로 구성되어 있다.

  1. 영역을 제안하는 Deep Fully Convolutional Network
  2. 제안된 영역을 사용하는 Fast R-CNN

RPN 모듈은 Fast R-CNN에게 어디를 보면(Look; Attention) 되는지 알려준다.

Region Proposal Networks

  • INPUT: 크기에 상관 없는(Any size) 이미지를 입력받는다.
  • OUTPUT: 직사각형의 객체 제안(Object Proposals) 영역과 사물성(Objectness) 점수를 출력한다.
  • Fully Convolutional Network (FCN)
  • Common Convolution Network를 Fest R-CNN과 연산을 공유한다.
  • RPN 모듈은 통합 네트워크의(Unified network) 'Attention' 역할을 한다.
  • 마지막 공유 Convolutional layer의 Convolutional feature map 위에 네트워크를 삽입한다.
    • 즉, 입력으로 Convolutional feature map을 받는다.
  • Sliding window
    • RPN은 NxN 크기의 공간 윈도우를 갖는다. (본 논문에서는 N=3을 사용한다.)
    • 낮은 차원의 특징(Lower-dimensional feature)에 맵핑된다.
      • ZF: 256d
      • VGG: 512d
      • with ReLU following
    • 슬라이딩 윈도우는 아래의 두 FC(Fully Connected) Layer를 갖는다.
      • box-regression layer (REG)
      • box-classification layer (CLS)

용어 참고:

  • Region: 일반적으로 사각형 영역을 지칭한다.
  • Objectness: 객체 클래스(Object class)와 배경(Background)에 대한 구성원(Membership)임을 계산한다.
Faster-RCNN_-_figure3.jpg

Figure 3: Left: Region Proposal Network (RPN). Right: Example detections using RPN proposals on PASCAL VOC 2007 test. Our method detects objects in a wide range of scales and aspect ratios.

Anchors

  • 각 슬라이딩 윈도우에서 최대 K개의 여러 개의 영역 제안(Region Proposals)을 예측(Predict) 한다.
    • 4K개의 REG 출력: box의 위치 좌표(Coordinates).
    • 2K개의 CLS 출력: 객체(Object) 또는 비객체(Not object)의 추정 확률(Estimate probability).
      • 단순화를 위해, CLS는 2-class의 Softmax layer를 갖는다.
      • (대안점으로, K점수(Score)는 로지스틱 회기(Logistic Regression)에서 사용할 수 있다.)
  • K Proposals ==> K reference box.
  • 앵커(Anchor)는 Sliding window의 중심이며 스케일(Scale)과 종횡비(Aspect ratio)와 관련된다.
  • 각각의 슬라이딩 위치(Sliding position)에 아래의 기본 값을 사용한다.
    • 3 Scale
    • 3 Aspect ratio
    • K = 9 Anchor
Translation-Invariant Anchors
Multi-Scale Anchors as Regression References

Loss Function

Training RPNs

Sharing Features for RPN and Fast R-CNN

Implementation Details

EXPERIMENTS

Documentation

Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks (v3)
https://github.com/rbgirshick/py-faster-rcnn (Python Caffe version)
https://github.com/ShaoqingRen/faster_rcnn (Matlab version)
1506.01497v3.pdf

Troubleshooting

ImportError: No module named gpu_nms

pycaffe를 사용한 rbgirshick/py-faster-rcnn를 사용할 경우 아래와 같은 에러가 발생할 수 있다.

2016-10-06T14:25:36,721 @140718718843328 [INFORMATIONAL] Request deep learning.
Traceback (most recent call last):
  File "/home/your/Project/americano/build/resource/python/fe.py", line 2, in <module>
    import pymain
  File "/home/your/Project/americano/build/resource/python/pymain/__init__.py", line 3, in <module>
    import faster as FASTER_RCNN
  File "/home/your/Project/americano/build/resource/python/pymain/faster.py", line 18, in <module>
    from fast_rcnn.test import im_detect
  File "/home/your/Project/americano/build/resource/python/pymain/../faster-rcnn/fast_rcnn/test.py", line 17, in <module>
    from fast_rcnn.nms_wrapper import nms
  File "/home/your/Project/americano/build/resource/python/pymain/../faster-rcnn/fast_rcnn/nms_wrapper.py", line 9, in <module>
    from nms.gpu_nms import gpu_nms
ImportError: No module named gpu_nms

이 경우, Cython 관련 모듈을 설치했는지 확인하면 된다.

$ cd $FRCN_ROOT/lib
$ make

Segmentation Fault

세그먼테이션 결함관련 해결방법은 Caffe#Segmentation Fault를 참조하면 된다.

See also

Favorite site

References


  1. Faster_rcnn_-Towards_Real_Time_Object_detection-_Presentor_AndyTsai.zip 

  2. DeepLab_160923.pptx.zip 

  3. Faster_R-CNN_-_Pull_Requests_to_Tomorrow.pdf