Feature Pyramid Networks for Object Detection
0. Summary
기본 정보 : ArXiv,2016.12.09 (CVPR 2017), Feature Pyramid Networks for Object Detection
연구 배경
크기가 크게 다른 물체를 모두 인식하는 것은 컴퓨터 비전의 근본 과제이며, 고전적인 해법은 이미지를 여러 배율로 줄여 각각 특징을 뽑는 featurized image pyramid였다(Fig. 1(a)). 이 방식은 모든 배율에서 의미적으로 강한 특징을 얻지만, 추론 시간이 배율 수만큼 늘고 학습 시에는 메모리 때문에 end-to-end로 쓸 수 없어 train/test 불일치가 생긴다. 그래서 Fast/Faster R-CNN은 기본 설정에서 단일 배율 특징(Fig. 1(b))만 쓰고, SSD는 ConvNet 내부의 계층적 특징을 피라미드처럼 재사용하되(Fig. 1(c)) 저수준 특징을 피하려고 conv4_3 이상에서만 피라미드를 시작해 고해상도 맵을 버린다. 즉 ConvNet의 특징 계층은 해상도별로 이미 피라미드 모양을 갖고 있지만 깊이에 따른 의미 격차(semantic gap) 때문에 그대로 쓰기 어렵다는 문제가 남아 있었다.
제안 방법
ConvNet의 bottom-up 특징 계층 위에 top-down 경로와 lateral connection을 더해, 모든 해상도에서 의미적으로 강한 특징 피라미드를 거의 추가 비용 없이 만드는 Feature Pyramid Network(FPN) 을 제안한다. ResNet의 각 stage 마지막 출력 ${C_2,C_3,C_4,C_5}$ (stride ${4,8,16,32}$)를 기준 특징으로 삼고, 가장 깊은 $C_5$부터 nearest neighbor로 2배 업샘플하면서 같은 크기의 bottom-up 맵을 1×1 conv로 채널을 맞춰 element-wise 덧셈으로 합친 뒤 3×3 conv를 적용해 ${P_2,P_3,P_4,P_5}$를 얻는다. 모든 level의 채널은 $d=256$으로 고정하고, 비선형성은 넣지 않는다. 이 피라미드를 RPN(각 level에 한 가지 anchor scale 배정, head 공유)과 Fast R-CNN(RoI 크기에 따라 level 배정, 2-fc head 공유)에 최소한의 수정으로 적용하며, DeepMask 류 segment proposal에도 확장한다.
발견 사실
COCO minival에서 ResNet-50 기준으로 FPN을 RPN에 넣으면 $AR^{1k}$가 48.3에서 56.3으로 8.0 포인트, 작은 물체 $AR^{1k}_s$는 32.0에서 44.9로 12.9 포인트 오른다(Table 1). Top-down 경로를 빼면 baseline 수준으로 떨어지고, lateral connection을 빼면 FPN보다 10 포인트 낮으며, 최고 해상도 $P_2$만 써도 FPN에 못 미쳐 세 요소가 모두 필요함이 확인된다. Faster R-CNN에서는 같은 조건의 강한 baseline보다 AP 2.3, AP@0.5 3.8 포인트가 오르고(Table 3), ResNet-101 single model은 COCO test-dev에서 AP 36.2로 2016년 우승 모델 G-RMI(34.7)를 포함한 기존 single-model 결과를 모두 넘어섰다(Table 4). 이미지 피라미드 없이 단일 배율 입력만으로 작은 물체 AP 18.2를 얻었고, 추론 시간은 ResNet-50에서 이미지당 0.148초로 단일 배율 baseline(0.32초)보다 오히려 빠르다. Segment proposal에서는 AR 48.1로 SharpMask(39.8)보다 8.3 포인트 이상 높으면서 속도는 3배 이상 빠르다(Table 6).
핵심 기여
- In-network feature pyramid : 이미지 피라미드를 계산하지 않고 ConvNet 내부의 다중 해상도 특징에 top-down 경로와 lateral connection을 더해, 모든 level이 강한 의미 정보를 갖는 피라미드를 단일 배율 입력에서 만들어 냈다. 학습과 테스트에서 동일하게 쓸 수 있고 메모리 부담도 작다.
- 범용 특징 추출기로서의 검증 : RPN, Fast/Faster R-CNN, segment proposal 세 가지 시스템에 최소 수정으로 붙여 모두 큰 폭의 개선을 보였고, 철저한 ablation으로 top-down·lateral·피라미드 예측 각각의 필요성을 분리해 증명했다.
- COCO single-model SOTA : bells and whistles 없이 ResNet-101 Faster R-CNN만으로 COCO 2015·2016 우승 single-model을 넘어섰으며, 이후 Mask R-CNN·RetinaNet 등 대부분의 검출·분할 모델의 기본 backbone이 되었다.
관련 개념
다중 스케일 인식의 네 가지 접근
스케일 문제는 같은 종류의 물체라도 이미지 안에서 수십 배 크기 차이로 나타난다는 사실에서 비롯됩니다. 검출기는 고정된 수용 영역으로 모든 크기를 다뤄야 하므로, 특징 표현 자체가 여러 배율을 포괄해야 합니다. 논문은 Fig. 1에서 네 가지 접근을 대비합니다.
🗂️ 1. 네 가지 피라미드 구조 비교 (Fig. 1)
| 구조 | 방법 | 장점 | 한계 |
|---|---|---|---|
| (a) Featurized image pyramid | 이미지를 여러 배율로 줄여 각각 특징 계산 | 모든 level이 의미적으로 강함, 스케일 불변 | 추론 시간 수 배 증가(예: 4배), 학습 시 메모리 부족으로 테스트에만 사용 → train/test 불일치 |
| (b) Single feature map | 마지막 conv 특징 하나만 사용(Fast/Faster R-CNN 기본) | 빠름 | 작은 물체 정보가 다운샘플링으로 소실 |
| (c) Pyramidal feature hierarchy | ConvNet 중간 층을 그대로 피라미드처럼 사용(SSD) | 추가 비용 없음 | 얕은 층은 의미가 약해 SSD는 conv4_3 이상에서만 시작, 고해상도 맵을 버림 |
| (d) FPN | (c)에 top-down 경로와 lateral connection 추가 | (b),(c)처럼 빠르면서 모든 level이 의미적으로 강함 | 추가 층이 약간 필요 |
🔍 2. 왜 ConvNet 계층을 그대로 쓰면 안 되는가
ConvNet은 서브샘플링을 거치며 층마다 다른 해상도의 특징을 만들므로 모양 자체는 피라미드입니다. 그러나 깊이가 다른 층 사이에는 큰 의미 격차가 있습니다. 고해상도 맵은 저수준 특징(에지, 색)을 담고 있어 물체 인식 능력이 떨어집니다. 논문은 특히 매우 깊은 ResNet에서 이 격차가 크다고 보고, bottom-up 피라미드만으로 RPN을 돌리면(Table 1(d)) 단일 배율 baseline과 다를 바 없다는 것을 실험으로 보입니다.
🔁 3. 기존 top-down/skip 구조와의 차이 (Fig. 2)
U-Net, SharpMask, Stacked Hourglass, Recombinator network 등도 top-down 경로와 skip connection을 씁니다. 그러나 이들은 가장 세밀한 단일 해상도 맵 하나를 만들어 그 위에서 예측합니다(Fig. 2 위). FPN은 같은 구조를 피라미드로 활용해 모든 level에서 독립적으로 예측합니다(Fig. 2 아래). 이것이 featurized image pyramid의 “각 level에서 같은 모델을 돌린다”는 성질을 네트워크 안으로 옮겨 온 것이며, 논문이 선행 연구와 가장 다르다고 강조하는 지점입니다.
💡 Key Takeaway 문제는 “다중 해상도 특징이 없다”가 아니라 “고해상도 특징이 의미적으로 약하다”는 것입니다. FPN은 의미 정보를 위에서 아래로 흘려보내 이 격차를 메운 뒤, 모든 level에서 예측하는 구조입니다.
FPN 구조: Bottom-up, Top-down, Lateral Connection
FPN은 임의 크기의 단일 배율 이미지를 받아 여러 level에서 비례하는 크기의 특징 맵을 fully convolutional 방식으로 출력합니다. backbone 구조와 무관하게 적용할 수 있으며, 논문은 ResNet을 사용합니다. 구성은 세 요소입니다.
⬆️ 1. Bottom-up pathway
Backbone ConvNet의 feed-forward 계산입니다. 같은 크기의 출력을 내는 층들의 묶음을 stage라 부르고, 피라미드 level 하나를 stage 하나에 대응시킵니다. 각 stage의 마지막 층 출력을 기준 특징으로 고르는데, stage에서 가장 깊은 층이 가장 강한 특징을 갖기 때문입니다.
| 기호 | ResNet stage | 입력 대비 stride |
|---|---|---|
| $C_2$ | conv2 마지막 residual block | 4 |
| $C_3$ | conv3 마지막 residual block | 8 |
| $C_4$ | conv4 마지막 residual block | 16 |
| $C_5$ | conv5 마지막 residual block | 32 |
conv1은 메모리 사용량이 너무 커서 피라미드에 포함하지 않습니다.
⬇️ 2. Top-down pathway와 lateral connection (Fig. 3)
Top-down 경로는 공간적으로 거칠지만 의미적으로 강한 상위 level 특징을 업샘플해 고해상도 특징을 “환각(hallucinate)” 합니다. 그 다음 lateral connection으로 같은 공간 크기의 bottom-up 특징을 합쳐 보강합니다. Bottom-up 특징은 의미는 약하지만 서브샘플링 횟수가 적어 위치가 더 정확하기 때문입니다.
한 블록의 연산은 다음과 같습니다.
- 상위 level 맵을 nearest neighbor upsampling으로 공간 해상도 2배 확대
- 같은 크기의 bottom-up 맵 $C_i$에 1×1 conv를 적용해 채널 수를 $d$로 축소
- 두 맵을 element-wise 덧셈으로 병합
- 병합된 맵에 3×3 conv를 적용해 업샘플링으로 생긴 aliasing을 줄이고 최종 $P_i$ 생성
반복은 $C_5$에 1×1 conv를 붙여 가장 거친 맵을 만드는 것으로 시작해 가장 세밀한 맵까지 진행되며, 결과 ${P_2,P_3,P_4,P_5}$는 ${C_2,C_3,C_4,C_5}$와 각각 같은 공간 크기를 갖습니다.
⚙️ 3. 설계 선택: $d=256$, 비선형성 없음, 단순성
- 모든 level이 공유된 classifier/regressor를 쓰므로 채널 수 $d$를 모든 맵에서 고정해야 합니다. 논문은 $d=256$을 쓰고, 추가된 conv 층은 모두 256채널 출력입니다.
- 추가 층에는 비선형성을 넣지 않습니다. 실험적으로 영향이 미미했기 때문입니다.
- 다층 residual block 같은 더 정교한 연결 모듈도 시험했으나 개선이 미미해, 설계의 단순성을 우선해 위 구조를 채택했습니다. 논문은 모델이 여러 설계 선택에 강건하다고 보고합니다.
💡 Key Takeaway FPN은 “2배 업샘플 + 1×1 conv + 덧셈 + 3×3 conv” 블록의 반복일 뿐입니다. 의미 정보는 top-down으로, 위치 정보는 lateral로 흘러 들어와 모든 $P_i$가 두 가지를 모두 갖게 됩니다.
RPN에 적용: Level별 단일 scale anchor
Region Proposal Network(RPN) 은 단일 배율 conv 특징 위에서 3×3 sliding window로 object/non-object 분류와 박스 회귀를 수행하는 클래스 무관 검출기입니다. 원래 설계는 하나의 맵 위에 여러 scale과 aspect ratio의 anchor를 둡니다. FPN은 이 단일 맵을 피라미드로 바꿉니다.
🎯 1. Anchor 배정 규칙 (Sec. 4.1)
Head가 모든 level의 모든 위치를 빽빽하게 훑으므로, 한 level에 여러 scale의 anchor를 둘 필요가 없습니다. 대신 level 하나에 scale 하나를 배정합니다.
| Level | $P_2$ | $P_3$ | $P_4$ | $P_5$ | $P_6$ |
|---|---|---|---|---|---|
| Anchor 넓이 | $32^2$ | $64^2$ | $128^2$ | $256^2$ | $512^2$ |
- 각 level에서 aspect ratio ${1{:}2,\ 1{:}1,\ 2{:}1}$ 세 가지를 쓰므로 피라미드 전체에 15종의 anchor가 있습니다.
- $P_6$는 $512^2$ scale을 덮기 위해 $P_5$를 stride 2로 서브샘플링한 것으로, RPN에서만 쓰고 Fast R-CNN 검출기에서는 쓰지 않습니다.
- 학습 라벨은 원래 RPN과 같습니다. 어떤 ground-truth 박스와 IoU가 가장 높거나 0.7을 넘으면 positive, 모든 ground-truth와 IoU가 0.3 미만이면 negative입니다. Ground-truth 박스의 크기를 level 배정에 직접 쓰지 않고, anchor를 통해 간접적으로 level에 연결되므로 추가 규칙이 없습니다.
🔗 2. Head 파라미터 공유
Head(3×3 conv + 분류·회귀용 1×1 conv 두 개)는 모든 level에서 파라미터를 공유합니다. 공유하지 않은 변형도 시험했지만 정확도가 비슷했습니다. 논문은 이를 피라미드의 모든 level이 비슷한 의미 수준을 공유한다는 증거로 해석합니다. Featurized image pyramid에서 하나의 head classifier가 어떤 배율의 특징에도 적용되는 것과 같은 이점입니다.
🧪 3. 학습 설정 (Sec. 5.1)
| 항목 | 값 |
|---|---|
| 입력 크기 | 짧은 변 800픽셀 |
| 학습 | 8 GPU 동기 SGD, GPU당 2장, 이미지당 256 anchor |
| Weight decay / momentum | 0.0001 / 0.9 |
| 학습률 | 처음 30k 미니배치 0.02, 다음 10k 0.002 |
| 이미지 밖 anchor | 학습에 포함(원 RPN과 다름) |
| 학습 시간 | COCO에서 8 GPU로 약 8시간 |
💡 Key Takeaway “Level = scale”로 두고 head를 공유하는 것은 피라미드 각 level이 같은 종류의 특징이라는 가정 위에 서 있습니다. 공유해도 성능이 같다는 결과가 그 가정을 뒷받침합니다.
Fast R-CNN에 적용: RoI의 level 배정
Fast R-CNN은 RoI pooling으로 영역 특징을 뽑는 region-based 검출기이며 보통 단일 배율 맵 위에서 동작합니다. FPN을 쓰려면 서로 다른 크기의 RoI를 어느 level에서 pooling할지 정해야 합니다. 논문은 피라미드를 이미지 피라미드에서 만들어진 것처럼 간주하고, 이미지 피라미드 위에서 region-based 검출기가 쓰던 배정 전략을 그대로 가져옵니다.
📐 1. Level 배정 식 (Eq. 1)
입력 이미지 위에서 폭 $w$, 높이 $h$인 RoI는 다음 level $P_k$에 배정됩니다.
\[k=\left\lfloor k_0+\log_2\!\left(\sqrt{wh}/224\right)\right\rfloor\]- 224는 ImageNet 사전학습의 표준 크기이고, $k_0$는 $w\times h=224^2$인 RoI가 가야 할 목표 level입니다.
- ResNet 기반 Faster R-CNN이 $C_4$를 단일 배율 맵으로 쓰는 것에 맞춰 $k_0=4$ 로 둡니다.
- RoI가 작아지면(예: 224의 1/2) 더 세밀한 level(예: $k=3$)로 내려갑니다. 작은 물체는 고해상도 특징에서, 큰 물체는 저해상도 특징에서 pooling된다는 뜻입니다.
🧱 2. Head 구조
원 ResNet Faster R-CNN은 conv4 특징 위에 conv5 전체(9층) 를 head로 올렸지만, FPN은 이미 conv5를 피라미드 구성에 써 버렸습니다. 그래서 RoI pooling으로 7×7 특징을 뽑고, 1024차원 fc 층 두 개(각각 ReLU)를 거쳐 분류·박스 회귀 층에 연결하는 2-fc MLP head를 씁니다. ResNet에는 사전학습된 fc 층이 없으므로 무작위 초기화합니다. 이 head는 conv5 head보다 가볍고 빠르며, 모든 level과 모든 RoI에서 파라미터를 공유합니다.
🧪 3. 학습 설정 (Sec. 5.2)
| 항목 | 값 |
|---|---|
| 입력 크기 | 짧은 변 800픽셀 |
| 학습 | 8 GPU 동기 SGD, GPU당 2장, 이미지당 512 RoI |
| 학습률 | 처음 60k 미니배치 0.02, 다음 20k 0.002 |
| RoI 수 | 학습 2000개/이미지, 테스트 1000개/이미지 |
| 학습 시간 | COCO에서 약 10시간 |
💡 Key Takeaway RoI를 크기에 따라 level에 배정하는 규칙은 이미지 피라미드 시절의 휴리스틱을 그대로 옮긴 것입니다. 단순하지만, 이후 대부분의 two-stage 검출기가 이 식을 그대로 씁니다.
실험 1: RPN과 Fast/Faster R-CNN의 ablation
실험은 80 클래스 COCO 검출 데이터셋에서 수행되며, 80k train과 35k val 부분집합(trainval35k)으로 학습하고 5k minival에서 ablation을 보고합니다. 모든 backbone은 ImageNet1k로 사전학습한 공개 ResNet-50/101이며, 코드는 py-faster-rcnn의 Caffe2 재구현입니다.
📊 1. RPN 결과: Table 1 (ResNet-50, minival)
| 설정 | 특징 | anchor 수 | lateral | top-down | $AR^{100}$ | $AR^{1k}$ | $AR^{1k}_s$ | $AR^{1k}_m$ | $AR^{1k}_l$ |
|---|---|---|---|---|---|---|---|---|---|
| (a) baseline on conv4 | $C_4$ | 47k | 36.1 | 48.3 | 32.0 | 58.7 | 62.2 | ||
| (b) baseline on conv5 | $C_5$ | 12k | 36.3 | 44.9 | 25.3 | 55.5 | 64.2 | ||
| (c) FPN | ${P_k}$ | 200k | ✓ | ✓ | 44.0 | 56.3 | 44.9 | 63.4 | 66.2 |
| (d) bottom-up pyramid | ${P_k}$ | 200k | ✓ | 37.4 | 49.5 | 30.5 | 59.9 | 68.0 | |
| (e) top-down, w/o lateral | ${P_k}$ | 200k | ✓ | 34.5 | 46.1 | 26.5 | 57.4 | 64.7 | |
| (f) only finest level | $P_2$ | 750k | ✓ | ✓ | 38.4 | 51.3 | 35.1 | 59.7 | 67.6 |
공정한 비교를 위해 baseline (a),(b)도 FPN과 같은 하이퍼파라미터와 5가지 scale anchor를 씁니다. 각 행이 말해 주는 것은 다음과 같습니다.
- (a) vs (b) : 더 상위의 단일 맵 $C_5$는 $C_4$보다 나을 것이 없습니다. 해상도와 의미 사이의 trade-off 때문에 단일 상위 맵으로는 부족합니다.
- (c) : FPN은 $AR^{1k}$를 8.0 포인트, 작은 물체 $AR^{1k}_s$를 12.9 포인트 올립니다. 스케일 변화에 대한 RPN의 강건성이 크게 개선됩니다.
- (d) top-down 제거 : 1×1 lateral과 3×3 conv만 bottom-up 피라미드에 붙인 구조로, Fig. 1(c)를 흉내 냅니다. 결과는 baseline 수준에 머뭅니다. Bottom-up 피라미드의 level 간 의미 격차 때문이며, head를 level별로 따로 두어도 해결되지 않았습니다.
- (e) lateral 제거 : 의미는 강하고 해상도도 높지만, 여러 번 다운·업샘플링을 거쳐 위치가 부정확합니다. FPN보다 $AR^{1k}$가 10 포인트 낮습니다.
- (f) $P_2$만 사용 : baseline보다는 낫지만 FPN에 못 미칩니다. RPN은 고정 크기 window를 쓰는 sliding window 검출기라 여러 level을 훑는 것이 스케일 강건성을 높입니다. $P_2$만 쓰면 anchor가 750k로 늘어나는데도 성능이 낮아, anchor 수 자체는 정확도를 보장하지 않는다는 것도 보여 줍니다.
📊 2. Fast R-CNN 결과: Table 2 (고정 proposal, ResNet-50)
검출기만의 효과를 분리하기 위해 Table 1(c)의 FPN RPN proposal을 고정해 둡니다.
| 설정 | 특징 | head | AP@0.5 | AP | $AP_s$ | $AP_m$ | $AP_l$ |
|---|---|---|---|---|---|---|---|
| (a) baseline on conv4 | $C_4$ | conv5 | 54.7 | 31.9 | 15.7 | 36.5 | 45.5 |
| (b) baseline on conv5 | $C_5$ | 2fc | 52.9 | 28.8 | 11.9 | 32.4 | 43.4 |
| (c) FPN | ${P_k}$ | 2fc | 56.9 | 33.9 | 17.8 | 37.7 | 45.8 |
| (d) bottom-up pyramid | ${P_k}$ | 2fc | 44.9 | 24.9 | 10.9 | 24.4 | 38.5 |
| (e) top-down, w/o lateral | ${P_k}$ | 2fc | 54.0 | 31.3 | 13.3 | 35.2 | 45.3 |
| (f) only finest level | $P_2$ | 2fc | 56.3 | 33.4 | 17.3 | 37.3 | 45.6 |
- (b)의 2-fc head는 (a)의 conv5 head보다 오히려 낮아, 2-fc head 자체가 이득을 주는 것은 아님을 확인합니다. 따라서 (c)의 개선은 피라미드에서 옵니다.
- FPN은 (a) 대비 AP 2.0, 작은 물체 AP 2.1 포인트, 같은 head의 (b) 대비 AP 5.1 포인트 높습니다.
- (d) top-down 제거는 특히 크게 나빠집니다. Fast R-CNN은 고해상도 맵의 저수준 특징에 민감하다는 뜻입니다.
- (f) $P_2$만 써도 33.4로 거의 비슷한데, RoI pooling이 warping 류 연산이라 영역 크기에 덜 민감하기 때문입니다. 다만 이 변형도 ${P_k}$ RPN의 proposal을 쓰므로 이미 피라미드의 혜택을 받고 있습니다.
📊 3. Faster R-CNN 결과: Table 3, Table 5 (일관된 backbone)
RPN과 Fast R-CNN이 같은 backbone을 쓰는 완전한 Faster R-CNN 설정입니다.
| 설정 | AP@0.5 | AP | $AP_s$ | $AP_m$ | $AP_l$ |
|---|---|---|---|---|---|
| (*) He et al. 원 baseline | 47.3 | 26.3 | - | - | - |
| (a) baseline on conv4 (재현) | 53.1 | 31.6 | 13.2 | 35.6 | 47.1 |
| (b) baseline on conv5 | 51.7 | 28.0 | 9.6 | 31.9 | 43.1 |
| (c) FPN | 56.9 | 33.9 | 17.8 | 37.7 | 45.8 |
FPN은 재현된 강한 baseline (a)보다 AP 2.3, AP@0.5 3.8 포인트 높습니다. 재현 baseline이 원 논문 (*)보다 훨씬 강한 이유는 (i) 이미지 크기 800(원래 600), (ii) 이미지당 512 RoI(원래 64), (iii) $32^2$를 더한 5 scale anchor(원래 4), (iv) 테스트 시 1000 proposal(원래 300)입니다. 원 baseline 대비로는 AP 7.6, AP@0.5 9.6 포인트 개선입니다.
| 특징 공유 | ResNet-50 AP@0.5 / AP | ResNet-101 AP@0.5 / AP |
|---|---|---|
| 공유 안 함 | 56.9 / 33.9 | 58.0 / 35.0 |
| 공유 (4-step 학습) | 57.2 / 34.3 | 58.2 / 35.2 |
특징 공유는 정확도를 조금 높이고 테스트 시간을 줄이지만 학습 시간은 1.5배 늘어납니다(Table 5).
💡 Key Takeaway Ablation의 요점은 세 가지입니다. Top-down이 없으면 의미가 약하고, lateral이 없으면 위치가 부정확하며, 피라미드 없이 한 level만 쓰면 스케일 강건성이 떨어집니다. 세 요소가 합쳐져야 8 포인트의 AR 개선이 나옵니다.
실험 2: COCO 우승 모델과의 비교 및 속도
최종 비교는 ResNet-101 Faster R-CNN on FPN을 COCO test-dev/test-std에 제출해 경진대회 우승 single-model들과 대조한 것입니다. 기본 학습 스케줄로는 ResNet-101이 충분히 학습되지 않아, Fast R-CNN 단계에서 각 학습률의 미니배치 수를 2배로 늘렸고 minival AP는 35.6(특징 공유 없음)이 되었습니다.
🏆 1. Table 4: Single-model 비교
| 방법 | Backbone | 대회 | 이미지 피라미드 | test-dev AP@.5 | AP | $AP_s$ | $AP_m$ | $AP_l$ |
|---|---|---|---|---|---|---|---|---|
| Faster R-CNN on FPN (ours) | ResNet-101 | - | 없음 | 59.1 | 36.2 | 18.2 | 39.0 | 48.2 |
| G-RMI | Inception-ResNet | 2016 | - | - | 34.7 | - | - | - |
| AttractioNet | VGG16 + Wide ResNet | 2016 | ✓ | 53.4 | 35.7 | 15.6 | 38.0 | 52.7 |
| Faster R-CNN +++ | ResNet-101 | 2015 | ✓ | 55.7 | 34.9 | 15.6 | 38.7 | 50.9 |
| Multipath (minival) | VGG-16 | 2015 | 49.6 | 31.5 | - | - | - | |
| ION | VGG-16 | 2015 | 53.4 | 31.2 | 12.8 | 32.9 | 45.2 |
test-std에서는 AP@.5 58.5, AP 35.8, $AP_s$ 17.5, $AP_m$ 38.7, $AP_l$ 47.8입니다. 기존 최고 대비 AP 0.5 포인트(36.2 vs 35.7), AP@0.5 3.4 포인트(59.1 vs 55.7) 개선이며, 이미지 피라미드 없이 단일 배율 입력만으로 이전에는 고해상도 입력으로만 가능하던 작은 물체 AP를 달성했습니다. 반복 회귀, hard negative mining, context modeling, 강한 데이터 증강 같은 보편적 개선 기법은 전혀 쓰지 않았으므로 이들은 FPN과 상보적입니다.
⏱️ 2. 추론 시간 (Sec. 5.2.2)
| 모델 | NVIDIA M40 GPU, 이미지당 |
|---|---|
| FPN Faster R-CNN, ResNet-50 (특징 공유) | 0.148초 |
| FPN Faster R-CNN, ResNet-101 (특징 공유) | 0.172초 |
| 단일 배율 ResNet-50 baseline (Table 3(a)) | 0.32초 |
FPN의 추가 층이 약간의 비용을 더하지만 head가 가벼워, 전체적으로는 ResNet 기반 Faster R-CNN보다 빠릅니다. 초록의 “6 FPS on a GPU”가 이 수치에 해당합니다.
🧩 3. 이후 영향
논문은 FPN이 COCO 대회의 검출·instance segmentation·keypoint 모든 트랙에서 새로운 최고 결과를 가능하게 했다고 언급합니다(Mask R-CNN). 이후 RetinaNet의 one-stage 검출, PANet의 bottom-up 보강 경로, BiFPN의 가중 양방향 융합 등은 모두 FPN 구조의 변형이며, 확산 모델에서도 Frido처럼 coarse-to-fine 특징을 쓰는 설계가 같은 직관을 빌려 옵니다.
💡 Key Takeaway 단일 배율 입력, 단일 모델, 추가 트릭 없음이라는 조건에서 우승 모델을 넘었다는 점이 FPN의 설득력입니다. 정확도와 속도를 동시에 얻은 몇 안 되는 구조적 개선입니다.
확장: Segmentation Proposal
Segmentation proposal은 DeepMask/SharpMask가 하던 과제로, 이미지 crop에서 instance segment와 object/non-object 점수를 예측하고 추론 시 convolution 방식으로 dense proposal을 생성합니다. 여러 scale을 다루려면 이들 방법은 이미지 피라미드(예: $2^{{-2:0.5:1}}$ 배율)가 필요해 계산 비용이 큽니다. FPN은 이를 피라미드 level로 대체합니다.
🎭 1. 구조 (Fig. 4, Appendix A)
- Sec. 5.1과 같은 피라미드 $P_{2\sim6}$를 쓰되 $d=128$로 둡니다.
- 각 level 위에서 5×5 MLP(5×5 kernel 512 출력 → 14×14 마스크 $14^2$ 출력 + 점수 1 출력, 1×1 conv로 fully convolutional 구현)가 마스크와 점수를 예측합니다.
- 마스크 scale(폭·높이의 최댓값)이 ${32,64,128,256,512}$픽셀이면 각각 ${P_2,\dots,P_6}$에 대응합니다. DeepMask가 반 옥타브 피라미드를 쓰는 것에 맞춰 7×7 MLP($7\approx5\sqrt2$)가 반 옥타브를 담당합니다. 두 MLP는 RPN의 anchor와 비슷한 역할입니다.
- 표준 물체 크기 주위에 25% 패딩을 두어 5×5 MLP의 출력은 ${40,80,160,320,640}$ 크기 이미지 영역에 대응합니다.
- 학습: 미니배치 2048개(16장 × 128개), positive:negative 1:3, 마스크 손실 가중치 10배, 학습률 0.03으로 80k 미니배치(60k 후 1/10), 이미지 크기 800, 추론 시 상위 1000개 위치에서 마스크 예측, NMS 없음.
📊 2. Table 6: COCO val 5k 결과 (AR, 1000 proposal)
| 방법 | 이미지 피라미드 | AR | $AR_s$ | $AR_m$ | $AR_l$ | 시간(초) |
|---|---|---|---|---|---|---|
| DeepMask | ✓ | 37.1 | 15.8 | 50.1 | 54.9 | 0.49 |
| SharpMask | ✓ | 39.8 | 17.4 | 53.1 | 59.1 | 0.77 |
| InstanceFCN | ✓ | 39.2 | - | - | - | 1.50 (K40) |
| FPN single MLP [5×5] | 43.4 | 32.5 | 49.2 | 53.7 | 0.15 | |
| FPN single MLP [7×7] | 43.5 | 30.0 | 49.6 | 57.8 | 0.19 | |
| FPN dual MLP [5×5, 7×7] | 45.7 | 31.9 | 51.5 | 60.8 | 0.24 | |
| + 2× mask resolution (28×28) | 46.7 | 31.7 | 53.1 | 63.2 | 0.25 | |
| + 2× train schedule | 48.1 | 32.6 | 54.2 | 65.6 | 0.25 |
기존 최고 대비 AR 8.3 포인트 이상 높고, 특히 작은 물체 AR은 거의 2배입니다. 마스크 출력을 28×28로 키우면 1 포인트 더 오르지만 그 이상은 오히려 나빠집니다. 모델은 6~7 FPS로 동작해 이미지 피라미드 기반 방법보다 훨씬 빠릅니다.
💡 Key Takeaway 검출뿐 아니라 마스크 proposal에서도 FPN이 이미지 피라미드를 대체할 수 있다는 것은, FPN이 특정 검출기용 장치가 아니라 범용 다중 스케일 특징 추출기임을 뜻합니다.
한계와 열린 방향
FPN의 결론은 깊은 ConvNet이 스케일 변화에 암묵적으로 강건하더라도, 피라미드 표현으로 다중 스케일 문제를 명시적으로 다루는 것이 여전히 결정적이라는 것입니다. 그러나 논문 자체에서 드러나는 한계와 이후 연구가 다룬 지점도 분명합니다.
⚠️ 1. 논문이 남긴 한계
- 휴리스틱한 배정 규칙 : RoI level 배정 식(Eq. 1)과 anchor scale 배정은 이미지 피라미드 시절의 관례를 옮긴 것입니다. 왜 그 규칙이 최적인지에 대한 분석은 없으며, 한 RoI를 하나의 level에서만 pooling합니다.
- 고해상도 level의 메모리 : conv1은 메모리 때문에 제외했고, $P_2$(stride 4)만으로도 anchor가 750k에 이릅니다. 고해상도 피라미드는 메모리와 계산의 주요 부담입니다.
- 연결 모듈의 단순성 : 덧셈 기반의 단일 블록을 썼고, 더 정교한 모듈은 “미미하게 더 좋았다”는 언급에서 그칩니다. 어떤 융합이 더 좋은지는 열어 두었습니다.
- Head의 단순성 : 2-fc MLP head는 가볍지만, 논문도 더 강한 head가 결과를 개선할 것이라고 각주에서 인정합니다.
- 검증 범위 : ResNet-50/101과 COCO에 한정되어 있고, 특징 공유 버전의 ResNet-101 최종 모델은 시간 부족으로 평가하지 못했습니다.
🔭 2. 이후 연구가 이어 간 방향
| 방향 | 대표 연구 | FPN과의 관계 |
|---|---|---|
| 양방향·가중 융합 | PANet, NAS-FPN, BiFPN | Bottom-up 보강 경로 추가, 융합 가중치 학습, 구조 탐색 |
| One-stage 검출 | RetinaNet | FPN 위에 dense head와 focal loss |
| Instance segmentation | Mask R-CNN | FPN backbone + RoIAlign + mask head |
| Level 배정 완화 | 여러 level에서 RoI pooling 후 융합하는 변형들 | Eq. 1의 하드 배정을 소프트하게 |
| 생성 모델로의 전이 | Frido 등 | Coarse-to-fine 특징 피라미드를 확산 순서에 반영 |
🧭 3. 읽을 때 유의할 점
- Table 1~3은 ResNet-50, minival 기준이고 Table 4는 ResNet-101, test-dev/test-std 기준이므로 수치를 섞어 비교하면 안 됩니다.
- 논문의 baseline은 원 Faster R-CNN보다 훨씬 강하게 재현된 것(AP 31.6 vs 26.3)이므로, FPN의 개선 폭 2.3 AP는 강한 baseline 대비 수치입니다.
- 런타임 수치는 논문 개정판에서 갱신된 값(각주 6)입니다.
💡 Key Takeaway FPN은 “무엇을 융합할지”보다 “어디에서 예측할지”를 바꾼 구조입니다. 그 단순함 덕분에 거의 모든 후속 검출기의 기본 구성 요소가 되었지만, 배정 규칙과 융합 방식은 여전히 설계 여지가 남아 있는 부분입니다.