• toc {:toc}

Overview of SPPnet

SPPnet은 기존 CNN(e.g. AlexNet)의 이미지 입력을 224x224와 같이 고정으로 설정해야 하는 단점을 해결하는 Spatial Pyramid Pooling(SPP) 방식을 제시했다. SPP를 통해 입력의 크기가 어떻든 간에 고정 길이 벡터 표현을 생성할 수 있다.

image

  • SPPnet의 전체적인 구조는 다음과 같다.
  1. 입력 이미지를 CNN에 넣는다.
  2. CNN으로부터 추출된 특징맵에 Spatial Pyramid Pooling layer를 적용한다.
  3. Spatial Pyramid Pooling layer를 통해 나온 고정 길이 벡터 표현을 fully-connected layers의 입력으로 사용한다.

Problem

image

  • 이전 CNN 구조의 경우 입력 크기가 224x224로 입력 이미지의 비율과 크기가 제한되었다.
  • 비율, 크기 제한은 이미지의 왜곡, 정보의 왜곡, 손실을 만들고 정확도에 영향을 미칠 수 있다.

CNN 구조에서 고정 길이 벡터가 필요한 부분은 fc layer가 사용될 때이므로 SPPnet에서는 conv layers는 이미지 크기에 관계없이 사용하고, fc layer 이전에 SPP를 사용하여 고정 길이 벡터를 입력으로 넣어주는 구조를 취한다.


Main Idea - Spatial Pyramid Pooling

Spartial Pyramid Pooling의 방식은 특징을 함께 모으는 BoW(Bag of Words) 방식에서 착안했다고 한다.

Why is Conv layer fine?

image

  • Conv layer 5개, Fully-connnected layer 2개로 구성된 CNN을 가정하자.
  • 위 그림은 (a) Pascal VOC 2007 이미지, (b) conv5의 특징맵, (c) conv5에 대한 이미지넷 이미지의 반응 정도를 표시한 그림이다.

(a), (b)를 비교했을 때 물체의 특징, 형체를 나타낸 부분에 강하게 활성화가 되어 있는 부분을 알 수 있다. 때문에 conv layer 앞에서 미리 이미지를 조정할 필요없이 conv를 거친 후 특징맵을 사용하더라도 원본 이미지를 사용한 것과 같은 효과를 보인다는 것을 입증한다.

Spatial Pyramid Pooling

image

SPP는 spatial bins을 설정한다. Bin은 위 그림의 4x4, 2x2, 1x1의 사각형 하나를 말한다. 위 그림에서는 bin의 개수는 21개이다. 이후, 해당 bin의 개수에 맞는 pooling 개수가 산출되고(e.g. 21bin일 때 4x4, 2x2, 1x1 pooling) 각 pooling에 대해 window size와 stride를 조정해 고정 크기의 pooling 출력을 생성한다. 즉, pooling하여 나올 출력을 고정하고 이미지가 해당 크기로 출력되도록 설정한다. 이때의 pooling은 MaxPooling이다.

  • Window_size = Ceil(feature map size / pooling size)
  • Stride = Floor(feature map size / pooling size)
  • ex) 13x13 feature map, 3x3 pooling을 하는 경우
    • window size = ceil(13/3) = 5
    • stride = floor(13/3) = 4
    • 다음을 통해 3x3 pooling 결과가 나온다.
    • Window_size와 Stride는 adaptive하게 설정된다.

이후 pooling 출력을 concat, flatten 시킴으로써 하나의 고정된 길이의 벡터 표현으로 설정할 수 있다.

image

SPP를 통해 4x4, 2x2, 1x1 pooling 하는 경우를 표현한 그림이다. 다양한 크기의 추출을 통해 이미지의 다양한 공간적 정보를 얻을 수 있다. 큰 pooling 결과는 광범위한 정보, 작은 pooling 결과는 세부적인 이미지 정보를 갖는다.


Object Detection of SPPnet

image

  • SPPnet의 Object Detection 구조는 다음과 같다.
  1. 입력 이미지를 CNN에 넣는다.
  2. CNN으로부터 추출된 특징맵에 Selective Search와 같은 Proposal Method를 사용해 RoI를 선정한다.
  3. 각 RoI에 대해 Spatial Pyramid Pooling layer를 적용한다.
  4. Fully-connected layers를 통과하고 난 결과를 cache로 저장한다.(SVMs와 Bbox reg가 연산을 공유하지 않기 때문)
  5. SVM을 통해 분류 작업을 한다.
  6. Bbox reg와 Non Maximum Suppression을 통해서 bounding box를 구한다.

Compare RCNN with SPPnet

image

  • 장점
  1. SPPnet은 RCNN의 2000개의 RoI에 대해 각각 CNN을 적용함으로써 발생하는 비용을 하나의 이미지에 CNN을 적용함으로써 감소시켰다
  2. 입력 이미지의 크기, 비율에 영향을 받지 않는다.
  3. Pyramid 방식을 통해 여러 공간적 특징을 추출해 FC layer로 전달한다.

참고문헌