본문 바로가기
카테고리 없음

SPP-Net 논문 리뷰

by seungwonsong2 2025. 3. 25.

https://arxiv.org/abs/1406.4729

Abstract

기존 CNN은 고정된 크기(224X224)의 입력이미지가 요구되는데 이는 임의의 크기 이미지에 대한 인식 정확도가 낮아지게 됩니다. 해당 논문에서는 이를 해결하기 위해 “spatial pyramid pooling” 이라는 새로운 pooling 기법에 대해 소개합니다.

SPP-net은 이미지의 크기/스케일에 관계없이 고정 길이의 표현을 생성하며 객체 변형에 강합니다. 이러한 장점을 통해 일반적으로 모든 CNN기반 이미지 분류 방법을 개선하였고, 객체 탐지 분야에서 뛰어납니다. SPP-net 은 전체 이미지에서 feature map을 구하는 연산을 한번만 계산하여 고정된 크기를 출력하며 이는 합성곱 계산을 반복하지 않아도 됩니다.

이를 통해 ImageNet Large Scale Visual Recognition Challenge(ILSVRC) 2014에서 객체 탐지 2위, 이미지 분류 3위를 기록했습니다.

 

1 INTRODUCTION

CNN과 대규모 데이터로 인해 컴퓨터 비전은 급격한 변화를 보이며, 객체 탐지와 이미지 분류 분야에 기술이 크게 발전되었습니다. 그러나 CNN은 고정된 입력 이미지 크기(224X224)로 가로, 세로 비율 크기를 제한하고 있다는 단점이 있습니다. 임의의 크기 입력을 사용할 때, 기존의 방법으로는 crop/wrap 기법을 사용하는데 crop의 경우 전체 개체가 포함이 되지 않거나 wrap의 경우 왜곡으로 인한 인식 정확도 손상이 우려됩니다. 그렇기에 입력 크기를 고정하는 과정에서 성능 하락이 생기게 됩니다.

그렇다면 고정된 입력크기가 필요한 이유는? : CNN은 convolutional layer 와 fully-connected layer로 구성되어있다. conv layer의 경우 슬라이딩 윈도우 방식으로 고정된 이미지일 필요가 없지만 fully-connected layer는 고정된 크기의 입력 데이터를 받아야된다.

💡슬라이딩 윈도우: stride를 활용해 일정 간격만큼 이동하며 객체가 포함된 영역을 찾아내는 방식

이를 해결하기 위해 본 논문에서는 SPP(SPATIAL PYRAMID POOLING)방식을 소개합니다. SPP방식은 입력 이미지의 크기가 고정될 필요가 없는데 conv layer가 끝난 후 fc layer 이전에 SPP 레이어를 추가하여 해당 과정에서 고정된 크기의 결과 값을 내도록 합니다.

Spatial pyramid pooling은 SPM으로 알려져 있으며 BoW모델의 확장으로 성공적인 방법 중 하나입니다. SPP가 CNN에 대해 주목할만한 몇가지 속성을 가지고 있습니다.

  1. SPP는 입력 크기에 관계없이 고정 길이의 출력을 생성할 수 있다.
  2. sPP는 multi-level spatial bins를 사용한다.(기존 CNN은 하나의 윈도우만 사용) 3)SPP는 다양한 스케일의 피쳐를 pooling할 수 있다. 이러한 특징들이 인식 정확도를 높여줍니다.

SPP-net은 다양한 크기의 입력 이미지를 훈련할 수 있고, 이를 통해 스케일 불변성이 증가하고 과적합이 감소합니다. SPP의 장점은 CNN설계와 직교한다(즉, 특정 CNN 구조에 종속되지 않는다)입니다. ImageNet 2012 데이터 세트에 대한 실험에서 SPP가 기존 4가지 다른 CNN 아키텍쳐를 개선하는 것을 보여주었습니다.

또한, SPP-net은 객체 탐지에서도 큰 강점을 보입니다. 기존 R-CNN 은 VOC와 ImageNet 데이터 세트에서 놀라운 탐지 정확도를 보였지만 이미지당 수천개의 경계박스마다 CNN을 적용하기 때문에 시간이 많이 걸린다는 단점이 있습니다. 이 논문에서는 전체 이미지에서 conv 레이어를 한번만 실행하여 고정된 크기의 feature를 추출하도록 합니다. 이는 R-CNN보다 속도가 100배 빠르고 정확도도 비슷하거나 더 좋은 결과를 보입니다.

이 작업을 기반으로 ILSVRC 2014 대회에서 객체 감지에서 2위, 이미지 분류에서 3위를 차지했습니다.

해당 논문에서는 향후 연구를 위한 코드를 공유하였습니다.(*http://research.microsoft.com/en-us/um/people/kahe/* )

 

 

2 DEEP NETWORKS WITH SPATIAL PYRAMID POOLING

2.1 Convolutional Layers and Feature Maps

7개 계층의 기존 CNN구조는 5개의 conv layer와 2개의 fc layer로 구성되어있고 fc layer는 지정된 출력 N을 출력한다. 이를 위해 고정된 크기의 이미지가 필요합니다.

그림에서 (b)는 5개의 conv layer에 의해 생성되는 피쳐맵입니다. 가장 강한 반응의 위치를 화살표로 표시하였습니다. (c)는 가장 강한 반응영역을 이미지에 표시하였습니다. 초록색 박스가 가장 강한 반응영역에 경계 박스를 표시했습니다. 오른쪽 위의 그림은 ∧모양에 활성화 되었고, 오른쪽 아래는 ∨모양을 가장 활성화하였습니다. (b)의 피쳐맵은 입력 크기 고정 없이 생성될 수 있다는 것을 확인할 수 있습니다. 이렇게 인코딩된 특징들은 BoW나 공간 피라미드로 풀링됩니다.

 

 

2.2 The Spatial Pyramid Pooling Layer

합성곱 계층은 이미지 크기에 상관없이 입력을 받지만, fc 층은 고정된 크기의 입력벡터가 필요합니다. SPP방식은 고정된 크기의 벡터를 만듭니다. SPP는 BoW접근방식으로 생성되며, 로컬 공간 빈에 풀링하여 공간정보를 유지한다는 점에서 BoW를 개선합니다. 로컬 공간 bin은 입력 이미지에 비례하는 크기를 가지기 때문에 빈의 수는 이미지 크기에 상관없이 동일합니다. 이는 합성곱 필터의 슬라이딩 윈도우 풀링과 대조됩니다.

그림과 같이 SPP는 마지막 풀링 계층에 적용됩니다. 다음 그림의 예시에서 SPP의 결과값은 항상 21X256으로 항상 동일합니다. 입력 이미지 크기에 관계없이 입력값의 크기는 spatical bins의 개수가 같으면, 동일한 크기의 벡터가 결과로 나옵니다.이를 통해 fc layer에 동일한 크기의 벡터를 전달할 수 있습니다. 

이 중에서 오른쪽의 피라미드 레벨은 전체 이미지를 덮는 단일 빈을 가지는 글로벌 풀링 작업이며 이는 기존의 BoW방식이다. 글로벌 풀링은 fc레이어 이후 테스트 단계에서 정확도를 높이기 위해 사용됩니다.

 

2.3 Training the Network

이론적으로는 입력 이미지의 크기에 관계없이 학습할 수 있으나, 실제 GPU환경에서는 입력 이미지를 고정시키는 것이 좋습니다.

Single size training

R-CNN에서는 이미지를 cropping하거나 wrapping하려 일정한 크기 224X224로 만드는 데이터 증강기법을 사용합니다.

다음은 예시로 conv5를 거친 피쳐맵이 13X13이라 할때, spatial bin 크기를 2로 만들고 싶을 때, 윈도우 크기와 stride를 7과 6으로 설정하여 진행합니다.

window size = a/n의 올림(a: 기존 피쳐맵 크기, n: spatial bin 크기)

stride = a/n의 내림

이를 활용하여 피라미드 단계별 윈도우 크기와 스트라이드를 다음과 같이 구합니다.

Multi size training

다음으로 여러 크기의 입력을 받아 진행하는 과정입니다. 논문에서는 180X180 224X224 두가지로 진행하였습니다. 180X180 이미지를 전체 epoch만큼 훈련을 진행한 후, 224X224 를 전체 epoch만큼 훈련하는 것을 반복하면 single-size의 이미지를 훈련할 때와 결과가 비슷해지게 됩니다.

 

3 SPP-NET FOR IMAGE CLASSIFICATION

3.1 Experiments on ImageNet 2012 Classification

 ImageNet 2012의 1000개 범주에서 학습을 진행하였습니다. 이미지 크기를 256으로 조정한 후, cropping을 통해 224로 만든후 수평 대칭, 색상 변경의 데이터 증강을 활용합니다. 학습률은 0.01에서 오류값이 생기면 10으로 두번 나눠주며 GeForce GTX Titan GPU(6GB 메모리)에서 2~4주가 걸렸습니다.

 

3.1.1 Baseline Network Architectures

 

해당 연구에서는 4가지의 베이스라인을 활용해 실험을 진행했습니다. 

- ZF-5: Zeiler and Fergus(ZF) 'fast' 모델. 숫자는 합성곱 계층 개수합성곱 계층으로 다섯 개가 있다.
- Convnet*-5: Krizhevsky의 네트워크를 조금 변형한 모델로 conv1과 conv2 대신 conv2와 conv3 다음에 풀링 계층을 둔 것으로 각 계층별 피처 맵 크기는 ZF-5와 같다.
- Overfeat-5/7: Overfeat을 조금 변형한 모델로 ZF-5/Convnet*-5와 다르게, 이 네트워크는 마지막 풀링 계층 전에 더 큰 피처 맵을 도출한다.(13 x 13 대신 18 x 18).  conv3과 그 이후 합성곱 계층에서 더 큰 필터 크기(512)를 사용한다. 합성곱 계층 7개를 갖는 Overfeat-7은 conv3부터 conv7까지 같은 구조를 가진다.

ZF-5는 70에폭으로, 나머지는 90에폭으로 훈련하였으며 SPP사용 여부와 관련되어 다음과 같은 오류율을 보입니다.

 

3.1.2 Multi-level Pooling Improves Accuracy

본 연구에서는 single-size 훈련 결과를 분석하였으며, 훈련 및 테스트 이미지 크기는 (224×224)로 고정하였습니다. 네트워크 구조는 기존과 동일하나, 마지막 풀링 계층을 SPP 계층으로 변경하였습니다.

SPP 계층으로 4-level pyramid 구조({6×6, 3×3, 2×2, 1×1}, 총 50개 격자)를 사용하였으며, 성능 비교를 위해 standard 10-view 예측 방식을 적용하였습니다. 실험 결과, SPP 계층을 추가한 모델이 성능이 향상되었으며, Overfeat-7 모델의 top-1 오류율이 1.65% 감소하였습니다.

ZF-5 네트워크에서도 다른 4-level pyramid 구조({4×4, 3×3, 2×2, 1×1}, 총 30개 격자)를 적용한 결과, SPP를 사용하지 않은 베이스라인 모델보다 적은 파라미터를 사용하고도 성능이 개선되었습니다.

 

3.1.3 Multi-size Training Improves Accuracy

multi-size 훈련을 진행하였으며, 훈련 이미지 크기로 (224×224)와 (180×180)를 사용하고, 테스트 이미지 크기는 (224×224)로 설정하였습니다. standard 10-view를 적용한 결과, SPP-net(Overfeat-7)의 top-1 오류율이 29.68%로 감소하였습니다.

추가적으로, 이미지 크기를 [180, 224] 범위에서 랜덤 샘플링한 실험에서는 top-1/top-5 오류율이 30.06%, 10.96%로 나타났습니다. 이는 이미지 크기를 고정한 모델보다 성능이 소폭 낮지만, single-size 훈련 모델보다는 우수한 결과를 보였습니다.

테스트 이미지 크기가 (224×224)로 고정되었기 때문에, 훈련에서도 해당 크기의 이미지가 적절히 포함될 때 성능이 최적화되었습니다.

 

3.1.4 Full-image Representations Improve Accuracy

전체 이미지를 활용하여 성능을 평가하였습니다. min(너비, 높이)=256이 되도록 크기를 조정한 후 SPP-net을 적용하였으며, (224×224) 크기로 crop한 이미지와 비교하였습니다.

모든 실험에서 전체 이미지를 사용할 때 오류율이 더 낮았습니다. 이는 전체 이미지의 정보를 유지하는 것이 성능 향상에 기여함을 보여줍니다.

 

3.1.5 Multi-view Testing on Feature Maps

피처 맵에서 multi-view를 적용하는 실험을 진행하였습니다. SPP-net을 활용해 다양한 크기의 윈도우에서 피처를 추출하였으며, 좌우 대칭된 윈도우도 포함하였습니다.

s=256, 윈도우 크기 (224×224)를 기준으로 설정하고, 이미지 중앙 및 네 모서리에서 총 10개 view를 활용하였습니다. 추가적으로 multiple-scale에서 multi-view를 적용했으며, 최종적으로 96개 view를 사용하였습니다.

결과적으로, 96개 view를 사용한 경우 top-5 오류율이 10.95%에서 9.36%로 감소하였으며, full-image view를 추가하면 9.14%까지 감소하였습니다.

 

3.1.6 Summary and Results for ILSVRC 2014

SPP-net과 기존 네트워크의 성능을 비교한 결과, SPP-net이 더 우수한 성능을 보였습니다. 10-view보다 96 views + 2 full-image view 결합 모델이 가장 높은 성능을 기록하였습니다.

ILSVRC 2014 이미지 분류 대회에서는 SPP-net이 3위를 차지하였으며, 1위와 2위는 GoogLeNet과 VGG가 차지하였습니다.

3.2 Experiments on VOC 2007 Classification

VOC 2007 이미지 분류 데이터셋에 SPP-Net을 적용하였을 때 mAP 결과입니다.

베이스라인 모델로 SPP가 없는 ZF-5를 사용하였으며, 이미지 크기를 224×224로 조정하고 중앙을 crop하여 SVM을 학습시켰습니다. 네트워크 계층이 깊어질수록 성능이 향상되었습니다.

SPP를 적용한 모델에서는 중앙 crop 방식보다 전체 이미지를 사용하는 방식이 더 우수한 성능을 보였습니다. 특히, 이미지 크기를 min(너비, 높이)=392로 조정할 때 가장 높은 성능을 기록하였습니다.



3.3 Experiments on Caltech101

SPP-net을 Caltech101 데이터셋에 적용하여 실험을 진행하였습니다. 해당 데이터셋에서는 범주당 30개의 이미지를 훈련에 사용하고, 최대 50개의 이미지를 테스트에 활용하였습니다.

Pascal VOC 2007과 마찬가지로, SPP-net을 적용한 모델이 베이스라인보다 성능이 높았으며, 전체 이미지 표현이 crop한 이미지보다 더 우수한 결과를 보였습니다.

추가적으로, 이미지 왜곡 없이 전체 이미지를 사용할 때 가장 높은 정확도를 기록하였으며, 기존 최신 기술보다 4.88% 높은 93.42%의 정확도를 달성하였습니다.

 

 

4 SPP-NET FOR OBJECT DETECTION

SPP-net을 객체 탐지에도 적용하였으며, 기존 R-CNN 방식과 비교하여 속도가 크게 향상되었습니다.

기존 R-CNN은 선택적 탐색을 통해 2,000개의 후보 영역을 추출한 후 CNN을 적용하는 방식이었으며, 연산량이 많아 속도가 느렸습니다. SPP-net은 전체 이미지에서 한 번만 피처 맵을 계산하고, 윈도우에서 spatial pyramid pooling을 적용하여 연산량을 줄였습니다.

4.1 Detection Algorithm

선택적 검색의 빠른 모드를 사용하여 이미지당 약 2,000개의 후보 창을 생성한 후, 이미지 크기를 min(너비, 높이)=s로 조정하였습니다.

각 후보 창에서는 4-level SPP를 사용하여 피처를 풀링하였으며, 이 피처를 전결합 계층으로 전달하여 SVM을 학습하였습니다.

훈련 과정에서 IoU를 기준으로 positive 및 negative 샘플을 구분하였으며, standard hard negative sampling을 적용하였습니다. 훈련에는 약 1시간이 소요되었습니다.

4.2 Detection Results

Pascal VOC 2007 데이터셋에서 SPP-net과 R-CNN 성능을 비교한 결과, mAP는 동일한 59.2였으나 속도는 SPP-net이 0.382초로 R-CNN(14.46초)보다 월등히 빨랐습니다.

multi-scale feature extraction을 적용하면 성능이 더욱 향상되었으며, 전체적인 객체 탐지 성능이 개선되었습니다.

 

4.3 Complexity and Running Time

SPP-net은 R-CNN보다 연산량이 적어 속도가 빠릅니다. R-CNN이 이미지당 14.37초가 걸리는 반면, SPP-net은 1-scale 모델에서 0.053초, 5-scale 모델에서 0.293초가 소요되었습니다.

이를 통해 SPP-net은 R-CNN 대비 102배 빠른 속도를 보이며, 유사한 정확도를 유지할 수 있었습니다.

 

 

4.4 Model Combination for Detection

두 개의 서로 다른 초기화 모델을 조합하여 실험을 진행하였으며, 개별 모델보다 성능이 향상되었습니다.

두 모델의 탐지 결과를 결합한 후 비최대 억제를 수행한 결과, 최종 mAP가 60.9%로 증가하였습니다.

 

4.5 ILSVRC 2014 Detection

SPP-net을 ILSVRC 2014 탐지 대회에 적용한 결과, 제공된 데이터 전용 트랙에서 2위를 기록하였습니다.

테스트 이미지당 합성곱 피처 계산 시간이 0.6초로, R-CNN(32초)보다 크게 향상되었으며, 6개의 모델을 조합한 최종 mAP는 35.11%를 달성하였습니다.

 

5 CONCLUSION

SPP는 다양한 크기 및 비율을 처리하기 위한 해결책으로 제시되었으며, 분류/탐지 작업에서 뛰어난 정확도를 보여주며 컴퓨터 비전에서 많은 중요한 역할을 수행할 수 있음을 보여줍니다.

 

 

 

 

Reference

https://bkshin.tistory.com/entry/논문-리뷰-SPP-net-톺아보기

https://rahites.tistory.com/78