이 영역을 누르면 첫 페이지로 이동
Yphy 블로그의 첫 페이지로 이동

Yphy

페이지 맨 위로 올라가기

Yphy

머신러닝 개발 블로그

Fast & Faster R-CNN 리뷰

  • 2021.12.03 19:14
  • machine learning/Article review

1.Introduction

object detection의 stage는 크게 region proposal과 classification을 차례로 수행하는 2-stage detector과 동시에 이루어지는 1-stage detector로 나눌 수 있습니다. R-CNN 계열의 localization과 classification을 따로 하고 어느정도 정확도를 보장하지만 연산량이 많고 시간(fps)이 오래걸려 실시간으로 쓰기에는 무리가 있습니다. 논문이름이 Towards real-time detection이라니 재밌네요.
지난번 R-CNN에 이어서 간략하게 Fast R-CNN에 대해 알아보고 오늘 주제인 Faster R-CNN 에 대해 알아보겠습니다.

 

2. Fast R-CNN

기존의 R-CNN에서는 selective search, svm , bb regression을 통해서 object detection 을 수행하였고 모든 학습과정이 나눠져 있었기 때문에 굉장히 많은 시간이 소요됐습니다.
SPPNet 과도 연관이 있지만, Fast R-CNN 에서는 Roi-pooling 이라는 것을 도입합니다.
기존 R-CNN이 2000여개의 RP들에 대해 convolution 연산을 했다면, input image에서 뽑은 feature map에 Roi-pooling 을 통해 얻어진 고정된 사이즈의 feature vector가 Fully connected layer을 거치게 되고 multi-task loss 를 통해 classifier와 regressor를 동시에 학습합니다. 따라서 R-CNN 처럼 두 모델을 독립적으로 학습시킬 필요가 없게 되었습니다. 
결과적으로 기존의 Region proposal에서 CNN으로 들어가는 시간을 절약했지만, 여전히 RP를 생성해내는 것 자체는 많은 시간이 소요됩니다. 또한 Fast R-CNN은 selective search를 수행하는 region proposal 부분이 외부에 존재하기 때문에 inference에서 bottleneck을 일으키며 cpu 기반으로 실행되어 여전히 느립니다.

3. Faster R-CNN : Towards Real-Time Object Detection with Region Proposal Network

Abstract

We introduce a Region Proposal Network (RPN) that shares full-image convolutional features with the detection network, thus enabling nearly cost-free region proposals
The RPN is trained end-to-end to generate high-quality region proposals, which are used by Fast R-CNN for detection. We further merge RPN and Fast R-CNN into a single network by sharing their convolutional features—using the recently popular terminology of neural networks with “attention” mechanisms, the RPN component tells the unified network where to look.

앞의 모델들(SPPnet, Fast R-CNN)이 R-CNN에 비해 많은 것들을 개선시켰지만, region proposal method는 CPU기반으로 실행되게 때문에 여전히 느립니다. 이걸 어떻게 GPU로 돌릴 수 있을까요.
논문에서는 이를 해결하기 위해 deep convolutional neural network를 도입합니다.

figure1

 

3.1 Region Proposal Networks

RPN은 인풋으로 이미지를 받아서 직사각형 set의 object proposal을 스코어와 함께 반환하는 fully convolutional network입니다. 

figure2

  • RPN은 이미지를 인풋으로 받아 rectangular object proposals(rp) 를 반환하는 네트워크다.이미지는 pretrained Imagnet으로 한 번 convolution 연산을 거쳐 피쳐맵을 반환합니다. 여기까지는 Fast R-CNN과 같습니다.
  • 이 패쳐맵 위에 한 번 더 convolution을 해주는데 nxn spatial window sliding 을 하면서(논문에서는 n=3), window마다 고정된 anchor를 생성하며 region proposal을 구합니다.
  • 이후 생성된 feature map에 1x1 convolution 을 통해, wxhx(nxnx2k), wxhx(nxnx4k) 의 2개의 ouput을 생성합니다(k는 anchor). 2k scores는 cls로 object가 속해있는지 여부 판단하며, 우측의 reg layer은 4k의 좌표입니다.
  • 1x1 convolution을 통해 parameter 수를 줄이면서도 비선형성을 증가하는 효과가 있습니다.

figure3

3.2  Anchors

각각의 sliding-window 포지션마다 multiple region proposal을 생성하며, 이 때 박스의 최대 개수는 k 입니다. 따라서 cls layer는 object가 속해있는지 여부를 판단하므로 2k scores가 나오며 reg layer는 4k 가 나옵니다.
Figure3 의 빨간 박스에서 보시다시피 박스는 sliding window를 의미하고, 개별 window마다 k개의 anchor boxs가 존재합니다. 따라서 W X H 사이즈의 컨볼루션 피쳐맵의 사이즈에서의 총 앵커 박스 **개수는 W X H X K 입니다.
anchor마다 IoU를 구해서 가장 높거나 0.7이상인 anchor는 positive, 반대로 0.3이하는 negative labeling을 하고, 중간값들은 training에 이용되지 않습니다.

오래전에 포스팅했던 글들을 옮기려니 기억이 잘 안나네요. 다음은 one stage detector 인 Yolo 논문을 포스팅해보려 합니다.

'machine learning > Article review' 카테고리의 다른 글

BERT4Rec review  (0) 2021.12.19
YOLO v1 리뷰  (0) 2021.12.16
[R-CNN] Rich feature hierarchies for accurate object detection and semantic segmentation  (0) 2021.12.03
[GoogLeNet] Going deeper with convolutions  (0) 2021.11.29
[review]Similarity_Cohen Malloy Nguyen(2019)LAZY PRICES  (0) 2020.04.04

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • BERT4Rec review

    BERT4Rec review

    2021.12.19
  • YOLO v1 리뷰

    YOLO v1 리뷰

    2021.12.16
  • [R-CNN] Rich feature hierarchies for accurate object detection and semantic segmentation

    [R-CNN] Rich feature hierarchies for accurate object detection and semantic segmentation

    2021.12.03
  • [GoogLeNet] Going deeper with convolutions

    [GoogLeNet] Going deeper with convolutions

    2021.11.29
다른 글 더 둘러보기

정보

Yphy 블로그의 첫 페이지로 이동

Yphy

  • Yphy의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 방명록

카테고리

  • 분류 전체보기 (25)
    • causal inference (1)
    • Graph (6)
    • machine learning (15)
      • Article review (10)
    • 기타 (3)
      • Kaggle (1)

최근 글

인기 글

댓글

공지사항

  • 공지 - 소개

아카이브

태그

  • node embedding
  • hybrid transformer
  • faster rcnn
  • Petfinder
  • Causal Inference
  • Object Detection
  • Vision Transformer
  • multi label classification

나의 외부 링크

정보

yphy의 Yphy

Yphy

yphy

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © yphy. Designed by Fraccino.

티스토리툴바