[DLCV] SPP(Spatial Pyramid Pooling) Net

Deep Learning, Computer Vision

Posted by dongjune on October 21, 2020

SPP Net은 R-CNN의 문제점을 개선한 알고리즘이다.

R-CNN의 주요 문제점

  1. 2000개의 Region Proposal 이미지가 입력 되면서 Object Detection 수행 시간이 매우 길다.
  2. Region Proposal의 이미지들이 사이즈를 맞추기 위해 Crop/Warp 돼야 한다.

R-CNN의 개선 방안

1

  • 2000개의 Region Proposal 이미지를 CNN으로 Feature Extraction 하지 않고 원본 이미지만 CNN으로 Feature Map을 생성해준다.
  • 그 후에 원본 이미지에서 Selective search로 추천 된 영역의 이미지들을 Feature Map으로 매핑하여 별도 추출한다.

위에서는 원본 이미지로부터 단 한번의 Feature Extraction을 수행하기 때문에 실행 속도를 단축시킬 수 있다.
하지만 FC Input에는 동일한 크기의 Feature map이 들어가야 하는데 Feature map에 매핑하여 추출 된 이미지들은 제각각 다른 사이즈이다.
이를 해결한 것이 SPP Net이다. 2 Feature Map으로 투영된 서로 다른 크기를 가진 Region Proposal 이미지를 SPP Net의 고정된 크기 Vector로 변환하여 FC에 1D Flattened 된 input을 제공한다. 이제 SPP 가 어떤 식으로 고정 된 vector 값을 반환하는지 알아보자.

SPM(Spatial Pyramid Matching)

SPP를 이해하기 위해서 우선 SPM 기법을 알 필요가 있다.
5 SPM은 이미지들을 분면으로 나눠서 분면 마다 이미지 요소들의 histogram을 생성한다. 위 그림은 이미지 요소가 동그라미, 십자가, 마름모로 이루어져 있다고 가정하여 분면마다 3가지 요소 각각의 histogram을 만들었다. 6 위 그림은 동그라미, 십자가, 마름모 3가지 요소의 분면에 따른 값을 vector로 만들었다. SPM을 통해 분면의 개수만 동일하게 한다면 이미지 사이즈에 상관없이 모두 같은 크기의 vector를 생성할 수 있다.
예를 들어 아래의 그림은 8 x 12 크기의 이미지 이지만 위의 그림과 같이 3 x 16 = 48 의 크기를 갖는 vector가 생성 된다. 4

SPP (Spatial Pyramid Pooling)

SPP 는 SPM과 달리 Max Pooling 만 적용하여 vector를 추출하는 기법이다. 3 위와 같이 분면마다 max pooling으로 값을 추출하여, 분면의 개수와 vector의 크기가 같다.

SPP Net의 Object Detection

- 구조

7

  1. 원본이미지에서 Feature Map 추출
  2. Selective search를 통해 2000개의 region proposal 이미지 추출
  3. 원본 이미지에서 추출 된 Feature Map에 2000개의 Region Proposal 이미지를 매핑하여 2000개의 feature map 추출
  4. 서로 다른 크기의 이미지들의 크기를 맞추기 위해 SPP Net으로 동일한 크기의 vector들을 추출
  5. SVM Classifier와 Bounding Box Regressor을 통해 예측 수행

- R-CNN과 SPP Net의 비교

8 R-CNN과 달리 SPP Net은 이미지 한개당 한번의 CNN을 통과하여 실행 속도가 빠르다. 9