( 참고 : Fastcampus 강의 )

[ SSD (Single Shot MultiBox Detector) ]


1. Object Detection 알고리즘들

figure2

  • FPS : Frame Per Second


2. SSD (Single Shot MultiBox Detector) (2016)

figure2

SSD = Single Shot MultiBox Detector

  • Backbone : VGG16 사용

  • 중간중간에서 발생하는 각각의 feature map들이, detection하는 output layer에 모두 연결(concatenate)되어 있다.
  • YOLO와 마찬가지로, Non-Maximum Suppresion 사용

figure2


1) Multi-scale feature maps for detection

figure2

  • Layer를 지날 수록, Feature Map의 크기는 감소 \(\rightarrow\) 다양한 배율에서의 Object Detection 가능!

  • (쉬운 해석) 오른쪽으로 갈 수록, ( 더 작은 H & W 이므로 ) 물체의 더 큰 영역을 잡아낸다.
    • 왼쪽 : 작은 물체 포착
    • 오른쪽 : 큰 물체 포착
  • 어느 정도 Layer 지나서, 배율이 좀 높아지면, 그때부터는 bounding box 사용

  • example) 아래 그림 참조
    • 8 × 8 Feature Map에서는 작은 object인 고양이를 찾음
    • 4 × 4 Feature Map에서는 큰 물체인 개를 찾음

figure2


2) Default Box & Aspect Ratio

  • Output layer 부근의 layer들에서 생성된 feature map들에서, 각 feature map 내의 각 cell들에 대해 default box를 적용함

  • Default Box?

    • 위의 image에서, 점선으로 표시된 박스와 같이,

      미리 정해진 크기의 Box에 aspect ratio를 적용한 Box를 의미

  • 각 Default Box의 위치는 고정됨

  • 각 cell들은 이 Default Box를 이용하여…

    • 1) Bounding Box의 offset과
    • 2) 각 Class에 해당하는 Object 존재 여부에 대한 score

    를 계산한다


Default Box 생성 Rule

Notation

  • \(k\) : feature map의 size ( \(k \times k\) ), where \(k \in[1, m]\)
  • \(a_r\) : aspect ratio
  • \(w_k\) & \(h_k\) : width & height
  • \(s_{min}=0.2\), \(s_{max}=0.9\)


\(s_{k}=s_{\min }+\frac{s_{\max }-s_{\min }}{m-1}(k-1)\).

  • feature map의 크기가 달라짐에 따라, scaling값도 변화함을 알 수 있다


\[a_{r} \in\left\{1,2,3, \frac{1}{2}, \frac{1}{3}\right\}.\]
  • 5가지 종류의 aspect ratio


\(\begin{array}{r} w_{k}^{a}=s_{k} \sqrt{a_{r}} \\ h_{k}^{a}=s_{k} / \sqrt{a_{r}} \end{array}\).

  • width & height 계산


Aspect ratio가 1인 경우, 아래의 default box 하나가 더해진다. 해당 box의 scale은

  • \(s_{k}^{\prime}=\sqrt{s_{k} s_{k+1}}\).


3) IOU (Intersection over Union)

( Jaccard Overlap이라고 부름 )

두 box(영역)의 overlapping 정도를 나타내는 (상대적인) 값

  • box 1) 제안된 default box
  • box 2) ground truth box

figure2


IoU값이 0.5이상이 되면, 해당 default box는 적합한 bounding box이다!

( 하나의 cell에 대해 여러 개의 bounding box가 있을 수 있음 )


3. Training Loss of SSD

Faster R-CNN과 유사하다.

\(L(x, c, l, g)=\frac{1}{N}\left(L_{\text {conf }}(x, c)+\alpha L_{l o c}(x, l, g)\right)\).

  • \(N\) : matching된 default box의 개수
  • \(L_{conf}\) : confidence score에 해당하는 classification loss ( cross entropy )
  • \(L_{loc}\) : localization에 해당하는 regression loss ( smooth L1 loss )

figure2


4. Data Augmentation

Sample a patch

  • minimum IOU가 최소 0.1/0,3/0.5/0.7/0.9가 되도록 patch 생성

  • patch size 또한 랜덤하게 샘플

Horizontal Flip 0.5 확률

figure2