본문 바로가기

논문 리뷰

SPPnet(Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition)

Fast R CNN이 영감을 받았다는 SPPnet이다. Kaiming He가 1저자로 있다.

 

Contribution

1. Spatial pyramid pooling을 이용해서 다양한 size/scale의 input에 대해 fixed-length representation을 만들 수 있고, 그러므로 학습 시킬 수 있다.

 

2. CNN architecture를 가리지 않고 성능 향상이 가능하다.

 

3. Object detection에서 기존 R CNN과 비슷한 성능을 내면서 최대 100배 이상 빠르다.

 

기존의 CNN은 fixed input image size를 요구했다. 따라서 우리는 이미지를 crop하거나, warp할 수 밖에 없었다. 이미지를 crop하면 전체 이미지를 포함하지 못하는 문제가 발생하고, 이미지를 warp하면 이미지를 왜곡하게 된다.

 

그런데 엄밀히 말해서 CNN이 input size를 제한하는게 아니다. CNN 위에 붙은 FCN이 image size에 제약을 거는 것이다. 이 논문에서는 spatial pyramid pooling이라는 알고리즘으로 CNN의 feature map을 일정한 size로 만드는 방법을 제안한다.

 

Convolution layer의 마지막에 spp layer를 넣어 size를 일정하게 조절한다. 사실 SPP는 CNN 이전의 machine learning에서 활발히 사용되어 오던 방법이다. 기존 machine learning의 time-proven techniques/insights가 deep learning에서도 중요한 역할을 할 수 있다는 것을 보여준다.

 

SPP layer

 

  우선, 마지막 pooling layer를 SPP layer로 대체한다. 이 layer의 output size는 pre-compute 될 수 있다. Input인 feature map이 a x a 라고 할 때, output을 n x n으로 하고 싶다면, pooling window의 size를 ceil(a/n)으로 두고 stride를 floor(a/n)으로 두면 된다. 이 연산을 k번 해서 나온 output을 펼쳐서 concatenate해서 fcn에 넣는다. 이것을 k-level pooling이라고 한다. CNN의 feature map에 대해 k개의 pooling을 가지고 연산을 했기 때문에 한 번의 pooling만 수행하는 기존 모델에 비해 image의 deformation이나 spatial layout에 좀 더 robust 하다. Input image의 size를 다양하게 주면 성능이 더 올라간다.

 

SPP를 적용한 모델과 그렇지 않은 모델의 비교이다. CNN의 구조와 관계 없이 보장된 성능 향상을 보여준다. Multi-size로 훈련한 모델이 성능이 더 좋다.

 

Input size에 제한이 없기 때문에 cropping이나 warpping 을 거치지 않은 full-image를 넣는 것이 가능하다. 위의 표를 보면 full-image를 넣은 경우가 성능이 더 좋은 것을 확인할 수 있다.

 

Comparing with R CNN

R CNN review : yun905.tistory.com/13

 

R CNN(Rich feature hierarchies for accurate object detection and semantic segmentation)

Object detection의 history에 감을 잡기 위해 손을 댄 논문이다. 이후에 r cnn을 개선해서 좋은 결과를 얻은 논문들이 많으므로 한 번은 읽어야 한다고 생각했다. Object detection은 지난 몇 년간 정체되어 �

yun905.tistory.com

 

R CNN은 selective search를 이용해 2000개의 region proposals를 얻은 뒤 CNN에 넣는 구조를 가지고 있었다. 이건 다시 말해 CNN이 2000번의 연산을 해야 한다는 말이 된다. 이 논문에서는 CNN에 전체 이미지를 단 한번 통과시킨 후 얻은 feature map에서 window들을 추출하는 방식을 제안했다. 

 

Selective search로 2000개의 window를 얻어낸다는 점은 동일하지만, 전체 이미지를 CNN에 통과시킨 후 feature map에서 window를 추출하기 때문에 연산을 덜 하게 된다.

 

비슷한 성능을 보여주지만 SPP를 적용하는 편이 속도가 훨씬 빠르다.

 

Results