Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
논문 원본 https://arxiv.org/abs/1406.4729
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하고 히스토그램으로 표시
- 빈도수를 통한 이미지 추론
SPM
- 하지만 이와 같은 Bag of Words 방법은 이미지의 위치 관계를 잃어버린다는 단점 존재
- 따라서 이를 극복하기 위해 제안된 방식이 SPM(Spatial Pyramid Matching)
- 이미지를 여러 영역으로 분할해서 각 영역마다 BoW 적용
- ex) 아래와 같이 분할을 아예 하지 않았을 때, 4분할을 했을 때 총 2번을 수행하여 SPM 진행하고 이를 기반으로 Count한 벡터들을 하나로 결합
- SPM을 사용하게 되면 Feature Map 또는 Region Proposal 사이즈가 서로 달라도 분할 수를 동일하게 설정만 한다면 결합한 벡터들의 사이즈는 동일
SPP
- 각 영역별로 Feature 레이블의 각 빈도를 모두 저장하는 것이 아니고, 영역별 빈도들의 최대값만 뽑아냄(Max pooling)
- 최종적으로 아래와 같이 SPP 과정을 통해서 벡터를 동일한 사이즈로 만들고 fc layer로 넘김
R-CNN
- region proposal network를 통해 약 2000개 ROI(Region of Interest) 추출
- ROI들이 독립적으로 CNN에 입력 -> 너무 느림
SPPNet
- 전체 이미지에 대해 CNN 수행
- RCNN 2000번 -> SPPNet 1번의 CNN operation 절감효과
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으로 설정
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://89douner.tistory.com/89
https://rahites.tistory.com/78
'논문 리뷰 > 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 |