Image processing/Object Detection

[객체 탐지] SSD: Single Shot MultiBox Detector

유니디니 2020. 1. 3. 16:53
728x90
반응형



참고 자료 

YouTube : https://www.youtube.com/watch?v=ej1ISEoAK5g

Git-Hub : https://github.com/amdegroot/ssd.pytorch

[1] https://arxiv.org/abs/1512.02325

[2] https://towardsdatascience.com/review-ssd-single-shot-detector-object-detection-851a94607d11

[3] https://taeu.github.io/paper/deeplearning-paper-ssd/




SSD는 이전의 State-Of-Art인 yolo보다 속도가 빠르고, RPN(Region Proposal Network)방법 중 하나인 Faster R-CNN보다 성능이 뛰어나다.


  • 속도 : SSD300의 mAP : 74.3 %, 59 FPS, SSD500 76.9%, 22 FPS
    Faster R-CNN mAP : 73.2%, 7 FPS, YOLOv1 mAP : 63.4%, 45 FPS
  • SSD 알고리즘은 네트워크 중간 계층에서 다수의 피쳐맵을 활용한다. 각 피쳐맵은 크기가 각기 다른 종횡비의 Bounding Box를 가지며, 모델을 통해 계산된 좌표와 객체 클래스 값에 대하여 default box를 활용해 최종 Bounding box를 생성한다. 
  • 실혐결과, PASCAL VOC, COCO, ILSVRC 데이터 셋으로 성능을 비교했을때, 제일 성능이 좋았다.


1. SSD Framework

  • SSD는 학습 시, 입력 이미지와 각 객체에 대해 box를 그린 정답 이미지가 필요하다. 
  • 컨볼루션 특징 추출과정을 거친 후, 8x8과 4x4 특징 맵에서 서로 다른 종 횡비(different aspect ratios)와 위치(location)를 가지는 mxn(number of location)피쳐 계층에 3x3 컨볼루션 연산을 적용한다. 
  • 각 위치마다, k개의 bounding box가 있다. 
  • 각 bounding box에 대하여, c개의 클래스 score와 4개의 offset(bounding box의 x,y,w,h)를 계산한다.
  • (c+4)k*m*n


2. SSD Network Model


  • SSD는 YOLO와 다르게, 중간계층의 다양한 피쳐맵(Feature Map)들을 활용할 뿐만아니라 FC Layer계층을 컨볼루션 연산으로 대체함으로써, 성능과 속도를 향상시켰다. 
  • Base Network로는 VGG-16을 사용하였으며, 최근 높은 성능을 보이는 Base Network를 활용하면 좋을 것으로 생각한다.
  • 모델의 구조는 Base network와 Classifier로 나누어진다. 이를 토대로, 출력의 수를 계산하면
    Base network 부분에서 m*n*(4*(Classes+4))
    Classifier 부분에서 m*n*(6*(Classes+4))

    Bounding Box의 수 = Conv4_3 + Conv7 + Conv8_2 + Conv9_2 + Conv10_2 + Conv11_2
    ex) Bounding Box의 수는 클래스의 수를 제외하면 되기 때문에 
    Conv4_3 = 38*38*4 = 5,776, Conv7 = 19*19*6 =2,166 등으로 연산한다.
  • 따라서, Bounding Box의 수만 비교해보면 Yolo는 7x7x2 = 98개, SSD는 8,732개이다. 

3. Bounding Box의 종횡비


값은 0.2, 는 0.9로 설정하였으며, 5개의 종횡비를 가진다. (1,2,3,1/2, 1/3)



4. 실험 결과


  • PASCAL VOC 2007



다른 방법들에 비해 높은 정확도를 보이며, 이미지 크기가 큰 SSD512에서 당연히 가장 좋은 결과를 보였다.



논문에서 제안하는 데이터 증가(Augmentation)방법을 적용했을때 높은 성능을 보였으며, DeepLab에서 주로 쓰이는 atrous 방법(기존과는 다른 형태의 Convolution)을 fc-layer 대신 사용하게 되면 최상의 결과를 보였다. 



이 부분에서는 이미지안에서 객체의 크기에 따른 성능 범위를 나타내며, 맨 위쪽의 두개의 그래프는 Bbox의 aspect ratio에 대한 효과를 나타내며 아래 두개의 이미지는 Data Augmentation을 적용했을때 효과를 나타낸다.

반응형