Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
Existing deep convolutional neural networks (CNNs) require a fixed-size (e.g., 224x224) input image. This requirement is "artificial" and may reduce the recognition accuracy for the images or sub-images of an arbitrary size/scale. In this work, we equip th
arxiv.org
0. 핵심 요약
고정 입력 이미지 요구를 없애기 위해 Spatial Pyramid Pooling을 제안
이미지 size/scale에 상관없이 fixed-length representations을 만드는 SPP를 도입한 SPPNet을 제안
SPPNet은 classification 뿐만 아니라 detection에도 유용
1. BackGround
- 기존 CNN의 문제점
기존 CNN 알고리즘들은 모두 입력 이미지로 고정된 사이즈의 이미지를 요구
이로 인해서 다양한 scale에 대한 적응력이 떨어져 모델이 표현할 수 있는 표현력이 떨어진다는 단점 존재
이를 보완하기 위해 다음과 같은 기법들을 활용
해당 그림은 CNN 구조에서 고정된 입력 이미지를 맞추기 위해 crop, 혹은 warp을 수행한 예시
위 그림을 보면 알 수 있듯이, 위의 과정을 수행하면 이미지 전체를 보고 판단하는 것이 아닌 변형되거나 잘린 부분만을 보고 판단해야 하는 문제가 발생
이는 이미지의 가장 중요한 정보인 local spatial information이 파괴되는 것이고, 물체 역시 변형이 일어나 정확한 정보 파악이 어려워짐
그렇다면 CNN은 왜 고정된 사이즈의 이미지를 요구할까?
이 질문에 대한 대답은 CNN architecture에 존재한다
CNN은 크게 2가지로 구성된다
1. Convolution layer
2. Full-connected layer
이 중 Convolution layer를 우선 보게 되면 이는 고정 이미지를 요구하지 않는다
convolution 자체가 sliding window 방식을 사용하기 때문에 이미지가 변하더라도 출력 이미지의 사이즈만 변할 뿐 모델이 작동하지 않는 것은 아니다
하지만 Full-connected layer는 다르다
fc layer는 특정 차원이 정해져 있고, 해당 차원을 벗어나면 모델이 작동하지 않는다
바로 이 부분 때문에 기존의 CNN은 고정 입력 이미지 사이즈를 요구해왔던 것이다
SPPNet은 바로 이 부분을 해결하기 위해 등장하였다
- Caltech101 Dataset
총 101 개의 클래스가 존재하는 데이터로써, 각 클래스마다 약 40여개에서 800여개의 이미지가 존재
모든 이미지는 300 x 200 해상도를 가지고 있으며, 2003년에 만들어졌음
Caltech 101
data.caltech.edu
- R-CNN
자세한 내용은 이전 논문 리뷰를 참고
Rich feature hierarchies for accurate object detection and semantic segmentation(R-CNN) Review
Rich feature hierarchies for accurate object detection and semantic segmentation Object detection performance, as measured on the canonical PASCAL VOC dataset, has plateaued in the last few years. The best-performing methods are complex ensemble systems th
rltjq09.tistory.com
2. 논문 핵심 내용
- SPP(Spatial Pyramid Pooling)
SPP는 기존의 Pooling layer를 대체하기 위해 등장한 layer
SPP layer를 활용하는 방식은 다음과 같다
기존의 CNN 모델에서 마지막 convolution layer 이후에 오는 pooling layer에 기존 layer 대신 SPP를 사용
이를 사용함으로써 기존에는 입력 이미지의 사이즈를 고정할 필요가 없어진다
SPP는 다음과 같이 작동한다
위 그림을 보면, 이미지의 feature map이 여러 크기의 사각형으로 나누어진다
그런 다음, 각 사각형이 모두 256 차원의 vector로 변환되고 이를 모두 concat 하여 다음 fc layer 로 전달한다
이때, 사각형을 나누는 기준은 다음과 같다
입력되는 feature map의 크기가 a x a 이고, 이를 n x n 으로 나누고자 할 때 silding window의 filter size는 $\lceil a/n \rceil$, stride는 $\lfloor a/n \rfloor$ 로 지정하여 나눈다
이는 각각 반올림과 내림을 의미하며, conv layer를 다음과 같이 수행하면 입력 feature map의 크기가 어떻더라도 항상 우리가 원하는 크기의 vector를 얻을 수 있다
논문에서는 n을 1, 2, 3, 6 총 4가지로 지정해서 multi-scale에 대한 학습을 진행하였다
이때, n = 1 인 부분이 있는데 이는 입력 전체를 1개로 보고 feature extraction을 진행한다는 의미이다
이는 global pooling 역할을 수행한다고 논문에서 언급하고 있으며, 장점으로는 model size를 줄여준다는 것과 over fitting을 방지한다는 장점이 있다
그렇다면, 이러한 방식으로 pooling을 수행하는 이유는 무엇일까?
가장 중요한 이유는 당연히 multi-scale 에 대한 능력을 높히기 위함일 것이다
존재하는 모든 물체 혹은 이미지들은 동일한 객체라고 하더라도 모두 다른 스케일과 크기를 가지고 있다
모델은 이를 모두 같은 것으로 인식하는 능력인 scale-invariance가 중요한데, 이는 단일 이미지 사이즈로 학습하는 것보다 다중 이미지 사이즈로 학습하는 것이 더욱 효과적이다
또한, 기존 R-CNN과는 다르게 SPPNet에서는 원본 이미지에서의 region 부분을 통해 feature를 추출하는 것이 아니라 convolution을 어느정도 거친 feature map을 활용해서 feature를 추출하고자 한다
위 그림은 각 filter가 어느 부분에서 가장 강력하게 활성화되는 지를 히트맵으로 표현한 그림이다
하나만 예시로 들어 설명하자면, filter 55번은 원형 모양에 대해 매우 크게 활성화되는 모습을 볼 수 있다
이는 각 filter 마다 모두 하는 역할이 다르다는 것이고 이러한 filter를 거쳐서 나온 feature map이 원본 이미지보다 더 많은 공간적 정보를 가지고 있다고 생각
따라서 원본 이미지가 아닌 feature map을 사용하였다고 함
위의 내용처럼 SPPNet은 feature map을 활용하기 위해 conv layer 이후에 사용되었고, 다양한 크기의 입력 사이즈를 활용할 수 있게 되어 crop이나 warp와 같은 과정은 필요가 없어지게 되었다
- Training Method
다양한 scale의 이미지를 활용할 수 있다보니, 이를 모델에 제대로 학습시킬 수 있는 학습 방법 역시 매우 중요하다
논문에서는 single-size 와 multi-size 방법 2개를 구분 지어서 설명하였다
1. single-size training
single image는 해상도를 224 x 224 로 고정하여 학습하기 때문에 기존의 방법들을 그대로 활용할 수 있다
2. multi-size training
해당 학습 방법이 논문에서 언급하는 가장 중요한 학습 방법이라고 할 수 있다
우선 해상도는 180 x 180, 224 x 224 총 2가지 해상도를 사용하였고, 180 x 180은 224 x 224 이미지를 resize하여 생성하였다
이는 둘 사이의 해상도에만 차이가 있을 뿐, 포함하고 있는 정보 자체는 동일하다는 것을 의미
이제 서로 다른 두 해상도를 활용해 학습을 진행하는 데, 진행하는 과정은 다음과 같다
1. 180 x 180 해상도로 먼저 single-size training을 1 epoch 수행한다
2. 224 x 224 해상도로 single-size training을 1 epoch 수행한다
3. 1과 2를 번갈아 가며 학습을 수행한다
위와 같이 학습을 진행하면서 모델은 동일한 모델을 사용하기 때문에 모델은 다양한 해상도에 학습을 할 수 있다 주장
위와 별개로 매 epoch 마다 해상도를 (180, 224) 사이에서 random으로 sampling 하여 학습하는 방법도 실험해보았음
- 기존 R-CNN에서 발전된 사항
기존 R-CNN을 보면, 1개의 이미지에서 2000개의 region proposal을 생성한 뒤 2000개를 모두 모델에 입력한다
하지만 SPPNet은 이미지를 1번 입력하면 2000개의 region proposal에 대해서 모두 출력이 가능하다
즉, 모델이 사용되는 횟수에서 엄청난 차이를 가져왔기 때문에 R-CNN 보다 약 100배 이상 빠른 속도를 보여준다고 한다
3. Model Architecture
SPPNet은 Classification, Detection 두 task에 대해 모두 적용해보았다
- Image Classification
우선 classification에서의 Baseline model은 다음과 같다
위와 같이 총 4개의 baseline model이 존재하며, SPPNet은 위 모델들에 마지막 pooling layer를 SPP로 대체한 것을 의미
학습을 수행하는 과정은 다음과 같다
ImageNet 데이터를 활용하였기 때문에 256에서 224를 총 5개 crop(중심, 4개의 코너 부분) 후 augmentation 기법인 horizontalflip과 color altering을 사용
dropout은 2개의 fc layer에서만 사용하였으며, learning rate는 0.01에서 시작해 error가 감소하지 않으면 10을 나눔
- Object Detection
object detection은 classification과는 다르게 region이 존재하기 때문에 수행하는 방식이 약간 다르다
SPPNet은 우선 R-CNN과는 다르게 이미지를 우선 Convolution layer를 수행한 뒤 feature map에서 region에 해당하는 부분만 SPP를 진행한다
이렇게 되면 convolution을 수행하는 횟수가 줄어들고, 박스 크기가 모두 달라도 SPP 특성 상 모두 고정 길이 vector로 변환되기 때문에 많은 이점이 존재한다
SPPNet 역시 Selective Search 방법을 통해 총 2000개의 region proposals를 생성하고 SPP를 적용
fc layer를 거쳐 나온 vector를 SVM Classifier를 통해 최종적으로 class를 결
4. Experiment
- Image Classification
다음은 ImageNet 2012 데이터에 대한 결과 표이다
SPP를 사용한 것이 사용하지 않은 것보다 더 뛰어난 성능을 보여주었고, single-size보다 multi-size를 사용하였을 때 더 좋은 성능을 보여주었다
해당 표를 통해 multi-scale로 학습을 진행하는 것이 모델 성능에 도움을 준다는 사실을 알 수 있다
다음은 test 시 1개의 crop된 이미지를 입력했는지, 전체 이미지를 입력했는 지에 대한 성능 차이이다
보면 모든 부분에서 전체 이미지를 입력하는 것이 더 좋은 결과를 보인다
이는 곧 전체 이미지를 보고 판단을 해야 공간적인 정보를 더 잘 활용할 수 있다는 것을 보인다
ILSVRC 2014 데이터에 대해서도 성능 평가를 진행해보았는데, 전체 모델 중 3위를 차지하였다
이는 VOC 2007 데이터에 대해 성능을 확인한 것인데, SPP를 거치면서 성능이 확 뛰는 모습을 볼 수 있다
다음은 Caltech101 데이터에 대한 결과인데, SPP를 사용했을 때 역시 성능이 좋아지는 것을 볼 수 있다
- Object Detection
다음은 PASCAL VOC 2007 에 대한 결과이다
R-CNN과 비교했을 때 성능도 향상되었지만, 더욱 눈에 띄게 향상된 것은 속도이다
이는 PASCAL VOC 2007 데이터에 대해서 각 class 별로 성능을 보여준 표이다
이는 ILSVRC 2014 Detection 데이터에 대한 결과로, 총 2위를 차지하였다
5. Contribution
다양한 스케일, 크기, ratio를 처리하는 flexible한 SPP(Spatial Pyramid Pooling) 제안
spatial pyramid pooling layer가 있는 network를 훈련시키는 솔루션을 제안
+ Comment
기존의 고정된 이미지 크기를 사용해야 한다는 고정관념에서 벗어나 다양한 크기를 활용했다는 점이 인상깊었다