SPP Net은 R-CNN의 문제점을 개선한 알고리즘이다.
R-CNN의 주요 문제점
- 2000개의 Region Proposal 이미지가 입력 되면서 Object Detection 수행 시간이 매우 길다.
- Region Proposal의 이미지들이 사이즈를 맞추기 위해 Crop/Warp 돼야 한다.
R-CNN의 개선 방안
- 2000개의 Region Proposal 이미지를 CNN으로 Feature Extraction 하지 않고 원본 이미지만 CNN으로 Feature Map을 생성해준다.
- 그 후에 원본 이미지에서 Selective search로 추천 된 영역의 이미지들을 Feature Map으로 매핑하여 별도 추출한다.
위에서는 원본 이미지로부터 단 한번의 Feature Extraction을 수행하기 때문에 실행 속도를 단축시킬 수 있다.
하지만 FC Input에는 동일한 크기의 Feature map이 들어가야 하는데 Feature map에 매핑하여 추출 된 이미지들은 제각각 다른 사이즈이다.
이를 해결한 것이 SPP Net이다.
Feature Map으로 투영된 서로 다른 크기를 가진 Region Proposal 이미지를 SPP Net의 고정된 크기 Vector로 변환하여 FC에 1D Flattened 된 input을 제공한다. 이제 SPP 가 어떤 식으로 고정 된 vector 값을 반환하는지 알아보자.
SPM(Spatial Pyramid Matching)
SPP를 이해하기 위해서 우선 SPM 기법을 알 필요가 있다.
SPM은 이미지들을 분면으로 나눠서 분면 마다 이미지 요소들의 histogram을 생성한다. 위 그림은 이미지 요소가 동그라미, 십자가, 마름모로 이루어져 있다고 가정하여 분면마다 3가지 요소 각각의 histogram을 만들었다.
위 그림은 동그라미, 십자가, 마름모 3가지 요소의 분면에 따른 값을 vector로 만들었다. SPM을 통해 분면의 개수만 동일하게 한다면 이미지 사이즈에 상관없이 모두 같은 크기의 vector를 생성할 수 있다.
예를 들어 아래의 그림은 8 x 12 크기의 이미지 이지만 위의 그림과 같이 3 x 16 = 48 의 크기를 갖는 vector가 생성 된다.
SPP (Spatial Pyramid Pooling)
SPP 는 SPM과 달리 Max Pooling 만 적용하여 vector를 추출하는 기법이다. 위와 같이 분면마다 max pooling으로 값을 추출하여, 분면의 개수와 vector의 크기가 같다.
SPP Net의 Object Detection
- 구조
- 원본이미지에서 Feature Map 추출
- Selective search를 통해 2000개의 region proposal 이미지 추출
- 원본 이미지에서 추출 된 Feature Map에 2000개의 Region Proposal 이미지를 매핑하여 2000개의 feature map 추출
- 서로 다른 크기의 이미지들의 크기를 맞추기 위해 SPP Net으로 동일한 크기의 vector들을 추출
- SVM Classifier와 Bounding Box Regressor을 통해 예측 수행
- R-CNN과 SPP Net의 비교
R-CNN과 달리 SPP Net은 이미지 한개당 한번의 CNN을 통과하여 실행 속도가 빠르다.