[Object Detection] 5. SSD 논문 리뷰

SSD - SSD: Single Shot MultiBox Detector을 읽고 논문 주요내용을 정리해본다.

[PDF] 논문원본

SSD: Single Shot MultiBox Detector (SSD)

모델 구조

SSD의 구조는 위의 그림과 같다. 먼저 pretrained된 VGG를 통해 feature를 추출한다. 그 다음 추출된 feature map을 각기 다른 size의 convolution layer를 통과시키며 각 layer에서 detection을 수행한디.

각 layer에서 얻은 결과는 다음 layer로 보냄과 동시에 마지막으로 보내 각 layer의 feature map에서 나온 결과를 합쳐 NMS알고리즘을 통해 결과를 도출한다.

각 주요과정을 자세히 보면 아래와 같다.

1단계. Feature Extraction (VGG)

pretrained된 VGG를 통해 feature를 추출한다.

2단계. Multi-scale feature maps for detection

추출된 feature map을 다양한 size의 convolution layer에 통과시켜 다양한 resolution의 이미지를 만들고, 만들어진 다양한 resolution의 이미지로 detection한다.

이때 resolution 값이 큰 feature map에서는 하나의 픽셀값이 의미하는 범위가 좁기 때문에 작은 객체를 detection 할 수 있고, resolution 값이 작은 feature map에서는 하나의 픽셀값이 의미하는 범위가 넓기 때문에 큰 객체를 detection 할 수 있다.

3단계. Default boxes and Aspect ratios

Default box는 Faster R-CNN의 anchor box를 “Multi-scale feature maps for detection”에서 생성되는 여러 scale의 feature map에 맞게 적용시킨 개념이다. 스케일에 상관없이 각 픽셀마다 w, h 값이 aspect ratio로 다르게 생성되어 스케일에 맞는 적절한 default box를 생성한다.

w, h를 구하는 식은 위와 같다. 이때 Smin = 0.2, Smax = 0.9로 지정하였다.

마지막으로 생성된 default box중 ground truth와 IoU가 0.5이상인 box만 남긴다.

4단계. Non-max Suppression (NMS)

마지막으로 지금까지 생성된 multi-scale feature map과 bbox에 대한 정보를 NMS알고리즘을 사용하여 추려낸다. 자세한 방법은 아래와 같다.

  1. 먼저 해당 bbox에서 가장 높은 확률을 갖는 label을 고르고, 그 label이 있을 확률에 대해 다른 bbox들을 확률이 높은 순서로 나열한다.
  2. 그리고 확률값이 제일 큰 bbox그 다음으로 큰 bboxIoU를 구하여 0.5이상 이면 두 bbox는 많은 부분이 겹친다는 것이기 때문에 공존할 이유가 없어 값을 0으로 바꾸고 IoU가 0.5이하인 것만 남을 때까지 이 과정을 반복한다.
  3. 다른 label을 기준으로 2번, 3번 과정을 반복하여 bbox를 추려 낸다.
  4. 최종적으로 정확한 bbox만 남게된다.

Loss Function

전체적인 loss를 살펴 보면 Lconf(classificaion loss)와 Lloc(bounding box의 localization loss)를 합쳐서 구한다. 이때 Lconf은 cross-entropy를 사용했고 Lloc는 smoth L1 loss를 사용했다.

Result

  • Results on Pascal VOC2007 test.

  • Detection examples on COCO test-dev with SSD512 model.


© 2020. All rights reserved.