Feature Pyramid Networks for Object Detection
이 포스트는 논문 내용을 전체적으로 다루되 간략하게만 정리합니다. 구성도 논문과 다릅니다.
1. Preview
원본 이미지의 해상도를 낮추되 high-level feature을 추출하는 bottom-up pathway(좌측)과 botton-up pathway에서 역방향으로 feature을 합쳐나가는 top-down pathway를 이용해 scale에 덜 영향을 받는 object detection 모델을 설계한다.
2. CNN에서 resolution↔feature
CNN에서 망을 따라 연산이 시행될수록 보통 feature map은 작아지는데, 이때 resolution은 점점 작아지고 feature은 점점 고수준(high-level)이 된다. low-level, high resolution이란 선 등 국소적인 feature에 주목한다고 보면 되고, high-level, low resolution이란 점점 눈, 이마, 입에서 사람 등으로 고수준의 정보를 담게 된다고 보면 된다.
3. 기존의 방식
(a) Featureized image pyramid
하나의 이미지를 resize하여 다양한 scale로 네트워크에 입력하는 방식으로, inference speed가 느리고 메모리를 많이 소모한다.
(b) Single feature map
저수준 정보에 집중하기 힘들다. Object Detection에 사용하기엔 성능이 떨어진다.
(c) Pyramidal feature hierarchy
Conv layer마다 추출한 feature map에 대해 object detection을 하는 방법으로, Single Shot Detector에서 사용한 방식이다. multi-scale feature map을 사용하기에 성능은 높지만 feature map 간의 해상도 차이가 커서 semantip gap이 발생한다. 특히 low-level feature까지 학습하면 representational capacity가 손상되어 객체 인식률이 낮아지고, SSD에서는 이를 해결하기 위해 CNN 중간 지점부터 feature map을 추출한다. 물론 이렇게 하면 작은 객체의 탐지가 어려워 질 수 있다고 FPN의 저자는 주장한다.
4. FPN
구조는 매우 단순하다.
- ResNet(bottom-up pathway)
2. 1x1 convolution(depthwise convolution)과 nearest neightbor upsampling을 통해 high-level feature map에서 low-level feature map순서로 정보를 합쳐나간다. (lateral connection)
이때 nearest neightbor upsampling이란 아래 그림과 같이 단순히 각 픽셀을 복사하는 방식을 말한다. 또, 1x1 convolution이란 feature map의 크기를 변화시키지 않고 channel의 수만 변화시키는 convolution 연산을 말한다. depthwise convolution이라 부른다.
5. Object Detection Review(R-CNN, Fast R-CNN, Faster R-CNN)
5.1 R-CNN
- 고전적인 방식(selective search)으로 RoI 박스를 찾고
- 각각의 박스에 대해 CNN을 돌린다.
computational cost, memory cost가 많이 든다는 단점이 있다.
5.2 Fast R-CNN
- 고전적인 방식으로 RoI 박스를 찾고
- 이미지 전체에 CNN을 돌려서
- CNN 결과 나온 feature map에서 RoI 박스에 해당하는 부분을 찾아 그곳을 분석한다.(RoI Pooling)
5.3 Faster R-CNN
CNN 돌려 feature map 얻어내고, RPN(Region Proposal Network) 돌려서 bounding box proposal 뽑아내고, classifier을 돌린다. 쉽게 말해 RPN+Fast R-CNN이다.
6. Detectron2(Faster R-CNN + FPN backbone)
기존의 ResNet backbone인 Faster R-CNN과 비슷하지만, FPN의 방법론(그리고 모델 변형)을 도입해 위와 같은 architecture을 제시한다.
\(k\)에 대한 수식은 해당 RoI가 어느 feature map과 매핑되어야 하는지 나타내는 수식이다. RoI의 넓이가 작을수록(객체 크기가 작을수록) 해상도가 높고 low-level인 feature map, 아닐수록 high-level feature map과 매칭이 되도록 설계를 했다는 것을 알 수 있다.
7. Results
기존의 모델보다 좋은 성능을 보이는 것을 알 수 있다.