Fast & Faster R-CNN 리뷰
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를 도입합니다.
3.1 Region Proposal Networks
RPN은 인풋으로 이미지를 받아서 직사각형 set의 object proposal을 스코어와 함께 반환하는 fully convolutional network입니다.
- 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 수를 줄이면서도 비선형성을 증가하는 효과가 있습니다.
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 |
댓글
이 글 공유하기
다른 글
-
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