ML study > Object Detection > Two stage detection

SPPNet

  • R-CNN에서의 주된 문제점은 이미지에서 뽑아내 region proposal 마다 CNN을 수행하기 때문에 발생하는 bottleneck 이었다. 따라서 SPPNet에서는 Spatial Pyramid Pooling (SPP) 방식을 CNN architecure에 적용시켰다.

1. SPPNet 동작

Source

  • 우선 SPP의 원리에 대해 알아보자. 기존 R-CNN 방식은 region proposal된 이미지를 CNN의 크기에 맞게 warping 하는 과정이 필요했다. 반면 SPP는 input feature에 대해 여러개의 고정된 크기의 pooling layer를 통과시킨 결과를 하나의 layer로 묶는다. 예를 들어 그림과 같이 pooling layer 하나의 크기가 4x4 이고 input 이미지가 64x64일 때 이미지를 16 등분하여 pooling을 수행하여 4x4의 pooling layer output을 얻는 것이다. input 사이즈와 관계없이 고정된 사이즈의 layer를 얻을 수 있다.

Source

  • 이러한 SPP를 CNN에 적용할 때 R-CNN과 다르게 region proposal 된 이미지에 적용하는 것이 아니라 CNN에 바로 Image를 통과시키고 나온 feature에 대해 SPP를 수행하였다.

  • 이렇게 하면 training 과 test 시에 시간을 많이 잡아먹은 CNN을 단 한번만 수행할 수 있기 때문에 R-CNN의 문제점을 획기적으로 단축시킬 수 있다.

2. SPPNet 결과

SPPNet은 위와 같은 방식으로 R-CNN과 mAP에서 비슷한 성능을 유지하면서 속도는 20~100배 더 빠른 성능을 얻었다.

Source

3. SPPNet 단점

  • 전체적인 training/test 속도의 향상을 가져왔지만 여전히 stage가 나누어진 구조이고 detector 자체의 속도를 개선시키진 못했다.

  • Fine tuning 과정에서 SPP 전단의 CNN network는 tuning하지 않았으며 이는 성능 저하의 원인이 될 수 있다.

Reference

[1]: Deep Learning for Generic Object Detection: A Survey

[2]: Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

[3]: SPPNet 설명 블로그



댓글남기기