ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [논문 리뷰] Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
    Paper Review/Computer Vision 2022. 1. 4. 17:57

    R-CNN 계열 구조 비교

     이전의 R-CNN 모델은 selective search를 통한 2000여 장의 region proposals을 CNN 모델에 넣어 학습시켜 연산량이 매우 많다. 이후 Fast R-CNN에서는 이 부분을 개선시켜 한 장의 이미지를 입력으로 받아 CNN 모델 이후 feature map에 selective search를 적용하고 분류를 위한 fc layer에서 ROI Pooling을 통해 개선했다. 하지만 이전과 마찬가지로 selective search 방법을 사용해 CNN과 별개로 수행된다. 이를 RPN과 Fast R-CNN을 결합한 Faster R-CNN을 통해 개선한다.  

     

     

     

     

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

    Abstract 

     Faster R-CNN에서는 이전 모델들과 달리 전체 이미지 convolution features을 detection network와 공유하는 Region Proposal Network(RPN)을 사용하여 region proposal 과정에서 cost를 낮춘다. RPN은 fully-convolutional network로써 각 위치에서 object bound와 objectness score를 동시에 예측한다. 또한 RPN은 Fast R-CNN에서 detection을 위해 사용하는 high quality region proposal을 생성하기 위해 end-to-end로 학습된다.

    1. Introduction 

     이 논문에서는 object detection network와 convolutional layer을 공유하는 새로운 Region Proposal Network(RPN)을 소개한다. RPN에는 두 개의 convolutional layer가 추가되는데, 하나는 각 convolutional map의 위치를 short feature vector로 인코딩하고 다른 하나는 각 convolutional map 위치에서 objectness score를 출력하고 해당 위치의 여러 척도와 비율에 상대적인 k region proposal에 대한 bound를 회귀시키기 위한 것이다. 

     따라서, RPN을 Fast R-CNN network와 통합하기 위해 proposal을 고정시키면서 region proposal에 대한 fine tuning과 object detection에 대한 fine tuning을 번갈아 하는 체계를 제안한다. 

     전체적인 과정은 다음과 같다. 

     

    1. 원본 이미지를 CNN 모델을 통해 feature map 생성
    2. feature map이 RPN에 입력되어 region proposals 생성
    3. region proposals와 feature map을 통해 ROI pooling 수행하여 고정된 크기의 feature map 획득
    4. Fast R-CNN 모델에 고정된 크기의 feature map을 입력하여 classfication과 bounding box regression 수행 

    2. Related Work

     여러 논문에서 클래스별 bounding box를 찾기 위해 deep network를 사용하는 방법을 제안했다. Overfeat 방법에서는 단일 객체를 가정하는 localization task에 대한 박스 좌표를 예측하도록 fully-connected layer가 훈련된다. 이후, fc layer는 여러 클래스별 object를 감지하기 위해 convolutional layer로 바뀐다. MultiBox 방법은 마지막 fc layer가 R-CNN object detection에 사용되는 여러 개의 box를 동시에 예측하는 네트워크로부터 region proposal을 생성한다. 

     

     공유된 convolution의 계산은 효울적이면서도 정확한 시각적 인식을 위해 많은 관심을 끌고 있다. Overfeat 논문은 classification, localization, detection을 위해 image pyramid에서 convolutional features을 계산한다. 이 과정에서 SPP가 사용된다. Fast R-CNN은 공유된 convolutional feature에 대한 end-to-end 훈련을 가능하게 한다. 

    3. Region Proposal Networks 

    RPN은 입력 이미지를 받아 fully-convolutional network를 통해 직사각형 object score(object 1, otherwise 0)와 object proposals을 출력한다. RPN은 detection network와 함께 사용된다. 즉, 하나의 CNN으로 region proposal 생성과 object detection을 수행한다. 이 논문에서는 ZFNet 또는 VGGNet를 CNN모델로 사용했다. 

     RPN 입력받은 feature map에 fully-connected되어 box regression layer와 box classification layer로 들어간다. 이 논문에서는 3x3 window을 설정했다.

    먼저 RPN 네트워크의 수행과정은 그림과 같다. feature map을 입력받아 3x3 window를 나누고 그 중심을 기준으로 각 비율에 따라 k개(9개 사용)의 anchor box를 생성한다. 이후 물체가 있는지 없는지에 대한 두가지로 classfication과 anchor box의 bounding box regression을 통해 좌표를 조정한다. 이후, 기존 feature map에 ROI pooling을 통해 fast R-CNN의 fc layer의 입력으로 들어간다. 

    3.1 Translation-invariant anchors 

     각 위치에 대해 k region proposals을 생성하기 위해 reg layer는 k box의 좌표를 인코딩하는 4k의 출력을 갖고, cls layer는 각 proposals에 대해 object/not-object 확률을 추정하는 2k의 출력을 갖는다. 2k개의 제안은 anchor라고 하는 k개의 reference box에 대해 파라미터화된다. anchor는 각 window의 중앙에 위치하고 크기 비율과 연관되어 있다. 여기서는 각 window 중심을 기준으로 k=9의 anchor(3가지의 사이즈와 3가지 종횡비)를 생성해낸다. 이 방식의 중요한 특성은 anchor 간 proposal을 계산하는 기능 측면에서 모두 translation-invariant하다는 것이다. 즉, 같은 object가 다른 위치에 있어도 그 부분에 대한 output은 동일한 값을 가지는 것을 의미한다. 

    3.2 A Loss Function for Learning Region Proposals 

    RPN 훈련을 위해 각 anchor에 이진 클래스 레이블(object or not)을 할당한다. 아래 해당하는 레이블에 positive label을 할당한다. 

     

    1. Ground-truth box와 IoU가 가장 높은 anchor 
    2. Ground-truth box와 IoU가 0.7보다 높은 anchor 

    또한, ground-truth box와 IoU가 0.3보다 낮은 경우에는 negative label을 할당한다. 그 사이 anchor들은 훈련에 사용되지 않는다. 

     

    RPN의 loss function은 다음과 같다. RPN에서는 object의 존재 여부만을 분류하지만 Fast R-CNN에서는 배경을 포함한 class를 분류한다. 

    Faster R-CNN process 

    1. Generate Anchors by Anchor Generation Layer

    원본 이미지에 대해 anchor box를 생성한다. 원본 이미지를 일정 간격의 grid cell로 나눠 각기 9개의 anchor box를 생성한다. 

    2. Class scores and Bounding box regressor by RPN 

    RPN은 feature map을 입력받아 anchor에 대한 class score, bounding box regressor를 반환한다. 

    3. Region proposal by Proposal Layer 

    class score와 bounding box regressor를 사용하여 region proposals을 추출한다. 먼저, NMS을 적용하여 object 수를 줄이고, class score를 활용해 anchor box를 추출한다. 이후, regressor를 통해 anchor box를 조정한다.  

    4. Select anchors for training RPN by Anchor Target Layer 

    Anchor target layer의 목표는 RPN 훈련에 사용할 수 있는 anchor를 선택하는 것이다. 생성된 anchor box에  대해 positive/negative 데이터를 할당한다. 

    5. ROI(Region of Interest) pooling 

    이전 과정을 통해 얻은 샘플을 사용하여 ROI pooling을 수행한다. 이를 통해 고정된 크기의 feature map이 출력되고 이는 Fast R-CNN의 입력으로 사용된다.

    feature map에서 각 region proposal에 해당하는 영역을 추출한다. region proposal의 크기와 중심 좌표를 작아진 feature map에 맞게 변경시켜 ROI projection을 수행한다. 이후 max pooling을 이용하여 고정된 크기의 feature map을 출력한다. 

    6. Train Fast R-CNN   

     입력받은 feature map을 fc layer에 입력하여 feature vector를 얻는다. 이후 feature vector를 Classifier와 Bounding box regressor에 입력하여 (class의 수가 K라고 할 때)각각 (K+1), (K+1) x 4 크기의 feature vector를 출력한다. 출력된 결과를 사용하여 Multi-task loss를 통해 Fast R-CNN 모델을 학습시킨다.

    - Multi-task loss : Classifier와 bounding box regressor를 동시 훈련시킴.

    Fast R-CNN에서 얻은 최종 predicted box에 NMS을 적용하여 최적의 bounding box를 출력한다. 

     

     

     

     

     

     

     

     

    [paper]
    https://arxiv.org/abs/1506.01497

    [참고]
    https://herbwood.tistory.com/10

     

     

Designed by Tistory.