본문 바로가기
논문 리뷰/CV

[X:AI] SPPNet 논문 리뷰

by hyeon827 2024. 3. 10.

Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

논문 원본 https://arxiv.org/abs/1406.4729

 

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

 

1. Abstract & Introduction

  • 과거에 사용된 CNN은 고정된 입력 이미지 크기(ex. 224x224) 요구
  • fully-connected layer에서 고정된 길이의 입력이 필요하기 때문
  • cropping과 warping을 통해 다양한 크기의 입력 이미지를 고정된 크기로 변환
  • cropping한 이미지는 객체 전체를 포함하지 못할 가능성이 있으며 wraping한 이미지 가로세로 비율이 달라져 객체 탐지 성능이 저하될 수 있음

  • 본 논문은 SPP layer을 도입하여 'CNN이 고정된 크기의 입력 이미지를 받아야 한다'는 제약조건 해결
  • SPP layer를 conv layer와 fc layer 사이에 배치
  • SPP  layer가 결과 값 크기를 고정 -> 입력 이미지를 따로 cropping, warping X

 

2. Realted Work

    Bow 모델

  • SPP는 Bag-of-Words(Bow) 모델의 확장
  • 이미지의 Region 별로 여려 개의 Feature 추출
  • 각 Feature 별로 이미지에서 나타나는 빈도수 count하고 히스토그램으로 표시
  • 빈도수를 통한 이미지 추론

출처:https://woochan-autobiography.tistory.com/919

 

    SPM 

  • 하지만 이와 같은 Bag of Words 방법은 이미지의 위치 관계를 잃어버린다는 단점 존재
  • 따라서 이를 극복하기 위해 제안된 방식이 SPM(Spatial Pyramid Matching)
  • 이미지를 여러 영역으로 분할해서 각 영역마다 BoW 적용
  • ex) 아래와 같이 분할을 아예 하지 않았을 때, 4분할을 했을 때 총 2번을 수행하여 SPM 진행하고 이를 기반으로 Count한 벡터들을 하나로 결합
  • SPM을 사용하게 되면 Feature Map 또는 Region Proposal 사이즈가 서로 달라도 분할 수를 동일하게 설정만 한다면 결합한 벡터들의 사이즈는 동일

출처:https://woochan-autobiography.tistory.com/919

 

   SPP

  • 각 영역별로 Feature 레이블의 각 빈도를 모두 저장하는 것이 아니고, 영역별 빈도들의 최대값만 뽑아냄(Max pooling)
  • 최종적으로 아래와 같이 SPP 과정을 통해서 벡터를 동일한 사이즈로 만들고 fc layer로 넘김

https://driip.me/5743aed5-c630-4900-b367-9987a088661a

 

   R-CNN

  • region proposal network를 통해 약 2000개 ROI(Region of Interest) 추출
  • ROI들이 독립적으로 CNN에 입력 -> 너무 느림

출처 : https://89douner.tistory.com/89

 

   SPPNet

  • 전체 이미지에 대해 CNN 수행
  • RCNN 2000번 -> SPPNet 1번의 CNN operation 절감효과

출처 : https://89douner.tistory.com/89

 

3. Architecture

   전체 구조

  • Input -> Conv5 layer -> SPP layer -> FC3 layer -> Output

 

    Spatial Pyramid Pooling Layer

  • Bin을 일정한 수로 고정시키고 각 공간 bin에 필터들의 반응정도를 Max pooling함
  • Bin은 4x4, 2x2, 1x1로 21개 (M개)
  • 필터는 conv5 필터 수로 256개 (k개)
  • SPP 결과값은 (k x M) 차원의 고정길이 벡터
  • 따라서 21 x 256 = 5,376차원의 고정길이 벡터 생성
  • 즉, 입력 이미지 크기와 관계없이  spatial bin 개수가 같다면,  SPP layer를 통해 고정길이 벡터가 만들어짐

 

  • conv5를 거친 feature map 크기가 (axa)이고, 만들고자하는 spatial bin 크기가 (nxn) 
  • 윈도우 크기 = celling(a/n)
  • stride 크기 = floor(a/n)
  • ex) conv5를 거친 feature map 크기가 (13x13), 만들고 싶은 spatial bin 크기 (2x2)
  • 윈도우 크기와 stride 크기는 각각 7과 6으로 설정

출처:https://bkshin.tistory.com/entry/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-SPP-net-%ED%86%BA%EC%95%84%EB%B3%B4%EA%B8%B0

 

3단계 pyramid ( conv5 feature map 크기 13x13)

 

 

4. Experiments

  • SPPNet의 장점은 Conv 네트워크 구조에 독립적이라는 것
  • 기존에 있던 4개의 네트워크 구조에 대해서 SPPNet을 적용하여 개선됨을 실험하고자 함

네 가지 베이스라인 네트워크 구조

 

  • Baseline + SPP
  • 총 4-level pyramid 구조 사용(6x6 , 4x4, 2x2, 1x1) -> 총 50개 bins
  • no SPP보다 SPP layer를 사용 시 성능 향상
  • multi-size 학습 시 no SPP나 single-size보다 향상
  • single-size : 훈련,테스트 이미지 크기 모두 (224x224) 
  • multi-size: 훈련 시 [180,224]에서 임의로 샘플링해 크기를 정함 

    *top-1 error : 모델이 가장 높은 확률을 갖는 단일 클래스를 올바르게 예측하지 못하는 비율

    *top-5 error:  모델이 상위 다섯 개의 확률이 가장 높은 클래스 중에 올바른 클래스를 예측하지 못하는 비율

 

  • full: 전체 이미지에 대해 적용
  • crop: (224x224) 크기
  • 전체 이미지의 내용을 살리는 게 중요하다는 점을 보여줌

 

  • Pascal VOC 2007에 대한 mAP(mean Average Precision) 결과
  • 연산 속도 측면에서 SPP가 R-CNN보다 압도적 우위 

 

5. Conclusion

  • 이전 CNN 기반 모델들은 Input 시 이미지 크기를 고정해야했기에 이미지 스케일이나 비율을 유연하게 다룰 수 없었음
  • 본 논문에서 SPP 기법을 제시하여 다양한 크기의 Input 값으로부터 고정된 크기의 feature vector를 뽑아냄
  • 이미지 전체에 대해 Convolution 연산을 수행하여 Object Dection 분야의 선행 모델인 R-CNN보다 속도가 빠름

 

[참고자료]

https://woochan-autobiography.tistory.com/919

https://bkshin.tistory.com/entry/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-SPP-net-%ED%86%BA%EC%95%84%EB%B3%B4%EA%B8%B0

https://89douner.tistory.com/89

https://rahites.tistory.com/78

https://www.youtube.com/watch?v=i0lkmULXwe0&t=1179s

https://driip.me/5743aed5-c630-4900-b367-9987a088661a

'논문 리뷰 > CV' 카테고리의 다른 글

[X:AI] Mask R-CNN 논문 리뷰  (0) 2024.05.06
[X:AI] SegNet 논문 리뷰  (0) 2024.04.09
[X:AI] EfficientNet 논문 리뷰  (0) 2024.04.03
[X:AI] U-Net 논문 리뷰  (0) 2024.03.27
[X:AI] InceptionV2/3 논문 리뷰  (0) 2024.03.14