SPPNet의 논문 이름은 Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition이다. 저자는 Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun이다.
R-CNN은 object detection 데이터 셋인 PASCAL VOC dataset에 대해 성공적인 결과를 달성한 모델이다. Object detection 딥러닝 분야에서 가장 먼저 공부하는 모델이기도 하다.
Abstract
현존하는 deep cnn은 224 x 224 같은 고정된 사이즈의 이미지를 필요로 한다. 이는 인공적인 상황이며 임의의 사이즈의 이미지에 대한 recognition 정확도를 떨어뜨린다. 본 논문에서는 spatial pyramid pooling이라는 새로운 pooling 전략을 도입하여 이런 문제를 해결하고자 한다. SPP-net이라 불리는 새로운 네트워크 구조는 이미지의 사이즈에 관계 없이 fixed-length representation을 생성한다. Pyramid pooling은 object deformation에 대해서 robust한 성능도 지녔다. 위와 같은 개선들을 통해 SPP-net은 ImageNet 2012에 대해서의 accuracy 개선을 보였으며 Pacal VOC 2007과 Caltech 101에 대해서도 SOTA급의 classification 성능을 보였고 이는 single full-image representation과 no fine-tuning에 기반했다.
SPP-net은 object detection 작업에 대해서도 좋은 성능을 보였다. Entire image에 대해서 한 번만에 feature maps를 계산했으며 arbitrary regions (sub-images)에 대해서 fixed-length representations를 생성했고 이를 detector의 학습에 사용했다. 이런 방법은 반복적인 convoultional features의 계산을 회피할 수 있었다. Test images의 처리과정에서 R-CNN보다 24-102 빠른 속도를 지녔으며 Pascal VOC 2007에 대해서 comparable accuracy를 보였다.
ILSVRC 2014에 대해서 SPP-net은 총 38 팀 중에서 object detection에서는 2위를, image classification에서는 3위를 달성하였다.
1 Introduction
Deep-networks는 최근 image classification, obejct detection, 그외 많은 recognition tasks나 non-recognition tasks에 대해서 괄목할만한 발전을 이루었다. 하지만 일반적인 CNN은 fixed input image size를 강요하는데 이는 aspect ratio와 scale of image input을 제한한다.
많은 경우 Figure 1에 나온것 처럼 image의 crop이나 warp를 통해서 이미지의 크기를 맞추는데 이는 unwanted geometric distortion을 야기할 수도 있다.
CNN이 fixed input size를 필요로 하는 이유는 무엇일까? 우선 CNN은 2개의 파트로 나뉘는데 앞부분인 convolutional layers과 뒷부분인 fully-connected layers다. Conv 부분은 fxed size가 필요없지만 FC 부분은 FC 자체의 정의 때문에 고정된 사이즈가 필요하다. 따라서 이 FC 부분에서 fixed-size constraint가 발생한다.
해당 논문에서는 spatial pyramid pooling (SPP)를 도입하고, SPP layer를 on the top of the last convolutional layer에 적용함으로써 이 fixed-size constraint를 제거한다. SPP layer는 features를 pool하고 fixed-length outputs를 생성하고 이를 FC layers에 공급한다. 다시 말해서 본 논문에서 제시하는 network 구조는 network hierarchy에서 오는 deeper stage에서 features의 information을 aggregation하여 초반부에서의 crop이나 warp를 피하게 된다.
Spatial pyramid pooling은 spatial pyramid matching (SPM)이라고도 불리며 이는 Bag-of-Words (BoW) 모델의 확장판이다. 이는 이미지를 더 작은 부분으로 나누어 finer에서 coarser levels로 분할하고, 그리고 local features를 다시 취합한다. SPP는 key component다. SPP-net은 임의의 이미지에 대해서 testing 가능할 뿐만 아니라 tranining에서도 variable-size images로 sacle-invariance이며 overfitting도 감소시킨다. SPPnet은 위와 같은 장점들 덕분에 image classification과 object detection 모두에서 좋은 성과를 거두었다. SPPnet을 적용한 데이터는 Caltech 101, Pascal VOC 2007, 그리고 ILSVRC 2014다.
2 Deep Networks with Spatial Pyramid Pooling
인기 있는 seven-layers 구조를 가정해보자. 첫 5개의 layers는 conv이며 남은 2개는 FC다. 이때 몇몇 conv layers의 뒤에는 pooling layers가 뒤따라 온다.
Figure 2에서는 some features maps를 시각화했다. 2(c)에서는 strongest activated images from $conv_5$ layer를 보여준다. 예를 들어서 왼쪽의 택시 이미지의 경우 filter #55에서 가장 강력한 영향을 보이는 semantic conent가 activated임을 볼 수 있다. Figure 2의 시각화를 통해 알 수 있는 사실은, 이미지의 사이즈를 고정하지 않고도 deep convolutional layers가 traditional methods와 유사하게 feature maps를 생성한다는 사실이다. Traditional methods로는 SIFT vectors, image patches, densely extracted and encoded (vector quantization), sparse encoding, Fisher kernels로 features를 만들고 BoW나 spatial pyramids로 pooling하는 방법이 있다. 이제 밑에서는 그림과 함께 SPP layer에 대해서 설명한다.
Spatial pyramid pooling layer의 구조는 Figure 3에 나와있듯이 다양한 크기의 pooling을 이용한 다음 fixed-length representation (vector)를 도출한다. SPP layer에서는 global pooling을 사용한다. Image classificaiton에서는 global average pooling을, weakly supervised object detection에서는 global max pooling을 사용한다.
Figure 4에서는 global max pooling after conv 5의 예시를 보여준다. 각기 다른 window size를 가진 pooling을 이용하여 서로 다른 정보를 취합한다. 이를 논문에서는 3-level pyramid pooling이라고 한다. 이때 window의 size와 stride를 정하는 공식은 다음과 같다. feature maps가 a x a 의 크기일 때, win = ceil(a / n )이고 str = floor( a / n )이다. 이때, n은 pyramid level의 bin이다. 가령 1x1 pyramid pool의 경우 n은 1이다.
저자들은 SPPNet을 single-size image training과 multi-size training의 두 가지를 수행했다. Single-size image는 말 그대로 하나의 size를 가진 이미지로 NN을 학습하는 방법이다. Multi-size training은 동일한 네트워크에 대해서 2개 이상의 사이즈를 가진 이미지를 학습하는 방법이다. 본 논문에서는 180x180과 224x224의 두 사이즈를 실험했다. 이때, 180x180은 224x224의 리사이즈 이미지를 사용했는데 이는 resolution만 변경함으로써 content나 layout의 변경을 방지하기 위함이다. Switch overhead를 방지하기 위해서 두 사이즈의 이미지 데이터를 epoch 마다 번갈아가며 학습했다고 한다. (본인이 이해한 바에 따르면 아마도 홀수번째는 224x224를, 짝수번째는 180x180을 학습하는 식으로 진행한 듯 하다.) 위 실험의 목적은 여러 인풋 사이즈를 사용해서 잘 최적화된 fixed-size implementation의 성능을 레버리지 할 수 있을지를 알아보고자 함이다.
3 SPP-Net for Image Classification
저자들은 Table 1에 나온 것과 같이 ZF-5와 Convnet-5(AlexNet), Overfeat-5/7의 세 가지 모델에 SPP를 붙여서 실험을 수행했다.
Table 2에서 볼 수 있듯이 no SPP, Single sized SPP, Mult sized SPP를 모두 사용하여 albation study로 SPP가 효과가 있음을 보였다. top-1과 top-5 error가 모두 하락했다.
저자들은 ImageNet 2012에 대해서 이미지를 256 x 256으로 리사이즈 해서 진행했다. 공정한 비교를 위해서 224x224와의 성능도 비교를 했다. Table 3에 표시된 1 full이 256x256이고 1 crop이 224x224다. Full을 사용했을 때 crop보다 error rate가 하락했다.
Table 4와 5를 통해서 ILSVRC 2014 classification 성능에서 GoogLeNet, VGG에 이은 3위를 차지했음을 알 수 있다.
Talbe 6은 Pascal VOC 2007 image classification 성능을, Table 7에서는 Caltech 101 image classifcation 성능을 나타내는데 SPP의 적용이 성능 향상에 도움이 됨을 알 수 있다. 최종 결과는 Table 8에 나와있다.
4 SPP-Net for Object Detection
R-CNN은 object detection 분야에서 SOTA인 모델이다. R-CNN 외에도 object detection 분야에서 Deformable Part Model (DPM)이나 HOG, Selective Search (SS) 등의 모델을 통해 feature extraction이 가능하다.
저자들은 selective search의 fast mode를 사용해서 2000개의 candidate windows per image를 생성한 다음 이미지를 resize하고 ZF-5 (single-size trained)에 기반한 SPP-net model를 사용했다. 이때 총 4-level spatial pyramid (1x1, 2x2, 3x3, 6x6, totally 50 bins)를 사용했으며 최종적으로 256x60 = 12,800-d representation을 생성한다. 이를 binary linear SVM classifier에 집어넣어 분류한다. 다른 negative samples과 70% 이상의 IoU를 지니면 이를 제거한다. 테스트 과정에서는 non-maximum suppression을 scored windows에 적용하고 threshold는 30%다. Multi-scale feature extraction도 실험했는데 이미지 사이즈는 480, 576, 688, 864, 1200을 수행했다.
Table 9의 caption에 나와있듯이 ft는 fine-tuning, bb는 bounding box를 의미한다.
SOTA인 R-CNN과 동일하거나 약간 더 좋은 성능을 했음을 알 수 있다.
또한 conv time, total time을 보면 R-CNN에 비해서 훨씬 빠르게 학습할 수 있음을 확인했다.
다양한 detection method와의 비교인데 SPP가 좋은 성능을 냈음을 확인할 수 있다.
최종적으로 ILSVRC 2014에서 SPP-net이 obejct detection에서 2위를 차지했다.
5 Conclusion
SPP는 differenct scales를 다루는 flexible solution이며 image classification과 obejct detection에서 좋은 성능을 거두었다.
Appendix
Mean Subtraction
224 x 224 cropped training, and testing images에서는 subtracting the per-pixel mean이라는 pre-processing을 수행했다.
또한 ImageNet에서는 224 x 224 mean image로 warp한 다음에 subtract를 수행했다.
Pascal VOC 2007과 Caltech 101에 대해서는 constance mean (128)을 사용했다.
Implementation of Pooling Bins
Pyramid pooling의 window size를 도출하는 방법이다.
마지막 conv feature maps나 full image나 window의 사이즈가 $w \times h$라고 할 때,
$n \times n$ bins의 pyramid의 $(i, j)$-th bin은 [ floor( $ \frac{i-1}{n} w$, $ \frac{i}{n} w$ ) ] x [ floor( $ \frac{j-1}{n} w$, $ \frac{j}{n} w$ ) ]의 range에 속한다.
Mapping a Window to Feature Maps
Detection 알고리즘에서 쓰는 window를 이용하여 convolutional feature maps의 crop에 사용했다. 이를 활용하여 여러차례 sub-sample을 수행했다.
Window의 corner point를 feature maps로 project한다고 한다. 이를 통해 image domain 에 있는 corner point를 receptive field의 중앙에 오도록 만든다. 이 매핑 방식은 모든 conv와 pool layers의 padding에 의하기 때문에 복잡하다. 이를 보다 단순하게 코드에 적용하기 위해서 floor( $p$ / 2) pixels만큼 padding을 수행하며 이때 $p$는 filter의 size다. $(x', y')$를 중앙으로 하는 response라고 할 때, image domain의 effective receptive field는 $(x, y) = (Sx', Sy') $를 중앙으로 한다. 이때 $S$는 all previous strides의 곱이다. 현재 모델에서 $S$는 ZF-5에 대해서는 16이며 Overfeat-5/7에 대해서는 123의 값을 가진다. Given window in a image domain에 대해서, 저자들은 left (top) boundary는 $x'$ = floor($ x / S )$+1이며 right (bottom) boundary $x'$ = ceil($ x / S )$-1이 된다. 만약 padding이 floor( $p$ / 2)가 아니라면 적절한 offset을 $x$에 더해상쇄해주었다.
Examples of Detection
Appendix에 나와있는 detection results의 예시를 끝으로 리뷰를 마친다.
'Computer Vision' 카테고리의 다른 글
Show and Tell = Neural Image Caption (NIC) (2014) 모델 간단 리뷰 (0) | 2024.04.13 |
---|---|
SPPNet(2014) PyTorch Implementation (0) | 2024.04.12 |
R-CNN (2014) PyTorch Implementation (0) | 2024.04.08 |
R-CNN (2014) 논문 리뷰 (0) | 2024.04.04 |
GoogLeNet = Inception v1 (2014) PyTorch Implementation (0) | 2024.04.03 |