[2주차/임청수/논문리뷰] Faster R-CNN: Towards Real-Time ObjectDetection with Region Proposal Networks
작성자 : 17기 임청수
<요약>
최근 객체 탐지의 발전은 영역 제안(region proposal) 최적화에 달려 있습니다. Fast R-CNN도 Real time에 가까운 속도를 보였지만 영역 제안 단계에서 Computational bottleneck 문제에 따라 inference time이 많이 소요되었습니다. 그 이유는 gpu 사용이 불가능했고 cpu사용 시 이미지 당 2초의 시간이 소요되는 selective search 알고리즘을 활용했기 때문입니다. 이후 Edgeboxes라는 개선된 알고리즘을 적용했지만 여전히 이미지 당 0.2초가 걸렸고 이는 객체 탐지 전체 과정을 생각했을 때 상당한 시간입니다.
이러한 문제 해결을 위한 핵심 아이디어는 cpu 환경에서만 적용되는 영역 제안 방법을 gpu 계산이 가능하도록 하는 것입니다.
본 논문에서는 Deep CNN으로 영역 제안을 수행했고, 객체 탐지에 활용되는 CNN의 feature를 영역 제안과 공유하면서 영역 제안에 소요되는 cost가 free에 가깝도록 구현했습니다.
이러한 새로운 시스템을 RPN(region proposal network)라 부릅니다. RPN은 객체 탐지의 CNN Feature에서 layer를 추가하면서 1) 예측하고자 하는 영역의 bbox regression과 2) 객체 존재 여부 확률을 나타내는 score를 동시에 계산할 수 있습니다.
결과적으로 RPN은 End-to-end로 학습이 가능하게 되었습니다.
기존 연구는 물체마다 크기와 비율이 다르다는 문제를 해결하기 위해 (a) 이미지의 크기를 조절하여 학습하거나 (b) filter의 크기를 조절하여 학습하는 방법을 사용했습니다. 본 논문에서는 (c) Anchor box 개념을 도입하면서 다양한 크기와 비율의 multiple references를 통해 학습을 진행합니다. 따라서 더 효율적인 학습을 해낼 수 있습니다.
또한 RPN과 Fast R-CNN의 sharing feature을 위한 기법으로 alternating training 방법을 활용하여 번갈아 학습을 수행하였습니다.
기존 연구는 grouping super-pixels 기반 Selective search와 sliding windows 기반 EdgeBoxes 기법이 활용되었습니다. 이 두 가지 기법은 객체 탐지와는 독립적으로 수행되기 때문에 비효율적입니다.
R-CNN 기법은 영역제안된 box에 대하여 어떤 물체인지 분류하는 역할만 수행합니다. Multiple class specific objects를 위한 MultiBox methods는 R-CNN의 방법을 그대로 이 논문에 적용했습니다.
Faster R-CNN모델은 1) 영역 제안을 위한 Deep FCN 모듈과 2) 제안된 영역에 대해 Fast R-CNN detector를 수행하는 모듈을 포함하여 두 가지 모듈로 구성됩니다.
RPN은 하나의 이미지를 입력으로 받고 객체의 영역을 나타내는 사각형의 좌표와 존재 확률을 출력합니다.
본 논문의 모델은 RPN과 object detection Network의 Network 공유를 하고자 하여 일반적으로 많이 사용하는 ZFNet과 VGGNet을 convolution Network로 사용했습니다.
ZFNet은 5개의 conv layer를 공유할 수 있고 VGGNet은 13개의 conv layer를 공유할 수 있습니다. 공유된 Network로부터 영역 제안을 구하기 위해 마지막 shared conv layer에 작은 network를 sliding합니다. 본 논문에서는 3x3의 sliding window를 사용했고 ZFNet은 256차원, VGGNet은 512차원으로 Relu 함수와 함께 매핑됩니다.
이 feature는 동일하게 box-regression layer(reg)와 box-classification layer(cls)에 입력됩니다.
각 sliding window의 위치마다 여러 개의 영역 제안을 예측할 수 있습니다. 이때 각 위치 별 가능한 최대의 영역은 k개입니다.(anchor의 개수와 동일) 따라서 reg layer는 box 좌표를 출력하므로 총 4k개를 출력합니다. 그리고 cls layer는 존재 유무 확률 2가지에 대해 2k개의 결과값을 출력합니다. 이때 k개의 제안된 영역은 k개의 reference boxes와 동일하며 즉, anchor의 개수를 의미합니다.(reference boxes is called anchores)
하나의 anchor는 sliding window의 중심마다 정의되며 scale과 ratio에 따라 종류가 달라집니다. 본 논문에서는 3개의 scale, 3개의 ratio에 따라 총 9개의 anchor를 사용했습니다.(k=9) 따라서 예를 들어 feature map의 크기가 WH(60x40=2400)이라면 전체 anchor의 수는 WH*k(2400x9)가 됩니다. 즉, sliding window의 개수는 feature map의 크기와 같습니다.(모든 위치의 center에 대해 window가 형성되므로)
본 모델의 중요한 특성 중 하나는 번역 불변성(Translation-Invariant)입니다. 이는 어떤 함수에 대하여 Input이 달라져도 output이 동일할 수 있다는 특성을 의미합니다. 따라서 이미지 중 객체 탐지를 할 때 물체가 이동하더라도 동일한 객체로 분류할 수 있기 때문에 도움이 됩니다.(눈, 코, 입의 위치로 얼굴을 탐지하는 것과 같이 location의 변화에 따라 객체가 다르게 분류되는 경우는 단점이 될 수 있음)
이 특성은 반대의 성질을 갖는 MultiBox(not Translation-Invariant)와 비교됩니다. 특히 모델 크기와 계산 효율에서 번역 불변성을 지닐 때 더 빠름을 알 수 있습니다. 그리고 작은 데이터셋에서 오버피팅을 예방할 수 있습니다.
다양한 크기의 객체를 탐지하기 위해서는 multi scale prediction을 고려해야 합니다. 기존 연구에서 주로 활용되었던 두 가지 방법은 1) image pyramids와 2) filter pyramids입니다.
본 연구에서는 pyramid of anchors를 활용했습니다. 이 방법은 여러 개가 아닌 하나의 이미지와 하나의 필터만 활용하기 때문에 더 효율적입니다. 또한 single scale image에서 추출된 conv feature만 활용하기 때문에 scale에 대해 고려하지 않고 손쉽게 sharing feature를 할 수 있게 되었습니다.
RPN의 학습 단계에서 우리는 두 가지의 positive labeling을 수행합니다.
첫째는 하나의 ground truth box에 대해 가장 높은 IoU(interaction over Union)값을 갖는 anchor에 positive labeling을 하는 것이고(=NMS) 두 번째는 IoU값이 0.7보다 큰 anchor들에 positive labeling을 하는 것입니다. 두 번째 방법이 웬만하면 잘 적용되지만 첫 번째 방법은 예외의 경우 보완해주는 역할을 합니다.
NMS(Non maximum supression) : 하나의 ground truth에 여러 개의 영역 제안이 발생할 수 있기 때문에 그 중 가장 많이 겹치는(IoU값이 큰) 하나의 anchor만 선택하고 나머지는 무시하는 기법을 의미
Negative label은 IoU가 0.3보다 작은 경우에 labeling을 해줍니다. 그리고 그 사이의 값 즉, IoU가 0.3부터 0.7인 경우는 학습에 도움이 되지 않기 때문에 학습에 반영하지 않고 무시합니다. (threshold는 조절하기도 함) 추가로 Fast R-CNN에서 objective function에 대한 multi task loss를 함께 계산합니다.
λ는 두 loss간의 정규화를 위해 사용되며 본 논문에서는 λ=10으로 설정했을 때 가장 높은 성능을 보여주었다고 설명하고 있습니다.
Bbox는 중심의 x,y좌표, 너비와 높이를 포함한 총 4개의 좌표에 대한 예측을 수행합니다. 이때 loss는 ground truth box to predicted box와 anchor box to predicted box간의 차이가 최소가 되도록 설정합니다.
그리고 k개의 anchor들에 대해 가중치를 공유하지 않고 독립적으로 prediction을 수행하면서 다양한 크기와 비율의 객체 탐지가 가능할 수 있도록 학습합니다.
RPN은 “image-centric”이라는 샘플링 전략에 의해 학습됩니다.
하나의 이미지에 대해 모든 anchor에서 loss function을 계산할 경우 negative sample에 편향된 결과가 나오게 됩니다.(이미지에서 객체보다 배경에 해당하는 sample이 더 많기 때문)
따라서 전체 중 256개의 anchor만 추출하고 positive sample과 negative sample의 비율은 1:1로 설정합니다.(즉, positive = 128개, negative = 128개) 만약 positive sample 수가 128개보다 작을 경우 negative sample로 채웁니다.
두 network간의 feature를 공유하기 위한 기법은 1) Alternating training 2) Approximate joint training 3) Non-approximate joint training이 있습니다. 그 중 본 모델은 Alternating training을 사용합니다.
Alternating training은 본 논문에서 4단계로 수행됩니다.
Step 1) 앞서 설명한 image-centric 샘플링 전략에 따라 샘플링 후 RPN 학습을 수행합니다. 먼저 모든 layer는 사전학습된 ImageNet classification 모델에 따라 초기화됩니다. 그리고 ZFNet, VGGNet을 활용하여 fine tuning을 수행합니다.
PASCAL VOC 데이터셋에서 60000개의 mini-batch에 대해 0.001의 학습률을, 다음 20000개의 Mini-batch에 대해 0.0001의 학습률을 적용합니다. momentum은 0.9로 설정하고 weight decay는 0.0005로 설정합니다.
Step 2) step 1에서 생성된 proposal을 활용하여 Fast R-CNN으로 분리된 detection network를 학습합니다. 이때 detection network 또한 사전학습된 ImageNet 모델에 의해 초기화해줍니다. 이 시점에는 두 Network가 Conv layer를 공유하지 않습니다.
Step 3) Detection network를 활용하여 RPN training을 초기화하지만 공유된 Conv layer는 값을 바꾸지 않고 RPN의 고유한 Network만 fine tuning을 수행합니다. 따라서 두 network는 값이 고정된 conv layer를 공유하게 됩니다.
Step 4) 공유된 Conv layer는 두 network에서 동일한 값을 유지하면서 Fast R-CNN의 고유한 layer만 fine tuning을 수행합니다. 이렇게 두 network는 동일한 Conv layer를 공유하면서 통합된 Network를 형성합니다.
4단계를 반복 수행할 수 있지만 반복 수행 시 개선 효과가 미미하기 때문에 본 논문에서는 4단계만 적용하였습니다.
데이터셋은 PASCAL VOC이며 해당 데이터셋은 학습 및 검증 데이터 5000개와 테스트 데이터 5000개, 20개의 객체를 포함하고 있습니다. 그리고 metric은 mean Average Precision을 사용합니다. 실험 결과 기존 두 가지 알고리즘보다 RPN 사용 시 59.9의 가장 높은 성능을 보여줌을 알 수 있습니다.
속도를 비교했을 때 ZFNet 사용 시 17fps, VGGNet 사용 시 5fps로 ZFNet이 훨씬 빠름을 알 수 있습니다. 기존 모델은 0.5fps로 real time 활용에는 어려움이 있습니다.
MS-COCO 데이터를 사용한 경우도 유사한 결과를 나타냄을 알 수 있었습니다.
[Paper] : https://arxiv.org/abs/1506.01497
[Youtube] : https://www.youtube.com/watch?v=46SjJbUcO-c
댓글 영역