Feature Pyramid Networks for Object Detection 논문읽기

srk lee
4 min readMay 30, 2018

--

Scale-Invariant는 object detection에서 아주 중요한 과제다. 예전에는 다양한 크기의 물체를 탐지하기 위해 이미지 크기를 리사이즈 하면서 물체를 찾았다(a). 하지만 이런 작업은 메모리와 시간을 아주 많이 잡아먹는다.

(b)와같은 형태로 cnn을 통해 단일 아웃풋으로 좀 더 robust한 예측을 할 수 있지만 (a)에 비해 성능이 부족하다. (c)와 같은 형태가 ssd에서 사용한 방법이다. cnn자체가 태생적으로 레이어를 거치면서 피라미드 구조를 만들고 레이어를 거치면서 더 semantic해진다.

이 논문에서 제안한 구조는 (d) skip connection, top-down, cnn forward에서 생성되는 자연적인 피라미드 구조를 합친다. forward에서 응축된 sematic 요소들을 top-down 과정에서 upsampling해 해상도를 올리고 forward에서 손실된 지역 정보들을 skip connection으로 보충해서 크기 변화에 강한 모델을 만든다. 또한 속도도 빠르다.

Bottom-up

위로 올라가는 forward 단계에서는 매 레이어마다 semantic을 응축하는 역할을 한다. 깊은 모델의 경우 가로, 세로 크기가 같은 레이어들이 여러개 있을 수 있는데 이 경우에 같은 레이어들은 하나의 스테이지로 취급해서 각 스테이지의 맨 마지막 레이어를 skip-connection에 사용한다. 왜냐 하면 마지막의 깊은 레이어가 더 강한 피쳐를 갖기 때문이다.

Top-down

아래로 내려가는 네트워크는 upsmapling하면서 많은 sematic을 내포함과 동시에 고해상도의 이미지를 만드는 역할을 한다. 여기서 skip-connection을 통해(여기서는 lateral connection 측면 커넥션이라 부른다) 같은 사이즈의 bottom-up 레이어와 합쳐서 손실된 지역적 정보를 보충한다.

그림에서 보이듯 top-down 과정 매 레이어마다 classifier/regressor가 적용되는데 같은 classifier/regressor를 사용하기 때문에 채널이 전부 같고 논문에서는 256을 사용했다. 때문에 skip connection을 합칠 때 1 x 1 레이어를 한번 거쳐서 채널을 맞게 바꿔준다.

왜 top-down이 중요한가?

top-down없이 bottom-up만으로 네트워크를 만들었을 때 성능이 안좋은데 레이어 별 semantic 수준이 너무 다르기 때문이다. 특히 이런 현상은 깊은 레이어에서 두드러진다.

lateral connection이 없으면?

lateral connection이 없으면 top-down레이어가 물론 높은 semantic을 가지고 있지만 지역 정보가 부정확해 정확도가 떨어진다.

피라미드 구조가 아니라면?

크기가 다른 각 레이어에서 예측하는 것이 아니라 top-down의 맨 마지막 레이어에서만 prediction 하면 baseline보다는 높지만 원 구조보다는 성능이 떨어진다. scale 변화에 덜 robust 해지기 때문이다. 피라미드 구조의 맨 마지막의 해상도가 높기 때문에 많은 anchor들이 적용됐는데도 성능이 그다지 높지 못한 것을 보면 앵커가 많은 것이 성능을 높이기에 충분치 않다는 것을 보여준다.

--

--