FPN은 2-stage-detector 모델로 기존의 모델들은 정확도와 속도는 trade-off 관계를 유지하였다. 2-stage 모델은 정확도가 높은 대신 속도가 굉장히 느린 문제점을 해결하기 위해 나온 모델이 FPN이다.
기존의 OD모델은 작은 물체를 탐지하는 것에 어려움이 있었다. 이를 해결하기위해 다양한 방법들을 사용하였다.
하나의 image를 여러 scale로 resize하여 Conv연산 후 classifier에 전달하는 방식으로 각각의 scale마다 독립적으로 연산되기 때문에 메모리를 많이 차지하며 매우 느리다.
현재 OD모델들이 빠른 탐지를위해 사용되는 방식으로 Yolov1에서 사용된 방식이다. 매우빠른 속도를 보여주는 반면 정확도가 다소 떨어지는 결과를 보여준다.
SSD에서 사용하는 방식으로. multi-scale feature map을 사용하기 때문에 정확도가 높지만 모델의 깊이에 따라 큰 semantic gap이 발생하며 high-resolution feature map은 object detect를 방해하는 representational capacity를 low-level feature가 가진다.
SSD는 해당 문제때문에 network의 중간부분부터 feature map을 사용하지만 high-resolution feature map은 small object의 중요한 정보를 담고있기 때문에 적절치 않은 방법이라고 논문의 저자는 설명한다.
FPN논문 그 자체로 multi-scale feature map을 그대로 사용하며 앞서 설명한 representational capacity문제를 해결하기위해 top-down 방식으로 서로 다른 scale의 feaure map을 merge하여 각 object에 대해 scale-invariant를 유지한다.
FNP은 RPN과 Fast RCNN detector를 기반으로 ResNet을 backbone으로 사용하며 단일 scale image를 사용해 다양한 scale의 feature map을 출력한다.
feature pyramid를 build하는 과정은 bottom-up pathway, top-down pathway, 그리고 lateral connections로 이루어져 있다.
bottom-up pathway는 ConvNet에 image를 입력하여 씩 down-smapling하는 과정이다. 종종 동일한 크기의 output map을 생성하는 layer들이 있으며 이들은 같은 stage에 있다고 설명한다.
각 stage마다 마지막 layer를 pyramid level로 지정하는데 가장 깊은 layer가 가장 강력한 feature를 지니기 때문이다.
ResNet의 경우 마지막 stage의 residual block을 사용한다. 이를 라 하고 각각 conv2, conv3, conv4, conv5의 output을 의미한다. 또 각각의 output은 원본에 대해 의 stride를 가진다. 이 때 conv1은 사용하지 않는데 이유는 너무 큰 메모리를 차지하기 때문이다.
Top-down pathway는 Bottom-up pathway를 통해 생성된 feature map을 up-sampling하여 이전 layer의 feature map size와 같게 만들어 merge하는 과정이다.
이 과정에서 nearest neighbor up-sampling과정을 처진다.
해당 과정을 거친 후에 모든 pyramid level feature map에 1x1 conv연산을 해주어 channel(=256)을 맞춘 후 element-wise 연산을 수행한다.
이 후 merged map에 3x3 conv연산을 해주어 finest feature map을 생성한다. 이를 라 한다.
- 논문에서 coarse, fine이라는 단어가 자주 등장한다. 사전적으론 거친, 고운이라는 뜻이지만 프로그레밍 용어에선 넓은 범위, 좁은 범위와 비슷한 느낌의 뜻을 지닌다.
conv 연산을 거치며 변화하는 feature map을 시각화한 사진이다. (4, 0) feature map이 coarsest하고 (0, 0) feature map이 finest한 feature map이다.- 논문에서 merge map에 3x3 conv연산을 적용하는 이유로 aliasing effect를 언급한다. 계단현상으로 불리며 보다 coarse한 feature map을 위해 적용한다.
각 pyramid level feature map을 RPN에 전달하여 region proposal을 진행하여야 한다. Faster R-CNN과 달리 multi-scale feature map을 사용하기 때문에 single-scale anchor box만 생성하면 된다.
논문에서는 각 마다 ascept ratio는 anchor의 넓이는 으로 설정해 총 15개의 anchor를 생성한다고 설명한다.
Fast R-CNN은 single-scale feature map을 사용하지만 FPN은 multi-scale feature map을 사용하기 때문에 region proposal을 어떤 pyramid level feature map과 mapping 해야할지 결정해야한다.
= mapping할 pyramid level
= target level(논문상 4)
= RoI의 width, height
= pretrained resolution size
= 괄호안의 수보다 작거나 같은 수(ex. 5.2=5, -6.4 = 7)
한국 IT 교육원
based on Andrew Ng
Feature Pyramid Networks for Object Detection
FPN 논문(Feature Pyramid Networks for Object Detection) 리뷰
Visualizing Feature Maps using PyTorch
좋은 글 감사합니다. 자주 올게요 :)