5 Mar 2019

Paper Review - Object Detection 4 (Feature Pyramid Networks for Object Detection)

이번 포스팅에서는 Object Detection의 마지막으로, FPN이라고 불리우는 Feature Pyramid Networks에 대해 알아보겠습니다. FPN은 Object Detection Task에 있어서 다양한 스케일의 물체를 탐색하는데 도움을 주는 네트워크입니다.


1. Introduction


a는 기존의 이미지에 대해서 먼저 다양한 스케일의 이미지 피라미드를 구성합니다. 그리고 각각의 스케일의 이미지에 대해서 HOG라던지 SIFT 등의 방법을 통해서 피처를 추출하여 detection을 하게 됩니다. 각각의 스케일의 이미지에 대해서 수행하기 때문에 시간적으로 오래 걸린다는 단점이 있습니다.
이에 반해 b에서는 하나의 인풋 이미지에 대해 수행을 하게 됩니다. 그리하여 convnet의 마지막 단에서 얻어낸 피처맵에 대해서만 detection을 하기 때문에 성능이 많이 떨어지는 것을 이해할 수 있습니다.


c에서는 b에서처럼 이미지 하나에 대해서 convnet을 거치는 것은 같습니다. 그러나 각 layer에서 추출된 각각의 피처맵들에 대해 모두 detection을 합니다. 그렇게 되면 여러 스케일의 피처맵에 대해 모든 위치를 탐색하기 때문에 성능을 보완한 것이라고 볼 수 있습니다. Single Shot Detector이 이러한 계층적인 피라미드 구조의 피처를 convnet에 적용한 첫 시도라고 합니다.
d가 이제 본 논문에서 제시하는 것으로, c에서 얻은 피처맵들이 해상도가 많이 떨어짐을 보완하기 위한 것입니다. 해상도가 떨어지므로 작은 object를 detect하는데에 성능이 부족하기 때문에 피처맵의 해상도 보완을 하자는 것이 본 논문에서 제시하는 네트워크의 핵심입니다.


2. Feature Pyramid Networks


먼저 하나의 인풋 이미지에 대해서 ConvNet을 거치게 됩니다. ConvNet을 거치면서 Stride를 2씩 주어가면서 사이즈가 절반이 되도록 피처맵을 만들어갑니다. 그렇게 scale이 작아지도록 피처맵을 만들어내는 과정을 Bottom-up pathway 라고 부르고 있습니다.
그런 다음 맨 마지막 단의 피처맵을 그대로 가져와서 반대로 스케일을 두 배씩 키우는 Top-down pathway를 거치게 됩니다. 여러가지 방법 중 nearest neighbor upsampling이라는 것을 진행하게 되는데, 본 논문에서는 factor를 2로 설정하여 원래 위치 외에 나머지에는 0을 채우는 방식으로 scale을 키운 M들을 만듭니다.
그렇게 upsampling한 피처맵 M과 ConvNet에서 구해지는 각각의 피처맵을 elementwise addition을 통해서 더해주게 되고 다시 3x3 Conv를 통해서 해상도를 보완한 최종의 피처맵 P들을 만들어내게 됩니다. 이 최종 피처맵 P들에서 각각 object detection을 수행하여 시간도 단축하고 성능도 보장하도록 도와주는 네트워크가 되는 것입니다.


3. FPN for Region Proposal Network


논문에서는 5개 종류의 넓이와 3개 종류의 ratio를 조합해서 총 15개의 앵커박스를 만든다고 하고 있습니다. 그 이해를 돕기 위해 위의 사진을 보면, 그림에서는 특정 윈도우의 중심점인 앵커를 기준으로 3x3 = 9개의 앵커박스를 만들었습니다. 그리고 그 박스마다의 ground truth 값을 label로 삼아서 분류기를 학습하는 것입니다. 그렇게 그 박스가 실제 바운딩 박스와 유사한지 아닌지에 대해서 학습해서 적절한 region을 propose하는 네트워크를 학습시키는 것입니다.
오른쪽의 수식이 학습에 사용되는 loss인데, classifier의 loss와 regressor의 loss의 조합으로 이루어져 있습니다. 먼저 regressor에 대한 loss는 t값들의 오차, 즉 실제 박스의 너비와 높이 등 위치가 얼마나 차이나는지에 대해 나타내는 값입니다. 여기에 p_i를 곱하는 것은 그 박스에 객체가 있는지에 대한 확률을 곱하는 것으로써, 객체가 있는 박스에 대한 loss를 count한다는 의미로 해석하시면 될 것 같습니다. 그리고 N은 normalization을 하고, 람다는 classifier와 regressor를 같은 수준으로 만들어주기 위한 장치로 생각하시면 됩니다. classifier에 대한 loss는 간단하게, object여부에 대한 확률 p에 대해 loss를 구하는 것입니다.
여태까지 설명한 것은 Faster R-CNN에 제시된 RPN인데, 논문에서는 FPN을 RPN에 적용한다는 것을 설명하고 있습니다. 원래의 RPN은 하나의 피처맵에만 적용했지만, FPN을 사용해서 만들어낸 다양한 스케일의 피처맵에 대해 모두 적용한다면 정밀한 object detection이 가능하다는 것이 본 논문의 contribution 입니다.


4. FPN for Fast R-CNN

앞의 Region Proposal Network에서 얻는 결과는 다양한 스케일에서 얻어낸, 서로 다른 크기의 region들이므로 ROI 기법을 통해 같은 크기로 변환시키고 있습니다.

ROI는 Region of Interest Pooling으로, 다른 크기라도 같은 크기의 section으로 분할해서 max-pooling을 진행하는 방식입니다. 위 그림처럼 정해진 윈도우에 대해서 2x2의 section으로 만들어주고 싶다고 하면, 비슷한 수의 pixel을 같은 section으로 하여 각각의 section에 pooling을 진행해서 만들어주는 것입니다. 이렇게 다양한 스케일의 피처맵에서 윈도우를 같은 크기의 벡터로 표현하게 되면, 정해진 Fast R-CNN 구조에 넣어서 학습을 시키도록 적용하는 것이 본 논문에서 제시하는 바입니다.


5. Conclusions

  • 다양한 scale의 object를 찾기 위한 방법론

  • Robustness와 performance 모두 향상됨

  • Bottom-up pathway, Top-down pathway, lateral connection 모두 중요한 단계임을 실험에서 보임

  • Image pyramid에 대해 일일히 계산하지 않아도 되기에 Fast R-CNN에 적용했을 때에도 더 빠르고 정확한 결과를 가져옴


다음 포스팅에는..

text summarization, 즉 문서에 대한 요약에 대한 개념 및 논문에 대해서 살펴보겠습니다.


Tags:
0 comments