안녕하세요.

오늘은 Object Detection을 위한 FPN(Feature Pyramid Network) 논문에 대해 리뷰하려고 합니다.

Lin, Tsung-Yi, et al. "Feature pyramid networks for object detection." Proceedings of the IEEE conference on computer vision and pattern recognition. 2017.

(논문 링크: https://arxiv.org/abs/1612.03144)

Keyword: Pyramid Network, Feature Fusion, RPN

Segmentation 논문들에 대한 리뷰를 계속 진행하려 했지만

Mask R-CNN의 핵심 중 하나인 FPN에 대해 알아보고 넘어가도록 하겠습니다.

 

Object Detection 분야에서 가장 큰 문제점작은 scale의 object를 탐지하는데 어려움이 있었습니다.

 

이 문제점을 해결하고자 이미지나 feature map의 크기를 다양한 형태로 rescale 하는 기존의 model들을 살펴보겠습니다.

 

(a) Featurized Image Pyramid

<그림 1> Featurized Image Pyramid(좌), MT-CNN Process Example(우)

MT-CNN에서 등장한 방법으로,

입력 이미지를 여러 크기로 rescale한 뒤, 각 이미지에서 독립적으로 물체를 탐지하는 방식입니다.

 

동일한 크기의 filter(kernel)로 여러 scale의 입력 이미지에서 face를 detect 하고자 할 때,

크기가 큰 왼쪽 이미지에 비해 scale이 작은 왼쪽 이미지에서 face가 더 잘 detect되는 것을 확인할 수 있습니다.

 

하지만, 이 방법은 입력 이미지를 여러 scale로 복사하여 계산하므로 연산량이 굉장히 많이 들어갑니다.

 

(b) Single Feature Map

<그림 2> Single Feature Map

이 방법은 Conv layer를 통과하여 최종 단계 feature map으로부터 Object를 탐지하는 방식입니다.

 

(a)에 비해 연산량은 적지만 압축된 Single scale로 최종 feature map은 소실된 정보들이 있기 때문에 성능이 떨어집니다.

 

(c) Pyramidal Feature Hierarchy

<그림 3> Pyramidal Feature Hierarchy

이 방법은 CNN 신경망 중간 과정에서 생성된 서로 다른 sacle의 feature map으로부터 독립적으로 Object를 탐지하는 방식입니다.

 

(a)에 비해 연산량이 적고 (b)에 비해 여러 scale에 대한 정보로 성능을 평가할 수 있지만,

독립적으로 평가하는 성격으로 인하여 상위 레이어에서 얻게 된 feature map을 활용하지 못하는 단점이 있습니다.

 

(d) Feature Pyramid Network

<그림 4> Feauter Pyramid Network

FPN 논문에서 제안한 방법으로, 단계별로 비례한 크기의 feature map을 생성하고 가장 상위 layer에서부터 내려오면서 feauture map을 합쳐주는 방식입니다.

 

이 방법으로 상위 layer의 추상화된 정보와 하위 레이어의 작은 물체 정보를 모두 활용할 수 있고

피라미드 구조를 가지며 foward를 거치면서 더 많은 의미(semantic)를 가질 수 있게 되어 Scale 변화에 강한 모델이 됩니다.

 

Feature Pyramid Architecture

<그림 5> Feature Pyramid Architecture

FPN의 Architecture는 Bottom-up pathway와 Top-dwon pathway로 나뉘어 있습니다.

 

- Bottom-up Pathway

: Convolution Network를 이용하여 resolution(해상도)을 2배로 줄이며 feature map을 획득하는 forward 과정으로,

  매 layer마다 의미 정보를 응축하는 단계 (본 논문에서는 ResNet을 사용함.)

 

- Top-down Pathway

: feature map을 2배로 Upsampling하여 획득했던 feature map과 결합하며 입력 이미지 resolution으로 내리는 과정

   

Feature Fusion

 

<그림 6> Feature Fusion(좌), Nearest Neighbor

Bottom-up 단계에서 Top-down으로 넘어가 상위 feature map과 하위 feature map을 합치는 방법을 설명하겠습니다.

 

앞서 Bottom-up 단계에서 conv layer를 통과해 resolution이 점점 2배씩 줄었으므로

Top-down 단계에서는 layer로부터 획득했던 feature map을 2배 upsampling(Nearest neighbor upsampling)해주고

1x1 convolution으로 채널 수를 맞춘 다음, elementwise를 수행합니다.

  +) elementwise: dimension을 기준으로 행렬 내에서 같은 위치에 있는 원소끼리 연산을 하는 방

 

Feature Pyramid Networks for RPN

본 논문에서는 Faster R-CNN의 RPN과 Classifier에 적용하여 실험을 진행했습니다.

<그림 7> Faster R-CNN RPN, Classification 과정

Faster R-CNN은 Feature Extraction을 수행한 feature map을 전달받아

해당 feature map에 3x3 conv을 적용하여 Intermediate Layer라는 feature map을 생성합니다.

 

그리고 이 feature map에 각각 1x1 conv을 anchor box 수만큼 적용하여 각 anchor box에 object의 유무와 Bbox Regression을 수행합니다.

 

이 RPN에 FPN을 적용하면 다음과 같은 구조를 갖습니다.

 

FPN for RPN in Faster R-CNN

<그림 8> Faster R-CNN에 FPN을 적용한 model 구조

FPN이 Faster R-CNN의 RPN에서 Object Detection을 수행하는 과정은 다음과 같습니다.

1. 입력 이미지를 ResNet에 통과시켜 feature map(C2, C3, C4, C5)을 생성

2. 상위 layer로부터 내려오며 해당 layer의 기존 feature map들과 합친 feature map(P5, P4, P3, P2)을 생성

3. 각 feature map의 scale을 고려하여 하위 feature map부터 순서대로 32x32, 64x64, 128x128, 256x256, 512x512의 앵커 박스를 적용

(위 Intermediate layer에 1x1 conv의 채널 수를 anchor box의 개수로 취했는데,

FPN은 P5, P4, P3, P2가 각 scale의 앵커박스를 의미합니다.)

(또, P5은 크기가 큰 물체에 대한 정보를 가질 것이므로 큰 anchor box를, P2는 작은 물체에 대한 정보를 담고 있을 것으로 작은 anchor box를 의미한다고 볼 수 있습니다.)

4. feature map에 3x3 conv를 적용하여 Objectness에 대한 classification과 Bbox Regression을 수행

 

FPN for Fast R-CNN

<그림 9> Fast R-CNN에 FPN을 적용한 구조

Fast R-CNN에서는 전체 이미지를 CNN에 통과시켜 여러 개의 feature map을 생성했습니다.

 

이 feature map으로부터 Region Proposal로 획득한 ROI들을 model에 보내기 위해

ROI의 크기와 비슷한 scale을 가지는 pyramid stage의 feature map을 네트워크로 보냅니다.

 

이때, 사용한 수식은 다음과 같습니다.

<그림 10> feature map을 결정하는 수식

k: feature map 번호

k0: 몇 번째 feature map에 사상시킬 것인지 결정하는 수(본 논문= 4)

224: 224x224 이미지(ImageNet 기준)

 

예) 512x512 크기의 ROI가 입력으로 들어오면 4+log2(2.28)= 5.11로 P5에 시각화됩니다.

 

Experiment

<그림 11> FPN을 적용한 Faster R-CNN result table

위 table을 통하여 FPN을 적용한 Faster R-CNN은 기존 model들보다 높은 성능을 보여주는 것을 확인할 수 있습니다.

 

<Reference>

https://yeomko.tistory.com/44

https://velog.io/@haejoo/Feature-Pyramid-Networks-for-Object-Detection-%EB%85%BC%EB%AC%B8-%EC%A0%95%EB%A6%AC