본문 바로가기

인공지능/Deep Learning

Feature Pyramid Networks for Object Detection

2017년 CVPR에 게재된 Feature Pyramid Networks for Object Detection의 abstract, introduction, conclusion 및 FPN의 구조를 번역한 글입니다. 논문을 단순히 직역하기보다는 학부생 고학년 수준에서 좀 더 수월하게 읽을 수 있도록 의역하였고, 설명되지 않은 몇 가지 개념에 대하여 가급적 부연설명을 덧붙이도록 노력했습니다. 시간 관계상 응용 및 실험 등은 생략한 점 양해 바랍니다.

1. Abstract

Feature Pyramid Networks (FPN)는 다양한 크기의 오브젝트를 효율적으로 탐지하기 위해 고안된 방법이다. 예를 들어, 어떤 classifier를 통해 여러 종류의 사물(object)을 분류할 수 있게 되었다고 하자. 이를테면, 자율주행 시스템을 위해 자동차, 보행자, 신호등 등을 분류할 수 있는 딥러닝 모델을 개발했다고 하자. 그런데 단순하게 어떤 사물의 이미지가 주어졌을 때, 그 사물이 무엇인지 맞추는 것만으로는 자율주행 시스템을 구현할 수 없을 것이다. 왜냐하면 자동차가 주행하며 인식하는 시야에는 다양한 거리만큼 떨어진 다양한 객체가 동시에 존재할 것이기 때문이다. 멀리 있는 것은 작게 보이고, 가까이 있는 것은 크게 보일 것인데, 자율주행 시스템은 이런 다양한 크기(scale)의 사물을 모두 정확하게 인식할 수 있어야 한다. FPN은 이를 위해 고안된 모듈이다. 다시 말해, FPN은 앞서 언급한 classifier 모델을 백본(backbone) 네트워크로 하여, classifier가 사물의 종류를 잘 학습하였을 때 사물의 크기와 무관하게 이를 인식하는 역할을 한다. (이러한 모듈을 넥(neck)이라고 부른다.)

 

Feature Pyramid Networks라는 이름에서 알 수 있듯, FPN은 다양한 계층의 레이어가 피라미드 모양으로 쌓아 올려진 형태의 네트워크이다. 그러나 피라미드 형태의 모델에는 중첩된 계층 구조로 인해 메모리 요구량과 계산량이 지나치게 크다는 문제가 존재한다. 그런데 FPN은 앞에서 계산한 레이어를 재사용하는 방식으로 이를 해결한다. 구체적으로 백본으로 사용되는 ConvNet 계열의 네트워크에서 추출되는 특징 맵(feature map)이 이미 본질적으로 피라미드 계층을 이룬다는 사실을 활용한다. 백본 네트워크에서 사용된 피라미드 계층 형태의 특징 맵을 재사용해 새로운 피라미드 형태의 레이어를 효과적으로 구축할 수 있다. 그리고 이러한 피라미드 형태의 다양한 크기의 특징 맵으로부터 다양한 크기의 객체를 인식할 수 있다.

 

또한 FPN은 모든 크기의 객체를 정확히 인식하기 위해 고수준의 의미를 담고 있는 특징 맵(high-level semantic feature maps)을 형성한다. 그리고 이러한 특징 맵은 lateral connections와 하향식 아키텍처를 통해 달성되는데 이것이 무엇인지는 3. FPN의 설계에서 더 자세히 설명하도록 하겠다.

 

2. FPN의 배경

Featurized Image Pyramid

[그림 1] Featurized image pyramid

다양한 크기의 객채를 인식하기 위한 전통적인 방법으로 이미지 피라미드를 바탕으로 형성된 특징 맵을 사용 하였다. 이는 이미지를 다양한 크기의 피라미드 형태로 복제한 뒤, 각각의 레이어에서 다양한 크기의 특징 피라미드를 형성하는 방법이다. [그림 1]을 보면, 좌측의 같은 그림이 다양하게 리사이즈되어 이미지 피라미드를 형성한 뒤, 각각의 이미지에서 우측의 특징 맵이 추출된 것을 확인할 수 있다. 이렇게 특징 맵이 추출된 이미지 피라미드를 featurized image pyramid라고 부른다. 우측 특징 피라미드의 각 계층은 이미지 피라미드의 대응되는 계층에만 의존하도록 형성된 것을 확인할 수 있다. 이러한 방법은 hand-crafted feature(사람에 의해 직접 추출된 특징)를 사용하던 시대에 주로 쓰였으며 매우 느리다는 단점이 존재한다.

Single Feature Map

[그림 2] Single feature map

그런데 ConvNet 계열의 모델이 등장하면서 hand-crafted feature들은 딥 컨볼루셔널 네트워크에 의해 생성된 특징들로 대체되었다. ConvNet은 더 높은 수준의 의미론적 특성(higher-level semantics)을 잘 표현할 수 있었을 뿐만 아니라 다양한 스케일의 이미지 인식에도 강건하였으므로 리사이즈 없이 이미지 한 장만을 사용한 객체 인식 기술을 가능하게 하였다. 그러나 이러한 우수성에도 불구하고 이미지 피라미드로부터 추출된 특징 맵을 포기하는 것은 어려웠다. 왜냐하면 단일 이미지에서 추출된 특징 맵은 딥 컨볼루셔널 레이어를 거치며 해상도가 낮아지고 의미론적인 특성들이 훼손되었기 때문이다. 반면 이미지 피라미드로부터 추출된 특징 맵은 깊은 레이어를 거치지 않으므로 특징 맵에 고해상도 수준(high-resolution levels)과 의미를 모두 담아낼 수 있었다.

 

[그림 3] Feature visualization of convolutional net trained on ImageNet from Zeiler & Fergus

Single Shot Detector with Pyramidal Feature Hierarchy

하지만 앞서 언급하였듯이, 이미지 피라미드를 활용한 특징맵 추출에는 현실적으로 많은 제약이 따랐다. 추론 시간을 상당히 증가시켰고, 막대한 메모리 공간 역시 요구하였던 것이다. 따라서 훈련 단계에서는 도저히 사용하는 것이 불가능하였고, 오직 테스트 단계에서만 간간이 활용되었다. 그럼에도 불구하고 이는 훈련 과정과 테스트 과정 사이의 불일치를 발생시켜, Fast R-CNN이나 Faster R-CNN 같은 모델은 이러한 방식을 포기하기까지 하였다.

 

그러나 이미지 피라미드가 다양한 크기의 특징을 표현하기 위한 유일한 방법은 아니었다. 앞서 언급하였듯, 딥 컨볼루셔널 네트워크의 레이어 사이에는 위계(hierarchy)가 존재한다. 그리고 이러한 위계는 본질적으로 다양한 크기의 특징을 간직한 피라미드 형태이다. 그런데 이러한 피라미드 형태에서는 하층의 고해상도 맵에 낮은 수준의 특징(low-level feature: edge, texture...)이 담겨 있는 반면 고층의 저해상도 맵에는 높은 수준의 특징(high-level feature: shape, object)이 담겨 있다는 모순이 존재한다. 즉 특징 맵으로부터 풍부한 의미론적 특성을 추출하기 위해서는 고해상도 맵과 높은 수준의 피쳐가 필요한데, 이를 얻기 힘들다는 것이다. 이를 해결한 방식이 바로 Single Shot Detector (SSD)이다. SSD는 고해상도 맵을 포기하고, 저해상도 맵 위에 새로운 레이어를 쌓는 방식으로 이를 해결하였다.

 

[그림 4] Pyramidal feature hierarchy

SSD는 ConvNet의 특징 피라미드를 featurized image pyramid의 관점에서 사용한 최초의 시도 중 하나이다. 이론적으로 SSD와 같은 방식은 ConvNet을 거치는 과정에서 계산된 다양한 크기의 특징 맵을 재사용하기 때문에 낮은 비용이 요구된다. 하지만 저수준의 특징을 사용하지 않기 위해 SSD는 특징 피라미드의 저층(고해상도 맵)을 포기하고 대신 상층부에 새로운 레이어들을 추가하는 방식을 선택하였다. 이러한 방식은 작은 객체를 탐지하는 데 중요하다.

 

이 논문의 목표는 모든 스케일에서 강력한 특징 피라미드를 생성하면서도 ConvNet에 내재된 특징 맵 사이의 위계를 활용하여 효율적인 계산을 가능하게 하는 것이다. 이 목표를 달성하기 위해 하향식 경로와 lateral connection을 활용하여 저수준 특징이 담긴 특징 피라미드의 저층과 고수준 특징이 담긴 특징 피라미드의 고층을 효과적으로 결합하였다. 그 결과 모든 수준에서 풍부한 의미론적 특성(semantics)을 지니며, 이미지 리사이징 없이 단일 이미지만으로도 빠르게 빌드되는 특징 피라미드를 고안하였다.

 

[그림 5] 기존 연구(위)와 논문의 연구(아래)

물론 유사한 아키텍처가 최근 연구에서 널리 사용되고 있다. 이러한 아키텍처의 목표는 예측을 수행할 단일 고수준 특징 맵을 생성하는 것이다. 반면, 이 논문의 아키텍처는 각 레벨에서 독립적으로 예측이 이루어지는 것을 목표로 한다는 것에서 여태까지 연구와 차별점이 존재한다.

3. FPN의 설계

FPN은 임의의 크기의 단일 이미지를 입력으로 사용한다. 그리고 다양한 백본 컨볼루션 아키텍처(예: AlexNet, ResNet, VGGNet 등)와 결합할 수 있으며, 상향식 경로, 하향식 경로, lateral connection으로 이루어져 있다. 여기서는 ResNet을 기준으로 설명한다.

상향식 경로

상향식 경로는 백본 네트워크의 순방향 계산이다. 네트워크를 거치며 특징 맵을 1/4로 감소시키는 것을 반복한다. 물론 일련의 과정에서 동일한 크기의 출력 맵을 생성하기도 하는데 이러한 과정에 묶인 레이어들을 ‘스테이지’라고 부른다. 각 스테이지마다 하나의 피라미드 레벨에 대응된다. 각 스테이지에서 마지막 레이어의 출력을 해당되는 피라미드 레벨의 특징 맵으로 사용한다. 각 스테이지의 가장 깊은 레이어에 가장 강력한 특징이 있을 것이므로 이 선택은 당연하다고 볼 수 있다. 구체적으로 ResNets의 경우 5개의 스테이지가 존재하며 첫 번째 스테이즈를 제외한 나머지 4개의 잔여 블록(residual block)에서 출력되는 특징 맵을 사용한다. 첫 번째 출력을 제외한 각 출력의 경우 {C2, C3, C4, C5}로 표시하도록 하자. C1은 메모리 사용량이 많기 때문에 피라미드에 포함하지 않는 것이다. 계산에서 입력 이미지에 대해 {4, 8, 16, 32} 픽셀의 스트라이드가 존재한다.

하향식 경로와 Leteral Connection

[그림 6] Nearest neighbor upsampling

하향식 경로는 예측을 위한 특징 피라미드를 구축하는 경로이다. 높은 피라미드 계층에서부터, 비록 공간적으로는 비록 저수준일지라도 의미적으로는 더 강력한 특징 맵을 업샘플링하여 더 높은 해상도의 피처를 구현한다. 이때 최근접 이웃 업샘플링(nearest neighbor upsampling) 방법을 사용한다. 그 후, 상향식 경로에서 구축된 특징 피라미드와의 lateral connection을 통해 이러한 특징을 강화한다. lateral connection은 상향식 경로와 하향식 경로에서 동일한 크기의 특징 맵을 병합하는 연결을 의미한다. 이때, 상향식 피처 맵은 더 저수준의 의미론적 특성을 갖지만 서브샘플링 횟수가 더 적기 때문에 특징 맵에서 특징을 더 정확하게 식별하는 데 도움을 준다.

[그림 7] Building block using lateral connection at top-down pathway

[그림 7]은 하향식 특징 맵을 구성하는 과정을 보여준다. 우선 상위 특징 맵에서 공간 해상도를 2배로 업샘플링한다. 그런 다음 업샘플링된 맵을 대응되는 상향식 피라미드와 더한다. 이때, 채널 크기를 줄이기 위해 1×1 컨볼루션 레이어를 적용한다. 이 과정은 최저층의 초고 해상도의 맵이 생성될 때까지 반복된다. 이렇게 형성된 특징 맵들의 집합을 {P2, P3, P4, P5}라고 했을 때, 각각 {C2, C3, C4, C5}과 동일한 크기를 갖는다. 피라미드의 모든 계층은 동일한 classifier와 regressor를 공유하기 때문에 모든 특징 맵에서 차원(채널 수, d)을 고정해야 할 필요가 있다. 이 논문에서는 d = 256으로 설정하여 모든 하향식 경로의 레이어는 256개의 채널 출력을 갖는다.

 

구체적인 예를 들면, 상향식 피라미드의 C5가 7x7x2048의 크기를 갖는다고 하자. 이는 1x1 conv에 의해 7x7x256으로 축소되어 P5가 된다. P5는 다시 업샘플링을 통해 14x14x256의 크기가 된다. 그리고 1x1 conv에 의해 14x14x256의 크기를 갖게 된 C4와 결합하여 P4가 된다. 이러한 과정이 계속 반복된다. 덧붙여 하향식 경로의 레이어에는 ReLU나 Sigmoid와 같은 활성화 과정이 없다. 이는 경험적으로 큰 영향을 주지 않기 때문이다.

4. 결론

논문은 ConvNets 내에서 특징 피라미드를 구축하기 위해 FPN이라는 효율적인 프레임워크를 제시했다. FPN은 이미지 피라미드를 계산할 필요 없이 특징 피라미드의 연구와 응용을 위한 방안을 제공한다. 이 연구는 딥 컨볼루셔널 네트워크의 강력한 성능에도 불구하고 피라미드 표현을 사용해 멀티스케일 문제를 해결하는 것이 여전히 중요하다는 것을 시사한다.

 

 

참조: https://github.com/kuangliu/pytorch-fpn/blob/master/fpn.py