본문 바로가기

인공지능/DeepLearning

[Computer Vision] Single Shot Multi box Detection (SSD)


앞에서의 이론들을 바탕으로 Object Detection 모델인 Single Shot Multi box Detection(SSD)를 구성할 수 있습니다.

SSD 설명에 앞서 Object Detection에는 크게 2가지 종류가 있습니다. 

  • 1-stage Detector : Localization과 Classification을 동시에 진행
  • 2-stage Detector : Localization을 진행 후 Classification을 진행

1-stage Detector는 동시에 진행하는 만큼 속도가 비교적 빠르지만 정확도가 낮고

2-stage Detector는 순차적으로 진행하는 만큼 속도가 비교적 느리지만 정확도가 높습니다.

 

오늘 언급할 SSD는 1-stage Detector입니다.


SSD; Single Shot MultiBox Detector

SSD 모델은 Bounding Box에 대한 offset을 조절할 때, pixel과 feature들을 재 추출하지 않음으로써 기존의 속도와 정확성의 trade-off 문제를 극복하고자 고안된 classification과 Localization을 동시 실행하는 단일 신경망 모델입니다.

 

SSD 등장 배경

Object Detection 과제는 최근 자율주행 자동차 등에 활용되며 정확도뿐만 아니라 신속성도 중요해지고 있습니다.

하지만 2-stage Detector는 1-stage Detector보다 정확하지만 실제 적용하기에는 신속성이 많이 떨어집니다.

 

따라서, 최근에는 일정 수준의 정확성을 유지하는 선에서 신속성을 높이는 방향으로 많이 개발되고 있습니다.

 

SSD 특징

 

Feature Map의 크기가 작아지는 특성을 사용하여 고정된 bounding box로 더 넓은 객체를 인식할 수 있습니다.

이미지가 작아지는 것이 아니라 feature map이 함축적으로 변화되면서 더 넓은 범위를 표현한다고 생각하는 것입니다.


SSD 구조 및 절차

  1. 기본 이미지에서 전형적인 CNN 구조를 통해 feature map을 얻습니다.
  2. feature map에 Classifier를 돌려 특정 값을 뽑아서 축적합니다. ( Classifier : bounding box 예측, category 분류 )
  3. featrue map에 Convolution을 하여 더 작은 feature map을 만듭니다.
  4. (2번과 3번을 반복한 뒤) 축적된 특정 값을 이용해 IoU 평가지표로 사용하게 됩니다.
  5. 마지막으로 Non Maximum Suppression을 통해 겹치는 Bounding box를 제거하여 최종적인 분류와 탐지를 합니다.

300x300 image에서 38x38 feature map으로 크기가 대폭 줄기 때문에 아주 작은 객체들은 탐지를 못 할수도 있습니다.

크기를 크게 유지하기 위해서 Resnet을 많이 사용하거나, 더 해상도가 높은 image를 통해 문제를 완화할 수 있습니다.

 

default Bounding box

Classifier에서 default Bounding box의 형태를 정해놓고 진행하게 됩니다.

현실에서 경계 상자는 어느정도의 비율과 모양이 정해져있습니다.

예를 들어 자동차의 비율과 형태는 비슷하고, 보행자의 가로 세로 비율은 대략 0.41정입니다.

 

k-mean Clustering

 

그림과 같이 어느정도의 비율을 가지고 군집화가 이루어져있습니다.

개념적으로 Ground Truth Bounding box는 default Bounding box로 표현되는 각 군집에 어느정도 포함되게 됩니다.

그래서 우리는 무작위로 예측을 하는 것이 아닌, default Bounding box에 근거하여 추측을 하는 것입니다.

따라서 복잡성을 줄이기 위해 default box를 최소한으로 4개에서 6개 정도만 사용합니다.

 

default box라고 값을 지정해주는것이 아니라, 예측을 통해 각 feature map에 맞는 default box를 조정해가는 것입니다.

 

SSD Classifier

 

SSD Classifier의 절차는 다음과 같습니다.

  1. feature map에 Classifier인 3x3 Filter를 적용하여 새로운 feature map을 만듭니다.
  2. 새로운 feature map은 기존의 feature map과 크기가 같습니다. = (각 위치에서의 Bounding box의 offset입니다.)
  3. 새로운 feature map을 1x1 Filter를 사용하여 늘립니다.
  4. 최종적으로 모든 Convolution이 끝난 후 concat하여 합친 뒤 IoU평가 지표를 측정하고 NMS를 진행하게 됩니다.

Concat한 모든 default box(=default bounding box)를 고려하지는 않습니다.

default box와 Gorund Truth box간의 IoU를 계산하고 0.5보다 크면 1, 아니면 0으로 할당한 후, NMS를 진행합니다.


손실 함수

Total Loss =  Confidence Loss(class 분류 손실 값 : 정확성) + Localization Loss(bounding box 예측 손실 값 : 정밀성)

 

$x$:image, $c$:class, $N$:매칭된 default box의 수 ( IoU( l, g ) > 0.5 ), $l$:예측한 bounding box, $g$: Truth box


Reference.

Dive into Deep Learning, Aston Zhang and Zachary C. Lipton and Mu Li and Alexander J. Smola, 2020
   
SSD: Single Shot MultiBox Detector, Wei Liu, Dragomir Anguelov, Dumitru Erhan, Christian Szegedy, Scott Reed, Cheng-Yang Fu, Alexander C. Berg2016

https://jonathan-hui.medium.com/ssd-object-detection-single-shot-multibox-detector-for-real-time-processing-9bd8deac0e06