Search
Duplicate

AI/ Paper/ Feature Pyramid Networks for Object Detection(FPN)

Abstract

Feature Pyramid는 다양한 스케일에서 객체 검출을 위한 인식 시스템에서 기본 구성 요소이다. 그러나 최근 딥러닝 객체 검출기는 계산과 메모리 집약적이라는 이유로 pyramid representation을 피해왔다. 본 논문에서 우리는 deep convolutional network의 본질적인 multi-scale인 pyramidal hierarchy를 활용하여 marginal extra을 갖는 feature pyramid를 구축한다. 모든 스케일에서 고수준의 의미론적 feature 맵을 구성하기 위해 lateral connection을 갖는 top-down 아키텍쳐가 개발되었다. Feature Pyramid Network(FPN)라 부르는 이 아키텍쳐는 여러 응용에서 일반적인 feature 추출기로써 상당한 개선을 보인다. basic Faster R-CNN 시스템에서 FPN을 사용하여, 우리의 방법은 COCO detection 벤치마크에서 bell과 whistle(부가적인 기법) 없이 최첨단의 단일 모델 결과를 달성했으며, COCO 2016 챌린지 우승자들의 항목을 포함하여 모든 기존의 단일 모델 항목을 뛰어넘었다. 또한 우리의 방법은 GPU에서 6FPS로 실행될 수 있어서 mutli-scale 객체 검출에 대해 실용적이고 정확한 솔루션이다. 코드는 공개적으로 이용 가능하게 될 것이다.

1. Introduction

매우 다양한 스케일에서 객체를 인식하는 것은 computer vision에서 근본적인 도전이다. 이미지 피라미드를 기반으로 구축된 Feature Pyramids(짧게 이것을 featurized image pyramids라 부름)는 표준 솔루션의 기초를 형성한다. 그림 1(a). 이러한 피라미드는 객체의 스케일 변화가 피라미드 내 레벨 이동으로 상쇄된다는 의미에서 스케일 불변이다. 직관적으로 이 속성은 모델이 위치와 피라미드 레벨 모두에 걸쳐 스캐닝함으로써 광범위한 스케일에 걸쳐 객체를 검출할 수 있게 한다.
featurized image pyramids는 layer와 관계 없이 단일 이미지를 여러 resolution으로 resize한 다음 각각에 대해 feature를 추출하는 방법(SIFT, HOG, CNN 등)을 의미한다. 이로 인해 각 해상도에서 feature map이 만들어지고, 이것은 다양한 크기의 object를 detection 한다.
Featurized image pyramids는 hand-engineered feature의 시대에서 많이 쓰였다. 이들은 DPM 같은 객체 검출기가 좋은 결과를 달성하기 위해 dense scale 샘플링을 필요할 정도로 중요했다(예. octave 당 10개의 scale). 인식 작업에 대해 engineered features는 대부분 deep convolutional network(ConvNets)에 의해 계산된 feature로 교체되었다. 더 고수준 의미론을 표현할 수 있을 뿐만 아니라, ConvNets은 스케일에서 분산에 더 견고하여 단일 입력 스케일에서 계산된 feature로부터 인식을 용이하게 한다. (그림 1(b)) 그러나 이러한 견고성에도 불구하고 가장 정확한 결과를 얻기 위해서는 여전히 피라미드가 필요하다. ImageNet과 COCO detection 챌린지에서 최근 상위 참가자들은 모두 featurized image pyramid에 대한 multi-scale testing을 사용한다. 이미지 피라미드의 각 레벨을 featurizing 하는 것의 주요 이점은 고해상도 레벨을 포함한 모든 레벨이 의미론적으로 강한 multi-scale feature 표현을 생성한다는 것이다.
여기서 single feature map는 단일 이미지를 여러 convolutional layer에 통과시키며 축소시킨 후 마지막 layer에서 feature map을 생성하여 예측을 수행하는 방식을 의미한다.
그럼에도 불구하고 이미지 피라미드의 각 레벨을 featurizing하는 것은 분명한 한계를 갖는다. 추론 시간이 상당히 증가하여(예: 4배), 실제 응용에는 실용적이지 않다. 게다가 이미지 피라미드에서 deep network를 end-to-end로 학습하는 것은 메모리의 측면에서 실현 불가능하므로, 이용되더라도 이미지 피라미드는 test time에만 사용되어 train/test 시간 추론 사이의 불일치를 만든다. 이러한 이유로 Fast와 Faster R-CNN은 기본 설정에서 featurized 이미지 피라미드를 사용하지 않았다.
그러나 multi-scale feature 표현을 계산하는 방법은 이미지 피라미드만 사용되지 않는다. deep ConvNet은 레이어별로 feature hierarchy layer를 계산하고 sub-sampling layer로 인해 feature 계층구조는 본질적으로 multi-scale, 피라미드 형태를 갖는다. 이 네트워크 내 feature 계층은 다양한 공간 해상도의 feature map을 생성하지만, 서로 다른 depth로 인한 큰 의미론적 갭을 도입한다. 고해상도 map은 객체 인식을 위한 표현력을 해치는 저해상도 feature를 갖는다.
Single Shot Detector(SSD)는 ConvNet의 pyramidal feature hierarchy를 마치 featurized image pyramid인 것처럼 사용하려는 초기 시도 중 하나이다(그림 1(c)). 이상적으로 SSD-스타일 피라미드는 forward pass에서 계산된 다양한 레이어의 multi-scale feature map을 재사용하여 추가 비용 없이 구현될 수 있다. 그러나 저수준 feature 사용을 피하기 위해 SSD는 이미 계산된 레이어를 재사용하지 않고 대신, 네트워크 내에서 상위에서 시작하여 여러 새로운 레이어를 추가하여 피라미드를 구축한다(예: VGG net의 conv4_3). 따라서 feature 계층구조의 더 높은 해상도 맵을 재사용할 기회를 놓친다. 우리는 이러한 맵들이 작은 객체를 검출하는데 중요함을 보인다.
pyramidal feature hierarchy는 featurized image pyramid와 single feature map을 합친 방식으로 single feature map처럼 단일 이미지를 convolution layer를 통과시키지만, 각 레이어에서 feature map을 생성하며 예측을 수행한다. 이로인해 초기 레이어에서는 높은 해상도의 저수준 특징을, 후반부 레이어에서는 낮은 해상도의 고수준 특징을 추출할 수 있다.
이 논문의 목표는 ConvNet의 feature 계층구조의 피라미드 모양을 자연스럽게 활용하면서 모든 스케일에서 강력한 의미론을 갖는 feature 피라미드를 만드는 것이다. 이 목표를 달성하기 위해, 우리는 top-down 경로와 lateral connection을 통해 저해상도의 의미론적으로 강한 feature와 고해상도의 의미론적으로 약한 feature를 결합하는 아키텍쳐에 의존한다(그림 1(d)). 결과적으로 모든 레벨에서 풍부한 의미론을 가지며 단일 입력 이미지 스케일에서 빠르게 구축될 수 있는 feature pyramid가 된다. 다시 말해 우리는 표현력, 속도, 메모리의 희생없이 featurized 이미지 피라미드를 대체하는데 사용할 수 있는 네트워크 내부 feature pyramid를 어떻게 생성하는지를 보인다.
top-down과 skip connection을 채택한 유사한 아키텍쳐가 최근 연구에서 인기를 얻었다. 그들의 목표는 예측이 만들어질 고해상도의 단일 고수준 feature 맵을 생성하는 것이다.(그림 2 상단). 반면에 우리 방법은 각 레벨에서 독립적으로 예측(객체 검출)은 만들어지는 feature pyramid로 아키첵쳐를 활용한다(그림 2 하단). 우리 모델은 이전 연구에서 탐구되지 않았던 featurized image pyramid를 반영한다.
이 논문인 feature pyramid network(FPN)은 pyramidal feature hierarchy의 방식을 확장하여 해당 구조를 bottom으로 두고, 그 결과를 다시 upsampling 하여 확장하는 top-down 구조를 두고, 각 top-down layer에서는 bottom-up에서의 정보를 lateral connection을 통해 연결하여 layer 별로 예측을 수행한다. 이것은 pyramidal feature hierarchy와 유사하게 top-down의 초기 layer에서는 저해상도의 고수준 feature를 추출하고, top-down의 후반부 layer에서는 고해상도의 저수준 feature를 추출한다. 개념만 보면 UNet과도 비슷해 보이는데, UNet은 마지막에 한 번만 예측하는데 반면, FPN은 각 layer에서 예측을 수행한다는 점에 차이가 있다. 따라서 UNet은 pixel-level로 단일 예측을 해야 하는 경우에 많이 쓰이고, FPN은 여러 scale이 존재하는 object detection 분야에 주로 쓰임.
우리는 Feature Pyramid Network(FPN)이라 불리는 우리의 방법을 다양한 detection과 segmentation 시스템에서 평가한다. 부가적인 기법 없이 우리는 FPN과 basic Faster R-CNN detector 만을 기반하여 도전적인 COCO detection 벤치마크에서 최첨단 단일 모델 결과를 리포트하며, 기존의 모든 heavily-engineered 단일 모델 경쟁 우승자들의 성과를 뛰어 넘었다. ablation 실험에서 우리는 bounding box proposal에 대해 FPN이 Average Recall(AR)을 8.0 점으로 매우 증가시키는 것을 발견했다. 객체 검출에 대해 ResNet 기반의 강력한 단일-스케일 Faster R-CNN baseline에 대해 COCO-style Average Precision(AP)를 2.3점, PASCAL-style AP를 3.8점 향상시켰다. 우리의 방법은 또한 mask proposal로 쉽게 확장될 수 있고 image pyramid에 크게 의존하는 최첨단 방법들에 비해 instance segmentation AR과 속도를 모두 개선한다.
또한 우리의 피라미드 구조는 모든 scale에서 end-to-end로 학습 가능하고 train/test 시간에 일관성있게 사용될 수 있다. 이것은 이미지 피라미드를 사용할 경우 메모리 측면에서 실현 불가능일 수 있다. 결과적으로 FPN은 기존의 모든 최첨단 방법 보다 더 높은 정확도를 달성한다. 게다가 이러한 개선은 단일 스케일 baseline에 비해 테스트 시간을 증가 시키지 않고 달성되었다. 우리는 이러한 발전이 미래 연구와 응용을 촉진할 것이라 믿는다. 우리의 코드는 공개적으로 접근 가능할 것이다.

2. Related Work

Hand-engineered features and early neural networks.
SIFT features는 원래 scale-space extrema에서 추출되어 feature point matching에 사용되었다. HOG features와 이후 SIFT features 도 전체 이미지 피라미드에 걸쳐 dense로 계산되었다. 이러한 HOG와 SIFT 피라미드는 이미지 분류, 객체 검출, 인간 포즈 추정 등 다양한 작업에서 사용되었다. 그들은 또한 featurized 이미지 피라미드를 빠르게 계산하는데도 상당한 관심을 가졌었다. Dollar et al은 먼저 (scale에서) sparsely 샘플된 피라미드를 계산한 다음 누락된 레벨을 보간하여 빠른 피라미드 계산을 시연했다. HOG와 SIFT 이전에 ConvNet을 이용한 얼굴 인식에 관한 초기 연구에서는 다양한 스케일에서 얼굴을 인식하기 위해 이미지 피라미드에 얕은 네트워크를 적용했다.
Deep ConvNet object detectors.
최신 deep ConvNets의 발전에 따라 OverFeat과 R-CNN 같은 객체 검출기는 정확도에서 드라마틱한 개선을 보였다. OverFeat는 초기 신경망 얼굴 인식기와 유사한 전략을 채택하여 이미지 피라미드에서 ConvNet을 sliding widnow detector로 적용했다. R-CNN은 region proposal-based 전략을 채택했다. 여기서 각 proposal은 ConvNet으로 분류되기 전에 scale-normalized 되었다. SPPnet은 이러한 region-based 검출기가 단일 이미지 스케일에서 추출된 feature map에서 훨씬 더 효율적으로 적용될 수 있음을 시연했다. Fast R-CNN과 Faster R-CNN 같은 최근의 더 정확한 검출 방법들은 정확도와 속도 사이의 좋은 trade-off을 제공하기 때문에 단일 스케일에서 계산된 feature를 사용할 것을 주장한다. 그러나 multi-scale 검출은 여전히 더 나은 성능을 보이며, 특히 작은 객체에 대해 그렇다.
Methods using multiple layers.
최근 많은 접근법들이 ConvNet의 다양한 레이어를 사용하여 detection과 segmentation을 개선한다. FCN은 의미론적 segmentation을 계산하기 위해 여러 scale에 걸쳐 각 카테고리의 부분 점수를 합산한다. Hypercolumns는 객체 instance segmentation에 대해 유사한 방법을 사용한다. HyperNet, ParseNet, ION 같은 다른 접근은 예측을 계산하기 전에 여러 레이어의 feature를 concatenate 하는데, 이것은 transformed feature를 합산하는 것과 동등하다. SSD와 MS-CNN은 feature나 점수를 결합하지 않고 feature 계층 구조의 여러 레이어에서 객체를 예측한다.
U-Net과 segmentation에 대해 Sharp Mask, 얼굴 인식에 대해 Recombinator 네트워크와 keypoint 추정에 대한 Stacked Hourglass network를 포함하여 해상도와 의미론적 레벨에 걸쳐 low-level feature 맵을 연관시키는 lateral/skip connection을 활용하는 최근 방법들이 있다. Ghiasi et al은 점진적으로 segmentation을 조정하기 위해 FCN을 위한 Laplacian 피라미드 표현을 제시했다. 이러한 방법들이 피라미드 형태의 아키텍쳐를 채택했음에도 불구하고 이것들은 예측이 각 레벨에서 독립적으로 만들어지는 featureized iamge pyramid와 다르다. (그림 2 참조). 실제로 그림 2(상단)에서 피라미드 아키텍쳐에 대해 multiple scale에 걸쳐 객체를 인식하기 위해 여전히 이미지 피라미드가 필요하다.

3. Feature Pyramid Networks

우리의 목표는 low 레벨에서 high 레벨까지 의미론을 갖는 ConvNet의 피라미드형 feature 계층 구조를 활용하여 전체적으로 high-level 의미론을 갖는 feature 피라미드를 구축하는 것이다. 그 결과 Feature Pyramid Network는 범용적이며, 이 논문에서 우리는 sliding window proposer(Region Proposal Network, 줄여서 RPN)과 region-based detectors(Fast R-CNN)에 초점을 맞춘다. 또한 섹션 6에서 FPN을 instance segmentation proposal로 일반화한다.
우리의 방법은 임의의 크기의 단일-스케일 이미지를 입력으로 취하고 fully convolutional 방식으로 multiple level에서 비례적 크기의 feature maps을 출력한다. 이 절차는 backbone convolutional 아키텍쳐에 독립적이고 이 논문에서는 ResNet을 사용한 결과를 제시한다. 우리의 피라미드의 구성은 bottom-up pathway, top-down pathway와 lateral connection를 포함하며 이는 다음에 소개된다.
Bottom-up pathway.
Bottom-up pathway는 backbone ConvNet의 feed-forward 계산이다. 이것은 2의 scaling step을 가진 여러 스케일의 feature map으로 구성된 feature 계층 구조를 계산한다. 종종 동일한 크기의 출력 맵을 생성하는 많은 레이어가 있고 우리는 이러한 레이어들이 동일한 네트워크 스테이지에 있다고 한다. 우리의 feature 피라미드에서는 각 스테이지마다 하나의 피라미드 레벨을 정의한다. 우리는 각 스테이지의 마지막 레이어의 출력을 레퍼런스 feature map 집합으로 선택한다. 이것은 우리의 피라미드를 풍부하게 만든다. 각 스테이지의 가장 깊은 레이어가 가장 강력한 feature를 가져야 하므로 이 선택은 자연스럽다.
구체적으로 ResNet의 경우 우리는 각 스테이지의 마지막 residual block이 출력하는 feature 활성화를 사용한다. 우리는 이러한 마지막 residual block의 출력을 conv2, conv3, conv4, conv5 출력에 대해 {C2,C3,C4,C5}\{C_2, C_3, C_4, C_5\}로 표기하고 이들은 입력 이미지에 대해 {4,8,16,32}\{4, 8, 16, 32\} 픽셀의 stride를 갖는다. 우리는 큰 메모리 사용량 때문에 conv1을 피라미드에 포함시키지 않는다.
Top-down pathway and lateral connections.
top-down pathway는 공간적으로 coarser 이지만 의미론적으로 더 강력한 상위 피라미드 레벨의 feature map을 업샘플링하여 더 높은 해상도의 feature를 hallucinates 한다. 이러한 feature는 lateral connection을 통해 bottom-up pathway의 feature를 사용하여 강화된다. 각 lateral connection은 bottom-up pathway에서 동일한 공간 크기를 가진 feature map을 병합한다. bottom-up feature map은 더 낮은 수준의 의미론을 갖지만, 더 적은 횟수로 sub-sampling 되었기 때문에 활성화는 더 정확하게 위치된다.
그림 3은 top-down feature map을 구성하는 빌딩 블록을 보여준다. coarser 해상도의 feature map에서 우리는 공간적 해상도를 2배로 업샘플링한다(단순성을 위해 nearest neighbor upsampling을 사용). upsampled 맵은 그 다음 해당하는 bottom-up map(채널 차원을 축소하기 위해 1x1 convolutional 레이어를 거침)과 element-wise 덧셈으로 병합된다. 이 절차는 가장 미세한 해상도 맵이 생성될 때까지 반복된다. 반복을 시작하기 위해 우리는 간단히 C5C_5에 1x1 convolutional layer를 붙여 coarest 해상도 맵을 생성한다. 마지막으로 각 병합된 맵에 3x3 convolution을 추가하여 최종 feature map을 생성하는데 이것은 upsampling의 aliasing 효과를 축소한다. 이 최종 feature map의 집합은 {P2,P3,P4,P5}\{P_2, P_3, P_4, P_5\}라 부르며 각각 동일한 공간 크기를 가진 {C2,C3,C4,C5}\{C_2, C_3, C_4, C_5\}에 대응한다.
전통적인 featurized image 피라미드에서와 같이 피라미드의 모든 레벨이 공유된 classifier/regressor를 사용하기 때문에, 우리는 모든 feature map에서 feature 차원(채널의 수, dd로 표기됨)을 고정한다. 이 논문에서 d=256d = 256으로 설정하여 모든 추가 convolutional 레이어가 256256-채널 출력을 갖는다. 이러한 추가 레이어에는 비선형성은 없으며 우리는 이것은 경험적으로 미미한 영향을 미친다는 것을 발견했다.
단순성은 우리 설계의 중심이고 우리는 우리의 모델이 많은 설계 선택에 견고하다는 것을 발견했다. 우리는 더 영리한 블록(connection으로 multi-layer residual block)을 실험했고 약간 더 나은 결과를 관찰했다. 더 나은 connection 모듈을 설계하는 것은 이 논문의 초점이 아니므로 우리는 위의 설명한 간단한 설계를 고른다.

4. Applications

우리 방법은 deep ConvNets 내부에 feature 피라미드를 구축하기 위한 일반적인 솔루션이다. 다음에서 우리는 bounding box proposal 생성을 위해 RPN에, 객체 검출을 위해 Fast R-CNN에 우리의 방법을 적용한다. 우리 방법의 단순성과 효과성을 시연하기 위해 원본 시스템을 우리의 feature 피라미드에 적용할 때 최소한의 수정만 가한다.

4.1. Feature Pyramid Networks for RPN

RPN은 sliding-window class-agnostic 객체 검출기이다. 원래의 RPN 설계에서 단일 스케일 convolutional feature map의 위에 dense 3x3 sliding windows로 작은 subnetwork가 평가되어 object/non-object 이진 분류와 bounding box 회귀를 수행한다. 이것은 3x3 convolutional 레이어 뒤에 분류와 회귀를 위한 2개의 sibling 1x1 convolution이 따라오는 형태로 구현되며 이것을 network head라 부른다. object/non-object 기준과 bounding box 회귀 목표는 anchor라 불리는 레퍼런스 박스의 집합 측면에서 정의된다. 앵커는 다양한 형태의 객체를 커버하기 위해 multiple 사전 정의된 스케일과 종횡비를 갖는다.
단일 스케일 feature map을 우리의 FPN으로 대체하여 RPN을 적용한다. 우리는 feature 피라미드의 각 레벨에 동일한 설계(3x3 conv와 2개의 sibling 1x1 conv)의 head를 우리의 붙인다. head가 모든 피라미드 레벨의 모든 위치에 대해 dense로 slide하기 때문에, 특정 레벨에서 multi-scale 앵커를 가질 필요는 없다. 대신 우리는 각 레벨에 단일 스케일의 앵커를 할당한다. 공식적으로 우리는 {P2,P3,P4,P5,P6}\{P_2, P_3, P_4, P_5, P_6\}에 각각 {322,642,1282,2562,5122}\{32^2, 64^2, 128^2, 256^2, 512^2\}의 픽셀 영역의 앵커를 정의한다. [29]에서와 같이 우리도 각 레벨에 여러 종횡비 {1:2,1:1,2:1}\{1:2, 1:1, 2:1\}을 사용한다. 따라서 피라미드에 대해 총 15개의 앵커가 존재한다.
우리는 [29]와 같이 앵커에 대한 학습 라벨을 ground-truth bounding box와 Intersection-over_Union(IoU) 비율을 기반으로 할당한다. 공식적으로 앵커는 주어진 ground-truth box에 대해 가장 높은 IoU를 갖거나 어떤 ground-truth box와 0.7 이상의 IoU를 가지면 positive 라벨을 할당하고, 모든 ground-truth box에 대해 IoU가 0.3보다 낮으면 negative 라벨을 할당한다. ground-truth box의 스케일은 피라미드의 레벨에 명시적으로 할당하는데 사용되지 않는다. 대신 ground-truth box는 이미 피라미드 레벨에 할당된 앵커와 연관된다. 따라서 우리는 [29]에서 추가적인 규칙을 도입하지 않는다.
우리는 head의 파라미터가 모든 feature 피라미드 레벨에서 공유된다는 점에 주목한다. 우리는 또한 파라미터를 공유하지 않는 대안을 평가하고 유사한 정확도를 관찰했다. 파라미터 공유의 좋은 성능은 우리의 피라마드의 모든 레벨이 유사한 의미론적 레벨을 공유한다는 것을 나타낸다. 이 장점은 featurized 이미지 피라미드를 사용하는 것과 유사하며, 여기서 common head 분류기는 임의의 이미지 스케일에서 계산된 feature에 적용될 수 있다.
위의 적용을 통해 RPN은 [29]에서와 같은 방식으로 우리의 FPN과 함께 자연스럽게 학습되고 테스트 된다. 우리는 실험 섹션에서 구현 상세를 자세히 설명한다.

4.2. Feature Pyramid Networks for Fast R-CNN

Fast R-CNN은 Region-of-Interest(RoI) pooling을 사용하여 feature를 추출하는 region-based 객체 검출기이다. Fast R-CNN은 일반적으로 단일 스케일 feature map에서 수행된다. 이것을 우리의 FPN과 함께 사용하기 위해 우리는 다양한 스케일의 RoI를 피라미드 레벨에 할당해야 한다.
우리는 우리의 feature 피라미드를 마치 이미지 피라미드에서 생성된 것처럼 본다. 따라서 우리는 이미지 피라미드에서 실행될 때의 region-기반 검출기의 할당 전략을 채택할 수 있다. 공식적으로 우리는 width ww와 height hh(네트워크에 입력되는 이미지 상에서)를 가진 RoI를 우리의 feature 피라미드의 PkP_k 레벨에 다음과 같이 할당한다.
k=k0+log2(wh/224)(1)k = \lfloor k_0 + \log_2(\sqrt{wh}/224)\rfloor \tag{1}
여기서 224224는 표준 ImageNet pre-training 크기이고, k0k_0w×h=2242w \times h = 224^2을 갖는 RoI가 매핑되어야 하는 타겟 레벨이다. C4C_4를 단일-스케일 feature 맵으로 사용하는 ResNet-기반 Faster R-CNN 시스템과 유사하게 우리는 k0k_044로 설정한다. 직관적으로 방정식 (1)은 RoI의 스케일이 작아지면 (예: 2242241/21/2) 더 미세한 해상도 레벨(예: k=3k=3)로 매핑되어야 한다는 것을 의미한다.
우리는 모든 레벨의 모든 RoI에 predictor head(Fast R-CNN에서 head는 class-specific 분류기와 bounding box 회귀)를 붙인다. 다시 말하지만 head는 레벨에 관계 없이 모두 파라미터를 공유한다. [16]에서 ResNet의 conv5 레이어(9개 레이어 deep subnetwork)는 conv4 feature 위의 head로 채택되지만 우리의 방법은 이미 conv5를 활용하여 feature 피라미드를 구성한다. 따라서 [16]과 달리 우리는 간단히 RoI pooling을 채택하여 7x7 feature를 추출하고, 최종 분류와 bounding box 회귀 레이어 이전에 2개의 은닉 1,024차원 fully-connected(fc) 레이어(각각 ReLU가 따르는)을 추가한다. 이러한 레이어는 ResNet에서 사용가능한 pre-trained fc 레이어가 없기 때문에 무작위로 초기화 된다. 표준 conv5 head에 비교하여 우리의 2-fc MLP head가 가벼운 가중치를 갖고 더 빠르다.
이러한 적용에 기반하여 우리의 feature 피라미드의 상단에 Fast R-CNN을 학습하고 테스트할 수 있다. 구현 상세는 실험 섹션에서 제공한다.

5. Experiments on Object Detection

우리는 80개 카테고리 COCO detection 데이터셋에서 실험을 수행한다. 우리는 80k 학습 이미지와 35k 검증 이미지의 부분 집합(trainval135k)의 합집합을 사용하여 학습하고, 검증 이미지의 5k 부분 집합(minival)에 대해 ablation을 리포트한다. 우리는 또한 드러나는 라벨이 없는 표준 테스트 셋(test-std)에 대한 최종 결과도 리포트한다.
일반적인 관행에 따라, 모든 네트워크 backbone은 ImageNet1k classification set에서 pre-trained 된 다음 detection 데이터셋에서 fine-tuned 된다. 우리는 공개적으로 사용 가능한 pre-trained ResNet-50과 ResNet-101 모델을 사용한다. 우리의 코드는 Caffe2를 사용하여 py-faster-rcnn을 재구현한 것이다.

5.1. Region Proposal with RPN

우리는 [21]의 정의를 따라 COCO-style Average Recall(AR)과 small, medium, large object에 대해 AR(ARs,ARm,ARlAR_s, AR_m, AR_l)을 평가한다. 우리는 이미지당 100과 1000 proposal에 대한 결과(AR100,AR1kAR^{100}, AR^{1k})를 리포트 한다.
Implementation details.
Table 1에서 모든 아키텍쳐는 end-to-end로 학습된다. 입력 이미지는 짧은 쪽이 800 픽셀을 갖도록 resize 된다. 우리는 8개 GPU에서 동기화된 SGD 학습을 채택한다. mini-batch는 GPU 당 2개 이미지와 이미지당 256개 anchor를 포함한다. 우리는 0.0001의 weight decay와 0.9의 momentum을 사용한다. learning rate는 첫 30k 미니배치에서 0.02이고, 다음 10k에 대해 0.002이다. 모든 RPN 실험(baseline을 포함하여)을 위해 다르게 학습하는 동안 이미지 바깥에 존재하는 anchor 박스를 포함한다. 이것은 [29]에서 이러한 앵커 박스를 무시한 것과 다르다. 다른 구현 상세는 [29]를 따른다. COCO에서 8개의 GPU에서 FPN을 사용하여 RPN을 학습하는데는 약 8시간이 걸린다.

5.1.1 Ablation Experiments

Comparisons with baselines.
원래의 RPN과 공정한 비교를 위해 우리는 2가지 baseline(Table 1(a, b))를 실행한다. 하나는 C4C_4의 single-scale map([16]과 동일한)을 사용하고, 다른 하나는 C5C_5를 사용했다. 둘 다 우리의 방식과 동일한 하이퍼파라미터를 사용한다. 여기에는 {322,642,1282,2562,5122}\{32^2, 64^2, 128^2, 256^2, 512^2\} 5개 scale anchor를 포함된다. Table 1 (b)는 (a)에 대해 이점이 없음을 보이는데, 이는 coarser resolution과 더 강력한 의미론 사이에 trade-off가 있기 때문에 single higher-level feature map은 충분하지 않음을 나타낸다.
RPN에서 FPN을 배치하면 AR1kAR^{1k}56.356.3으로 개선되는데(Table 1 (c)), 이것은 single-scale RPN baseline(Table 1(a))에 대해 8.08.0점 증가한 것이다. 또한 small object에 대한 성능(ARs1kAR_s^{1k})은 12.912.9점의 큰 폭으로 향상된다. 우리의 pyramid representation은 object scale 변화에 대해 RPN의 견고성을 크게 개선한다.
How important is top-down enrichment?
Table 1 (d)는 top-down pathway 없는 우리의 feature pyramid의 결과를 보인다. 이 수정으로 1x1 lateral connection 뒤에 3x3 convolution이 bottom-up pyramid에 추가된다. 이 아키텍쳐는 pyramidal feature hierarchy의 재사용 효과를 시뮬레이션한다(그림 1(b))
Table 1(d)의 결과는 RPN baseline과 비슷한 수준이며 우리의 결과에 크게 뒤떨어진다. 우리는 이것이 bottom-up pyramid에서 서로 다른 레벨 사이의 큰 의미론적 갭 때문일 것으로 추측한다(그림 1(b)). 특히 매우 깊은 ResNet의 경우에 그렇다. 우리는 또한 head의 파라미터를 공유하지 않고 Table 1(d)의 변종을 평가했지만 유사하게 퇴화된 성능을 관찰했다. 이 이슈는 레벨별 head만으로 간단히 해결될 수 없다.
How important are lateral connections?
Table 1(e)는 1x1 lateral connection이 없는 top-down feature pyramid의 ablation 결과를 보여준다. 이 top-down pyramid는 강력한 의미론적 feature와 미세한 해상도를 갖는다. 그러나 우리는 이러한 feature의 위치가 정밀하지 않다고 주장한다. 왜냐하면 이러한 map은 여러번 downsampling과 upsampling을 거쳤기 때문이다. feature들의 더 정밀한 위치는 lateral connection을 통해 bottom-up 맵의 더 미세한 레벨에서 top-down 맵으로 직접 전달될 수 있다. 결과적으로 FPN은 Table 1(e) 보다 1010 점 높은 AR1kAR^{1k}를 갖는다.
How important are pyramid representations?
pyramid representation에 의지하는 대신 P2P_2(즉 우리의 피라미드에서 가장 미세한 레벨)의 가장 높은 해상도와 강력한 의미론적 feature 맵에 head를 붙일 수 있다. single-scale baselin과 유사하게 우리는 모든 앵커를 P2P_2 feature map에 할당한다. 이 변종(Table 1(f))는 baseline 보다 낫지만 우리의 접근 보다는 뒤쳐진다. RPN은 고정된 window 크기를 갖는 sliding window detector이므로 피라미드 레벨에 대한 스캐닝은 scale 변이에 대한 견고성을 증가시킨다.
또한 우리는 P2P_2를 단독으로 사용하면 큰 공간적 해상도로 인해 더 많은 앵커(750k, Table 1(f))가 생성된다는 점에 주목한다. 이 결과는 더 많은 수의 앵커만으로는 정확도를 개선하는데 충분하지 않다는 것을 시사한다.

5.2. Object Detection with Fast/Faster R-CNN

다음으로 region-based(non-sliding window) detector에 대한 FPN을 조사한다. 우리는 COCO-style Average Precision(AP)와 PASCAL-style AP(0.5의 단일 IoU threshold에서)로 object detection을 평가한다. 우리는 또한 [21]의 정의를 따라 small, medium, large 크기(즉 APs,APm,APlAP_s, AP_m, AP_l)의 object에서 COCO AP를 리포트한다.
Implementation details.
입력 이미지는 더 짧은 쪽이 800픽셀을 갖도록 resize 된다. 동기화된 SGD는 8개 GPU에서 모델을 학습하는데 사용된다. 각 미니배치는 GPU 당 2개 이미지와 이미지당 512개 RoI를 포함한다. 우리는 0.0001의 weight decay와 0.9의 momentum을 사용한다. learning rate는 처음 60k 미니배치에 대해 0.02이고 다음 20k에 대해 0.002이다. 우리는 학습을 위해 이미지당 2000 RoI, 테스트를 위해 1000 RoI 를 사용한다. FPN을 사용하는 Fast R-CNN을 학습하는데는 COCO 데이터셋에서 약 10시간이 걸린다.

5.2.1 Fast R-CNN (on fixed proposals)

region-based detector에 대한 FPN의 효과를 더 잘 조사하기 위해, 우리는 고정된 proposal 집합에대해 Fast R-CNN의 ablation을 수행한다. 우리는 FPN에서 RPN에 의해 계산된 proposasl을 freeze한다(Table 1(c)), 이것은 detector가 인식해야 할 small object에 대해 좋은 성능을 갖기 때문이다. 단순서을 위해 명시된 경우를 제외하고 Fast R-CNN과 RPN 사이에 feature를 공유하지 않는다.
ResNet 기반 Fast R-CNN baseline으로써 [16]을 따라 14x14의 출력 크기의 RoI pooling을 채택하고 모든 conv5 레이어를 head의 은닉 레이어로 붙인다. 이것은 Table 2(a)에서 31.931.9의 AP를 제공한다. Table 2(b)는 우리 아키텍쳐의 head와 유사하게 2개 은닉 fc 레이어를 가진 MLP head를 활용하는 baseline이다. 이것은 28.828.8의 AP를 얻고, 2-fc head가 Table 2(a)의 baseline에 대해 임의의 직교적 이점을 제공하지 않는다는 것을 나타낸다.
Table 2(c)는 Fast R-CNN에서 우리의 FPN의 결과를 보인다. Table 2(a)의 baseline과 비교하여, 우리의 방법은 AP를 2.02.0점, small object AP를 2.12.1점 개선한다. 2fc head를 채택한 baseline(Table 2(b))과 비교하여, 우리의 방법은 AP를 5.15.1점 개선한다. 이러한 비교는 우리의 feature pyramid가 region-based object detector를 위한 single-scale feature보다 우수함을 나타낸다.
Table 2(d)와 (e)는 top-down connection을 제거하거나 lateral connection을 제거하는 것이 뒤쳐지는 결과를 이끄는 것을 보인다. 이것은 RPN에 대해 위의 sub section에서 관찰한 것과 유사하다. 주목할만한 점은 top-down connection을 제거하는 것(Table 2(d))이 정확도를 매우 감소시킨다는 것이다. 이것은 Fast R-CNN이 고해상도 map에서 low-level feature를 사용하는 것으로 인해 어려움을 겪는다는 것을 시사한다.
Table 2(f)에서 우리는 P2P_2의 single finest scale feature map에 대해 Fast R-CNN을 채택한다. 그 결과 (33.433.4 AP)는 모든 피라미드 레벨을 사용하는 것(Table 2(c), 33.933.9 AP)보다 약간 나쁘다. 우리는 이것이 RoI pooling이 warping-like 연산과 유사해서 region의 scale에 덜 민감하기 때문이라고 주장한다. 이 변종의 좋은 정확도에도 불구하고, 이것은 {Pk}\{P_k\}의 RPN proposal에 기반하므로 이미 피라미드 representation의 이점을 얻은 것이다.

5.2.2 Faster R-CNN (on consistent proposals)

위에서 우리는 detector를 조사하기 위해 고정된 proposal 집합을 사용했다. 그러나 Faster R-CNN 시스템에서는 RPN과 Faster R-CNN이 feature 공유를 가능하게 하기 위해 동일한 네트워크 backbone을 사용해야 한다. Table 3은 우리의 방법과 2가지 baseline 사이의 비교를 보인다. 모두 RPN과 Faster R-CNN을 위해 일관된 backbone 아키텍쳐를 사용한다. Table 3(a)는 [16]에서 설명된 baseline Faster R-CNN 시스템을 우리가 재구성한 것이다. 통제된 설정 하에, 우리의 FPN(Table 3(c))는 이 강력한 baseline 보다 AP에서 2.32.3 점, AP@0.5에서 3.83.8점 더 낫다.
Table 3(a)와 (b)가 Table 3(*)의 He et al에 의해 제공된 baseline보다 훨씬 더 강력한 baseline임에 유의하라. 우리는 다음의 구현이 이 격차에 기여한다는 것을 발견했다. (i) 우리는 [11,16]에서의 600 대신 800 픽셀의 이미지 스케일을 사용한다. (ii) 우리는 [11, 16]에서 64 RoI와 대조하여 수렴을 가속화하는 이미지당 512 RoI를 사용하여 학습한다. (iii) 우리는 [16]에서 4대신 5 스케일 anchor를 사용한다.(32232^2 추가) (iv) 테스트 시간에 우리는 [16]dptj 300개 대신 이미지당 1000개 proposal을 사용한다. 따라서 Table 3(*)의 He et al의 ResNet-50 Faster R-CNN baseline과 비교하여, 우리의 방법은 AP를 7.67.6점, AP@0.5를 9.69.6점 개선한다.
Sharing features.
위에서 단순성을 위해 우리는 RPN과 Fast R-CNN 사이의 feature를 공유하지 않는다. Table 5에서 우리는 [29]에서 설명된 4-step 학습을 따라 feature를 공유하는 것을 평가한다. [29]와 유사하게, 우리는 feature를 공유하는 것이 약간 정확도를 개선하는 것을 발견했다. feature 공유는 또한 test 시간을 감소시킨다.
Running time.
feature 공유를 사용하여, 우리의 FPN 기반 Faster R-CNN 시스템은 단일 NVIDIA M40 GPU에서 이미지당 ResNet-50에서 0.148초, ResNet-101에서 0.172초의 추론 시간을 갖는다. 비교를 위해 Table 3(a)의 single-scale ResNet-50 baseline은 0.32초가 걸린다. 우리의 방법은 FPNdml 추가 레이어에 의해 작은 추가 비용이 발생하지만, 더 가벼운 가중치 head를 갖는다. 전체적으로 우리의 시스템은 ResNet-based Faster R-CNN 대응 모델보다 더 빠르다. 우리는 우리의 방법의 효율성과 단순성이 미래 연구와 응용에 이점을 줄 것이라 믿는다.

5.2.3 Comparing with COCO Competition Winners

우리는 Table 5에서 ResNet-101 모델이 default learning rate 스케쥴을 사용하여 충분히 학습되지 않았다는 것을 발견했다. 그래서 Fast R-CNN step을 학습할 때 각 learning rate에서 mini-batch의 수를 2배로 증가시켰다. 이것은 feature 공유 없이 minival에서 AP를 35.635.6까지 증가시킨다. 이 모델이 우리가 COCO detection leaderboard에 제출한 것이며 Table 4에서 보여진다. 우리는 제한된 시간 때문에 이것의 feature 공유 버전을 평가하지 못했지만, Table 5에서 암시되는 것처럼 이것은 약간 더 나을 것이다.
Table 4는 우리의 방법을 추가적인 기법 없이 2016 우승자 G-RMI, 2015 우상자 Faster R-CNN+++을 포함한 COCO 대회 우승자들의 single-model 결과와 비교한다. 우리의 단일 모델 참가작은 이 강력하고 엔지니어링된 경쟁자들을 능가했다. test-dev 집합에서 우리의 방법은 기존 최고 결과 보다 AP의 0.50.5점(36.236.2 vs 35.735.7)과 AP@0.5의 3.43.4점(59.159.1 vs 55.755.7) 향상되었다. 우리의 방법은 이미지 피라미드에 의존하지 않고 단일 입력 이미지 스케일만 사용하면서도 small-scale object에 대해 뛰어난 AP를 보인다는 점이 주목할만하다. 이것은 이전 방법에서는 고해상도 이미지 입력으로만 달성할 수 있었다.
또한 우리의 방법은 iterative regression, hard negative mining, context modeling, stronger data augmentation 등 많은 인기 있는 개선을 활용하지 않는다. 이러한 개선은 FPN과 보완적이며, 정확도를 더욱 개선할 수 있다.
최근 FPN은 detection, instance segmentation, keypoint estimation 등 COCO 대회의 모든 트랙에서 새로운 최고 결과를 달성했다. 자세한 내용은 [14] 참조.

6. Extensions: Segmentation Proposals

우리의 방법은 일반적인 피라미드 표현이며, object detection 외에 다른 응용에도 사용될 수 있다. 이 섹션에서 우리는 DeepMask/SharpMask framework를 따라 FPN을 사용하여 segmentation proposal을 생성한다.
DeepMask/SharpMask는 instance segments와 object/non-object 점수를 예측하기 위해 이미지 crop에서 학습되었다. 추론 시간에 이런 모델들은 convolutionally 실행하여 이미지에서 dense proposal을 생성한다. multiple scale에서 segment를 생성하기 위해 이미지 피라미터가 필요하다.
FPN을 mask proposal 생성에 적용하는 것은 쉽다. 우리는 학습과 추론 모두에 fully convolutional 설정을 사용한다. 우리는 섹션 5.1에서와 같이 feature 피라미드를 구성하고 d=128d=128을 설정한다. feature 피라미드의 각 레벨의 상단에 작은 5x5 MLP를 적용하여 fully convolutional 방법으로 14x14 mask와 object score를 예측한다. 그림 4 참조. 추가적으로 [27, 28]의 이미지 피라미드에서 octave 당 2개 scale의 사용한다는 점에 착안하여, 우리는 절반 octave를 다루기 위해 입력 크기 7x7의 두 번째 MLP를 사용한다. 2개 MLP는 RPN에서 앵커와 유사한 역할을 수행한다. 아키텍쳐는 end-to-end로 학습된다. 전체 구현 상세는 부록에 제공한다.

6.1. Segmentation Proposal Results

결과는 Table 6에서 보인다. 우리는 항상 1000개 proposal을 사용하여 segment AR과 small, medium, large object에 대한 segment AR을 리포트한다.
단일 5x5 MLP를 사용하는 우리의 baseline FPN 모델은 43.443.4점의 AR을 달성한다. 약간 더 큰 7x7 MLP로 교체해도 정확도는 크게 변하지 않는다. 두 MLP를 함께 사용하면 정확도는 45.745.7 AR로 증가시킨다. mask 출력 크기를 14x14에서 28x28로 증가시키면 AR이 1 포인트 더 증가한다(더 큰 크기는 정확도를 퇴화시키기 시작한다). 마지막으로 학습 iteration을 2배로 늘리면 AR은 48.148.1로 증가한다.
우리는 또한 이전의 최첨단 mask proposal 생성 방법인 DeepMask, Sharp-Mask, Instance FCN와 비교를 리포트한다. 우리는 이러한 접근의 정확도를 AR로 8.38.3점 능가한다. 특히 small object에 대해 정확도를 거의 두 배로 높였다.
기존 mask proposal 방법은 densely sampled image pyramid([27, 28]에서 2{2:0,5:1}2^{\{-2:0,5:1\}}로 스케일된)를 기반으로 하여 계산적으로 비싸다. FPN에 기반한 우리의 접근은 상당히 더 빠르다(우리의 모델은 6~7 FPS를 실행한다). 이러한 결과는 우리의 모델이 일반적인 feature extractor이고 다른 multi-scale detection 문제에 대한 image pyramid를 대체할 수 있음을 시연한다.

7. Conclusion

우리는 ConvNets 내부에 feature pyramids를 구축하기 위한 깔끔하고 간단한 프레임워크를 제시했다. 우리의 방법은 여러 강력한 baseline과 경쟁 우승자들에 비해 상당한 개선을 보였다. 따라서 이것은 이미지 피라미드를 계산할 필요 없이 feature pyramid의 연구와 응용을 위한 실용적인 해결책을 제공한다. 마지막으로 우리의 연구는 deep ConvNets의 강력한 표현력과 스케일 변화에 대한 암묵적 견고성에도 불구하고, 피라미드 표현을 사용하여 multi-scale 문제를 다루는 것이 여전히 중요하다는 것을 시사한다.