Ren, Shaoqing, et al. "Faster r-cnn: Towards real-time object detection with region proposal networks." Advances in neural information processing systems. 2015.
Abstract
Object detection 분야에서 SPPNet, Fast R-CNN과 같은 발전으로 네트워크의 실행 시간이 단축되어 왔다. 이에 따라, Region proposal 부분이 병목지점이 되었다. 이 논문에서는 Region Proposal Network(RPN)을 도입하여 비용이 거의 없는 Region proposal을 구현하였다. VGG-16 model의 경우 GPU 상에서 5fps의 프레임 속도를 가지고 좋은 object detection 정확도를 가진다.
Introduction
Fast-RCNN은 region proposal은 convolution을 공유함으로써 비용이 크게 감소하였다. 이제 region proposal을 제외하면 실시간에 가까운 속도가 가능하다. Region proposal 방법은 일반적으로 selective search를 사용한다. 하지만 selective search는 CPU 상에서 이미장 2초로 느리게 진행된다.
Convolutional feature map이 region proposal을 생성하는데 사용될 수 있다. Feature map 끝단에 region bound와 objectness를 예측하는 레이어를 추가하여 구현한다. 이로 인해 end-to-end 학습 또한 가능하다. 여기서 anchor box가 소개되는데, 다양한 스케일과 비율에서의 기준으로 사용된다.
RPN은 region proposal을 학습하므로 깊은 feature map을 쉽고 효율적으로 활용할 수 있다. 이 방법은 실제 응용을 위한 효율적인 방법일 뿐만 아니라 object detection accuracy를 향상시키는 효과적인 방법이다.
Related Work
Object Proposals
Object proposal에는 크게 두 가지 방법이 사용된다. grouping super-piexels (Selective search 등), sliding window (EdgeBox 등)이 존재하며 보통 object propsal 모듈은 detection 모듈과 분리되었다.
Deep Networks for Object Detection
Object detection의 정확도는 region proposal module에 크게 의존한다. Overfeat 방법은 fully connected layer가 single object의 box를 예측한다. MultiBox 방법은 OverFeat 방법을 일반화하여 클래스에 상관없이 여러개의 box를 예측한다. 하지만 이는 region proposal과 detection 모듈끼리 feature를 공유하지 않는다.
Faster R-CNN
Region Proposal Networks
Faster R-CNN은 크게 두 부분으로 구성된다. 첫번째는 Deep fully convolutional network, 두번째는 Fast R-CNN detector이다. 전체적인 시스템은 'attention' 매커니즘과 비슷하다.
RPN (Region proposal network)는 이미지를 입력으로 받고 직사각형 proposal과 objectness score를 출력한다. Region proposal을 위해 공유되는 convolutional feature map의 nxn spatial window를 입력으로 사용한다. 각 feature는 reg, cls layer의 입력으로 들어간다. 이 논문에서는 n=3을 사용한다.
각 Sliding window마다 동시에 최대 k개의 anchor box를 제안한다. 이를 입력으로 4k개의 reg output과 2k개의 cls output이 출력된다. Reg output은 bouding box regression 값이고, cls output은 objectness score로 object인지, 아닌지를 예측한다. Default로 3개의 비율을 가지는 anchor box로 k=9를 사용한다. 최종적으로 convolutional feature map 크기가 W X H 일 때, anchor의 개수는 W X H X k가 된다.
Multi-scale prediction에는 크게 두가지가 있다. 첫번째는 이미지 기반으로 이미지가 여러 스케일로 크기가 조저오디고 feature map이 각 스케일에 대해 계산된다. 이는 계산 수요가 많다. 두번째는 sliding window 방식으로 다른 비율의 필터를 사용하여 별도로 학습한다. Anhcor 기반 방법은 FPN으로 기반으로 하였을 때 비용 효율적이다. 제안한 방법은 여러 스케일과 비율의 anchor box를 이용하여 bounding box를 예측한다.
RPN 학습을 위해 각 anchor에 binary class label을 할당한다. Ground truth와의 IoU가 가장 큰 anchor, IoU가 0.7보다 큰 모든 anchor에게는 positive label을 부여한다. IoU가 0.3보다 작은 모든 anchor에게는 negative anchor를 부여한다. 이를통해 다음과 같이 loss function을 설계할 수 있다.
$L(\{ p_i\}, \{ t_i \}) = {1 \over N_{cls}} \sum_i{L_{cls}(p_i, p_i^*)} + \lambda {1 \over N_{reg}} \sum_i{p_i^* L_{reg}(t_i, t_i^*)}$
label $p_i^*$은 anchor가 positive일 때 1, negative일 때 0이다. $t_i$는 bounding box 4개의 parameter들이다. Classification loss는 log loss이고, Regression loss는 $L_{reg}(t_i, t_i^*) = R(t_i - t_i^*)$로 robust loss (smooth $L_1$)이다. 이는 $p_i^* = 1$일 때, positive anchor일 때만 loss를 계산하도록 하였다. 두 개 항을 맞춰주기 위해 normalize를 하는데, 이 논문에서는 cls항의 경우에는 mini-batch size로, reg항은 anchor의 개수로 normalize하였다.
Box regression parameter는 다음과 같으며, $x, x_a, x^*$는 각각 predicted box, anchor box, groundtruth box를 뜻한다.
Anchor box 종류가 k개 이면, k개의 bounding box regressor가 학습된다. 하나의 regressor가 하나의 scale/ratio에 대해 학습되며 각각의 weight는 공유하지 않는다.
Sharing Featues for RPN and Fast R-CNN
현재로는 RPN과 Fast R-CNN을 별도로 학습해야한다. 이에 두 네트워크를 동시에 학습시키는 방법을 고안한다.
1) Alternating training
RPN을 먼저 학습하고 생성된 proposals를 이용하여 Fast R-CNN을 학습하는 방법
2) Approximate joint training
매 SGD iteration에서 생성된 region proposal을 고정하고 Fast R-CNN을 학습한다. Backward는 일반적 방법을 사용한다. 하지만, proposal box의 미분값이 무시되어 근사값을 가진다.
3) Non-aproximate joint training
위에서 언급했듯이 proposal box의 미분값을 계산할 수 있도록 설계해야한다. 이는 RoI pooling layer가 미분 불가능하기 때문이다. 이 문제에 대해 RoI warping layer가 해결책이 될 수 있다.
4-Step Alternating Training
이 논문에서는 실용적 학습 방안으로 4-Step Alternating Training을 제안한다. 첫 번째로, 위에서 언급한 방식으로 RPN을 학습한다. 이 때 RPN은 ImageNet pretrained model을 사용한다. 두 번째, 생성된 proposal을 토대로 분리되어 있는 network (Fast R-CNN)을 학습한다. 이 네트워크 역시 ImageNet pretrained model을 사용한다. 세 번째, detector network가 학습이 되었으므로 이를 기반으로 다시 RPN을 fine-tuning한다. 마지막으로, 변경된 RPN을 기반으로 Fast R-CNN을 fine-tuning한다.
이 과정은 여러번 계속할 수 있지만 더 진행하여도 큰 효과를 보지 못한다.
본 논문의 구현에서는 box area는 128X128, 256X256, 512X512 3개의 scale, 1:1, 1:2, 2:1 3개의 ratio를 사용하였다. 추가로, 이미지 밖과 겹치는 anchor box는 주의해야한다. 이를 제외하고 학습해야하며 제외하면 anchor의 개수가 줄어든다. 일부의 RPN proposal은 매우 겹치기 때문에 각 cls 점수를 기반으로 NMS 정책을 사용한다. IoU threshold를 0.7로 설정하고 이미지당 2000개의 proposal을 제안한다.
'Computer Vision > Detection, Segmentation' 카테고리의 다른 글
Feature Pyramid Networks for Object Detection (0) | 2020.08.14 |
---|---|
Mask R-CNN (0) | 2020.07.03 |