이번 포스터에서는 Object Detection의 모델 중 하나인 SSD에 대해 알아보자. SSD는 2015년 [SSD: Single Shot MultiBox Detector(2015)]라는 논문을 통해 발표되었다. 그 당시 YOLO보다 속도도 빠르고 정확도도 높았던 모델이다.


SSD 개요


Object Detection의 특징은 object마다 크기와 비율이 다르다는 것이다. 이러한 특징으로 인해 크기가 작거나 다양한 크기에 대해 탐지를 잘 못 하는 경우가 발생한다. SSD는 이러한 문제를 해결하기 위해 다양한 ratio와 scale의 feature map을 이용했다. 그리고 YOLO보다 더 빠르고 정확한 모델을 만들기 위해 다양한 테크닉을 사용했다.


  • Multi-scale feature map
  • Default boxes and aspect ratio
  • Hard negative mining
  • Data augmentation


SSD 구조


SSD의 구조를 보면 다음과 같다.



SSD의 가장 큰 특징은 Backbone모델인 VGG를 통과한 후에 여러 단계의 convolutional layer가 추가로 붙어있다. 그리고 각 layer마다 classifier가 존재한다. 이러한 구조는 서로다른 scale의 feature map을 생성하기 위한 것으로, SSD의 핵심 테크닉이라고 할 수 있다. 서로 다른 scale에서 추출된 feature maps는 모두 하나의 output으로 합쳐져 bbox의 후보가 되고, 그 중에 object가 있다고 판단되는 bbox가 최종적으로 선택된다.


SSD의 Forward는 다음과 같다.

  1. Input이미지는 bacbbone은 VGG를 통과해 feature map을 생성한다.(Conv4_3 Layer)
  2. (1)의 결과를 3x3과 1x1 필터를 이용해 DownSampling한다.
  3. (2)의 결과로 생성된 다양한 scale의 feature maps들로부터 각각의 bbox를 예측한다.
  4. (3)의 결과인 bbox들에 Non-Maximum Suppression을 적용해 같은 object를 예측한 bbox들을 제거한다.


Forward과정만 보면 매우 간단해보이지만, Training과정에서는 다양한 테크닉이 필요하다. 따라서 지금부터 하나씩 알아보기로 하자.


Multi-Scale Feature map


SSD의 구조를 보면 가장 크게 드러나는 특징이 있다. VGG를 통과한 feature map이 Downsampling이 되면서 다양한 scale의 feature map이 생성되고, 각 feature map에 각각의 classifier가 적용된다.



위 사진을 보면 multi-sacle의 특징을 한 눈에 볼 수 있다. Scale이 다른 feature map에 각각의 Detector와 classifier을 적용해 서로 다른 scale의 bbox을 예측한다. 이러한 테크닉 덕분에 scale이 다른 object를 예측할 수 있다는 장점이 있다. 각 layer마다 detector와 classifier를 적용하면 다음과 같은 결과를 얻는다.



논문에서도 그림으로 나와있지만, 총 6가지의 scale이 존재한다. 그림을 자세히 보면 화살표 밑에 숫자들이 있는데, 그것은 각 layer에 detector와 classifier가 적용된 결과가 아닌 detector&classifier의 필터 크기이다. 따라서 해당 필터가 적용된 후에 산출된 feature map이 각 scale마다 출력된 bbox의 output이다.


Convolutional Predictor


Convolutional Predictor란 scale이 다른 각 feature map에 적용하는 필터를 말한다. 서로 다른 scale로부터 다양한 크기의 object를 예측하기 위해 predictor또한 서로 다른 필터를 사용한다.


예를 들어 예측하고자 하는 class의 개수가 21이고, 4번째 layer의 feature map인 $5\times5\times256$에서 $3\times3(6\times(classes+4))$필터를 적용하면 output은 $5\times5\times150$이 된다. 필터를 구성하는 값은 다음과 같다.

  • $3\times3$: Convolution Filter의 size(가로,세로)
  • $6$: 각 cell(output의 픽셀)마다 생성하는 bbox개수
  • $classes$: class의 개수
  • $4$: 각 bbox의 offset($x,y,w,h$)


따라서 최종적으로 예측되는 bbox의 개수는 다음과 같다.

\[\text{각 scale별 cell의 개수} \times \text{각 scale별 예측하는 bbox의 개수}\]


각 scale별 cell의 개수는 ($38^2, 19^2, 10^2, 5^2, 3^2, 1^1$)이고 각 scale별 예측하는 bbox의 개수는 ($4,6,6,6,4,4$)임으로 총 $8732$가의 bbox가 예측된다.


이후에 NMS을 통해 필요한 bbox만 선택된다.


Default boxes and aspect ratio


Hard negative mining


Max-Minimum Suppression


Data augmentation


  • Default boxes and aspect ratio
  • Hard negative mining
  • Data augmentation