컴퓨터비전(Computer Vision)

Object Detecion [2] - SPPNET

zzoming 2023. 10. 16. 02:30

지난글 

https://zzoming00.tistory.com/31

 

Object Detecion [1] - R-CNN

💡 오늘 알아갈 목표 2 Stage Object Detector R-CNN R-CNN Object Detection 모델은 객체의 위치를 찾고 , Class를 분류하는 작업을 진행한다. R-CNN 모델은 이를 순차적으로 진행하는 대표적은 2 stage detector로, 딥

zzoming00.tistory.com

 


🤔 앞서 공부했던 R-CNN모델은 입력 이미지가 고정된 크기의 입력이 요구 되었다. 이는 모델의 성능에 악영향을 미친다. 사실 Convolution filter들은 입력이미지가 고정될 필요는 없다. 이미지 크기의 고정이 필요한 이유는 Fully Connected layer가 고정된 크기의 입력을 받아서이고 이에 대해 저자는 이미지의 특징을 고스란히 간직한 feature map을 얻어 크기 변화에 관계없이 고정된 길이의 출력을 만들어 낼 수 있는 Spatial Pyramid Pooling(SPP)에 대해서 제안한다. 

 

💡핵심 아이디어 

" 입력 이미지 크기의 관계 없이 Con layer들을 통과시키고,

FC layer 통과 전에 피쳐 맵들을 동일한 크기로 조절해주는 pooling를 적용하자!"

입력 이미지의 크기를 조절하지 않은 채로 컨볼루션을 진행하면 원본 이미지의 특징을 고스란히 간직한 feature map을 얻을 수 있다. 또한 사물의 크기 변화에 더 견고한 모델을 얻을 수 있다는 것이 저자들의 주장이다

 


작동방식 (알고리즘)

1. 전체 이미지를 pre-trained 된 CNN을 통과시켜 feture map을 추출한다

2. Selective Search를 통해 찾은 각각의 RoI들은 각각의 크기와 비율이 다르다. 이에 SPP를 적용하여 고정된 크기의 Feature Vector을 추출한다. ⭐⭐

3.  그 다음 Fully Connected layer을 통과 시킨다.

4. 앞서 추출한 벡터로 각 이미지 class 별로 binary SVM Classifier와 Bounding box regressor을 학습한다.


Spatial Pyramid Pooling 

먼저 Conv Layer들을 거쳐서 추출된 featur map을 input으로 받는다. 그리고 이를 미리 정해져 있는 영역으로 나눠준다. 

위의 그림에서는 미리 4x4 , 2x2 , 1x1 세 가지 영역을 제공하며, 분할된 각각을 피라미드라고 부른다.

즉. 해당 예시에서는 3개의 피라미드를 설정한 것이다. 피라미드 한 칸을 bin 이라고 하며 입력이 64 X 64 X 256 크기의 feature map이 들어온다고 했을 때 4x4 의 피라미드의 bin의 크기는 16X16이 된다. 

 

각 bin에서 max pooling을 수행하고, 그 결과를 쭉 이어붙여준다. 입력 feature map의 channel 크기를 k , bin의 개수를 M 이라고 할 때 SPP의 최종 ouput은 kM 차원의 vector이다. 위의 예시에서는 k = 256 , M = (16+4+1) = 21이 된다. 정리해보면 입력 이미지의 크기와는 상관없이 미리 설정한 bin의 개수와 channel 값에 따라 SPP의 출력이 결정되므로, 항상 동일한 크기의 결과를 return 한다고 볼 수 있다. 

 

SPPNET은 입력 이미지를 그대로 CNN에 통과시켜 feature map을 추출하고 SPP를 적용하여 고정된 크기의 feature을 얻는다. 논문에서는 Pascal VOC 2007 기준으로 SPP-net이  R-CNN보다 24~102배 빠르다고 한다.


한계점

모든 RoI에 대해서 CNN inference를 한다는 문제점을 획기전을 개선했지만 여전히 한계점 존재

  • end-to-end 방식이 아닌 모두 따로 학습 
  • 여전히 Classification 은 binary SVM , Region Proposal은 Selective Search를 이용
  • fine tuning 시 SPP를 거치기 이전의 conv layer들을 학습하지 못한다. Fully Connected Layer만 학습이 가능

정리 

R-CNN은 CNN의 Fully Connected Layer로 인해 입력 크기에 대한 제약이 존재했다. 이에 대한 제약을 해결하고자 SPP를 제안했으며, SPP를 적용한 SPP NET은 Crop이나 Warp을 하지 않기에 데이터의 손실이나 왜곡이 발생하지 않아 모델의 성능에 악영향을 끼치지 않는다. 여전히 한계점은 존재하지만 CNN이 입력 이미지의 크기로부터 자유로워졌다는 것에 큰 의미가 있는 것 같다. 다음에는 Fast R-CNN과 Faster R-CNN에 대해 공부해볼 것이다. 

 

그럼 이만😶‍🌫️

 


📝참고자료 

https://yeomko.tistory.com/14

 

갈아먹는 Object Detection [2] Spatial Pyramid Pooling Network

지난 글 갈아먹는 Object Detection [1] R-CNN 들어가며 지난 시간 R-CNN에 이어서 오늘은 SPP-Net[1]을 리뷰해보도록 하겠습니다. 저 역시 그랬고, 많은 분들이 R-CNN 다음으로 Fast R-CNN 논문을 보시는데요, 해

yeomko.tistory.com

 

'컴퓨터비전(Computer Vision)' 카테고리의 다른 글

컴퓨터 비전의 시작  (1) 2023.10.18
Object Detecion [3] - FAST R-CNN  (0) 2023.10.17
Object Detecion [1] - R-CNN  (0) 2023.10.16
객체탐지 - IoU /python 코드  (1) 2023.10.15
부스트캠프 자가진단 STUDY  (2) 2023.09.18