SPP-Net

SPP-Net은 R-CNN의 단점을 보완한 모델입니다.

 

RCNN의 단점

     1. Selective Search를 통해 2k개의 RoI를 일일이 CNN에 넣어줘서 시간이 오래걸린다.

     2. Selective Search를 통해 2k개의 feature map들을 Crop/Warping 할때 이미지 왜곡이 발생합니다.

        (conv layers 다음 fc layers의 입력 크기를 맞춰주기 위해)

 

 


 

이를 극복하기 위해 SPP-Net에서는

 

     1. 원본 이미지를 CNN에 넣어줘 featuremap 생성

         → Selective Search를 통해 나온 2k개의 RoI를 projection 시켜줍니다.

         ※ 2000번의 CNN 연산을 1번으로 축소

 

     2. Crop/Warping을 SPP layer로 변경

        위의 사진과 같이 conv layers 후에 fc layers의 입력크기를 spp로 맞춰줍니다.

        이렇게 되면 원본 이미지의 왜곡 현상이 없앨 수 있습니다.

 

 


SPP layer

SPP layer는 convs layers와 fc layers 사이에서 이루어집니다.

우선 spatial bins의 개수를 정해줍니다.

예를 들면 50 bin = [6x6, 3x3, 2x2, 1x1], 30 bin = [4x4, 3x3, 2x2, 1x1] 가 있습니다.

여기서 어떠한 feature map이 들어와도 같은 크기의 output을 내기위해 아래와 같은 식이 적용됩니다.

 

 - Window Size = feature map size / pooling size (올림)

 - stride = feature map size / pooling size (내림)

 


SPP layers Example

3 x 3 spatial pyramid pooling

 - 256 x 13 x 13 feature map (13 x 13 feature map 256개)

 - 3 x 3 pooling size

 = Window Size = 13 / 3 → 5

 = stride = 13 / 3 → 4

 ※ 256 x 3 x 3 의 고정된 크기 출력 (3 x 3 feature map 256개)


 

위와 같이 여러가지 사이즈의 pooling을 해준뒤 쭉 이어 붙여준다음 fc layers에 입력값으로 넣어줍니다.

 

※동작 순서※

(1) Selective Search를 사용하여 약 2000개의 region proposals를 생성합니다.

(2) 이미지를 CNN에 통과시켜 feature map을 얻습니다.

(3) 각 region proposal로 경계가 제한된 feature map을 SPP layer에 전달합니다.

(4) SPP layer를 적용하여 얻은 고정된 벡터 크기(representation)를 FC layer에 전달합니다.

(5) SVM으로 카테고리를 분류합니다.

(6) Bounding box regression으로 bounding box 크기를 조정하고 non-maximum suppression을 사용하여 최종 bounding box를 선별합니다.


 

 

참고 자료

논문: arxiv.org/abs/1406.4729

 

블로그:

     - https://yeomko.tistory.com/14

     - https://nepersica.tistory.com/4

+ Recent posts