SSD: Single Shot MultiBox Detector

2021. 5. 5. 00:40Computer vision 논문 & 코드리뷰

728x90

새로운 논문 스터디가 시작 되었다 :) 논문 읽기 - 코드리뷰 - 구현까지 화이팅 :) 

Abstract

single deep neural network로 이미지에서 object detection 수행하는 방법 제시

bounding boxes의 output space를 feature map 위치 당 다른 aspect ratio 와 scale을 가진  default boxes 세트로 이산화한다.

prediction time에 network는 각 default box에 각 object의 존재에 대한 점수를 생성한다. 그리고 object shape와 더 잘 일치하도록 box에 대한 조정을 한다.

network는 여러 feature map의 예측을 다른 해상도와 결합해 다양한 크기의 개체를 자연스럽게 처리한다.

SSD는 object proposals를 요구하는 방법(two-stage)보다 심플하다. 왜냐하면 proposal generation과 subsequent pixel 또는 feature resampling 단계를 완전히 제거하고 단일 네트워크에 모든 계산을 캡슐화하기 때문이다.


1. Introduction

이 논문 이전의 object detection 

: bounding box를 가정 -> 각 box대한 pixel이나 feature들 resample -> high quality classifier 적용 이 방식의 변형

: 이 파이프라인은 PASCAL VOC, COCO 및 ILSVRC detection에 대한 현재 선행 결과를 통해 ResNet과 같은 더 깊은 기능을 가지고 있지만 모두 Faster R-CNN을 기반으로 하여 Selective Search Work 이후 detection benchmarks에서 우세했다.

정확하기는 하지만, 이러한 접근 방식은 임베디드 시스템에 비해 너무 computationally intensive이었으며, high-end hardware에도 불구하고 실시간 애플리케이션에는 너무 느렸다. (이 방식에서 가장 빠르다는 Fastrer R-CNN도 7fps정도)

본 논문은 bounding box hypotheses을 위해 픽셀이나 features를 resampling하지 않고도 그만큼 정확한 최초의 deep network 기반 object detector를 제시한다. 

픽셀이나 feature을 resampling한다는 것은, selective search의 과정을 말하는 듯 합니다.

더보기

간략한 성능비교:

59 FPS with mAP 74.3% on VOC2007 test, vs. Faster R-CNN 7 FPS with mAP 73.2% or YOLO 45 FPS with mAP 63.4%

속도의 근본적인 개선은 bounding box proposals과 subsequent pixel or feature resampling stage를 제거하는 데서 온다. - ( YOLO, OverFeat에서도 적용한 방법 )

 

SSD의 중요 개선 사항

1. 작은 Convolution filter 사용해 bounding box위치의 object categories와 offset 예측

2. different aspect ratio detections에 대해 별도의 predictors(filter) 사용 

3. 이 filters를 network 후반에서 여러 feature map에 적용해 여러 규모로 detection을 수행

 

이러한 변형, 특히 different scales에서의 prediction을 위해 multiple layers를 사용함으로써, 상대적으로 low resolution인 input에서도 high accuracy를 얻어내고, 빠른 detection speed도 얻어냄.

변형(?) 각각은 이러한 성능 향상에 기여가 낮아보여도, 결과적인 시스템에서 real time detection에 accuracy를 높여주었다. ( 적용 방법 하나하나의 성능 향상에 대한 영향을 설명하기 보다는, 실험적으로 성능이 향상되었다는 것을 보여주려 하는 듯 합니다. )

 

1. 이 당시 최신 single shot detector였던 YOLO보다 빠르고, 2 stage detector인 faster R-CNN보다 정확도가 높다

2. SSD의 핵심은 feature map에 small convolution filters를 적용하여 default bounding boxes의 고정된 set에 대해/ box offsets를 계산하는 것과, category scores를 예측하는 것이다.

3. 높은 detection accuracy를 달성하기 위해 다른 scale의 feature maps에서 다른 scale의 predictions를 생성하고 가로 세로 비율에 따라 prediction을 명시적으로 분리한다. (anchor box 관련 내용)

4. 이러한 설계 특징은 낮은 해상도 입력 영상에서도 간단한 end-to-end training과 high accuracy로 이어져  speed vs accuracy trade-off 를 절충함.

5. 실험에는 PASCAL VOC, COCO 및 ILSVRC에서 평가된 다양한 input size를 가진 모델에 대한 timing and accuracy 분석이 포함되며, recent state-of-the-art approaches와 비교된다.

 

2. Single Shot Detector(SSD)

SSD 접근 방식은 고정 크기의 bounding boxes 및 해당 box에 object class instances 존재에 대한 점수를 생성하는feed-forward convolutional network를 기반으로 한 다음 final detections를 생성하는non-maximum suppression (NMS) 단계를 따른다. 
초기 네트워크 계층은 고품질 이미지 분류(어떤 분류 계층보다 먼저 잘라짐)에 사용되는 표준 아키텍처를 기반으로 하며, 이를 base network라고 부른다.

그런 다음 네트워크에 auxiliary(보조) structure를 추가하여 다음과 같은 key features으로 detection를 생성합니다.

Multi-scale feature maps for detection 우리는 truncated base network의 끝에 convolutional feature layers를 추가한다.
이러한 계층들은 점차적으로 크기가 줄어들고(conv연산 거칠수록 작아지는 feature map - > 작은 feature map일수록 큰 object 인식) 여러 scale로 detection을 예측할 수 있다. 
detection을 예측하는 convolution model은 각 feature layer( single scale feature map에서 작동하는 Overfeat 및  YOLO )에 대해 다르다.
Convolutional predictors for detection 각 추가된 feature layer(또는 선택적으로, 존재하는
feature layer from the base network)는 a set of convolutional filters를 사용해 fixed set of detection predictions를 생성할 수 있다.(각 class 별 존재 확률) (그림의 top layer 부분)

p채널을 가지는 m x n 크기 feature map 대해서,
basic element for predicting parameters of a potential detection : 카테고리 별 score나 default box 좌표에 대한 shape offset을 생성하는 3 x 3 x p small kernel

긱 kernel이 적용되는 m x n locations 대해 output value가 생성된다.

The bounding box offset output values: 각 feature map 위치에 default box position을 기준으로 상대적으로 측정됨. ( YOLO에선 conv filter대신 intermediate FCL 사용)
Default boxes and aspect ratios network의 top부분의 multiple feature maps 대해 각 feature map cell 대해서 default bounding boxes 구성

default box는 해당 셀에 상대적인 각 상자의 위치가 고정되도록 feature map을 convolution 방식으로 배열( default box 로 conv 수행한다고 생각)
-> 각 feature map cell에서 cell의 default box 모양과 관련된 offset과 각 box에 class instance의 존재를 나타내는 per-class scores를 예측.

구체적으로, 주어진 위치에 있는 k의 각 box에 대해, c class scores 와 the 4 offsets relative to the original default box shape 계산

이 계산은 총 (c + 4)k filters 의 결과로 나오며, 이 filters는 feature map의 각 위치에 적용이 되고, m x n featuremap대해 (C + 4)kmn 개 outputs를 산출해낸다.

default box는 Faster R-CNN의 anchor box와 유사( 사실상 같다 )
하지만 저자는 여러 resolution의 여러 feature map 에 적용함으로서 차이를 주었다고 말하고 있다(ㅎㅎ...)
- >  possible output box shapes 를 효율적으로 discretize (구분)

training

region proposals를 사용하는 detector와 SSD 간의 training에서의 가장 큰 차이는 ground truth information이 고정된 a set of detector ouputs의 특정한 outputs에 할당되어야 한다. ( 정해진 output 형태에 맞추어 ground truth information이 제공되어야 한다는 것으로 생각된다. ) 이 할당이 결정되면 Loss function과 back propagation이 end-to-end로 적용된다.

training에는 또한 detection을 위한 default box와 scale의 집합hard negative miningdata augmentation 전략을 선택하는 것도 포함된다.

더보기

※ Hard negative mining이란?

Bounding Box를학습시킬 때, 모델은 2가지 종류의 이미지가 필요하다. 하나는 positive training example (내가 관심있어하는 물체가 담긴 샘플), 다른 하나는 negative training example (내가 관심있어하는 물체와 관련없는것이 담긴 샘플).

 

좋은 positive example을 가져오는 것은 간단하다. 내가 보고싶어하는 물체가 해당 Bounding Box 안에 잘 들어가있는지를 확인하면 되기 때문이다. 그렇다면 좋은 negative example은 무엇일까? 내가 관심있어하는 물체가 일부만 담긴 샘플인지, 다른 class의 물체가 담긴 샘플인지 아니면 배경을 담은 샘플인지 다소 정의하기가 까다로워진다. 좋은 negative example을 가져오는 방법이 바로 Hard Negative Mining이다.

 

작동 방법은 다음과 같다. 우선, negative sample들이 있으면 이들을 confidence score를 기준으로 내림차순 정렬을 한다. 이 중 높은 순으로 뽑은 negative sample들을 가져오는 것이다. 그 다음 random 하게 선정한 positive sample들과 구성하여 하나으l mini batch를 형성 후, CNN에 training 시키는 것이다. 이를 통해 전체 negative sample을 모두 사용할 필요가 없기에 memory의 양 또한 줄어들게 된다.

 

 

출처 : cool24151.tistory.com/37

 

[Computer Vision] Hard Negative Mining

Bounding Box를학습시킬 때, 모델은 2가지 종류의 이미지가 필요하다. 하나는 positive training example (내가 관심있어하는 물체가 담긴 샘플), 다른 하나는 negative training example (내가 관심있어하는 물체..

cool24151.tistory.com

<Matching strategy>

training 중에 우리는 어떤 default box가 ground truth detection에 해당하는지 결정하고 그에 따라 네트워크를 훈련시켜야 한다. 
각 ground truth box에 대해 위치, 종횡비 및 scale에 따라 달라지는 default boxes에서 선택합니다. 
우리는 각 ground truth box를 최상의  jaccard overlap으로 default box에 일치시키는 것으로 시작한다. 그런 다음 default box를 임계값(0.5)보다 높은 jaccard overlap으로 모든 ground truth과 일치시킵니다.  = Bounding box와 겹치는 IOU가 0.5 이상인 Default(Anchor) Box 들의 Classification과 Boudning box Regression을 최적화 학습 수행.
이것은  learning problem를 단순화하여 네트워크가 maximum overlap이 있는 default box만 선택하도록 요구하지 않고 중복된 여러 개의 default box에 대해 높은 점수를 예측할 수 있게 한다. 

※ jaccard index = IOU

 

<Training objective>

MultiBox objective에서 비롯되었지만 multiple object category를 다뤄야함.

p카테고리의 i번째 default box의 j번째 ground truth box를 매칭하기 위한 지표
matching strategy에서,
  • 전체 objecctive loss 는 localization loss(loc)와 confidence loss(conf)의 weighted sum이다.
  • N=matched default boxes의 number, N=0이면 loss를 0으로 세팅

 

  • loc는 Smooth L1 loss between the predicted box (l) and the ground truth box (g) parameters (R-CNN과 비슷) : bounding box regression 대한 loss
  • default bounding box(d)의 w, h와 중심 (cx, cy)에 대한 offset을 회귀. 
  •  

전체 loss, 알파는 weight term으로 cross validation의해 1로 setting

  • conf는 multiple classes confidences(c) (각 class의 확률들) 의 softmax loss이다 : classification대한 loss

<Choosing scales and aspect ratios for default boxes>

여러 사이즈의 이미지들을 처리하고 결과를 합치는 대신 여러 레이어의 feature maps를 사용하고 모든 object scales에서 파라미터를 공유

  1. lower layers의 feature map은 input objects의 더 자세한 디테일들을 포착하기 때문에 이를 사용하는 것은 semantic segmentation의 퀄리티를 더 높여줌.
  2. feature map에서 pooling된 global context를 추가하면 segmentation 결과를 원활하게 만들 수 있음.

두가지 방법에서 영감을 받아

detection을 위해 lower , upper feature maps를 모두 사용

다른 레벨에서 나온 feature maps는 different receptive field size를 가진다. SSD framework에선 default boxes는 각 layer의 실제 receptive field에 해당하지 않아도 된다.

특정 feature map이 객체의 특정 scale에 반응하는 것을 학습하도록 default box의 tiling을 설계한다.

 

feature map m을 사용하고 싶다고 가정했을 때, 각 feature map대한 default boxes의 scale은 다음과 같이 계산됩니다.

 특정 데이터 세트에 가장 적합하도록 default box의 분포를 설계할 수도 있다.

optimal tiling의 디자인 또한 열린 문제( 데이터 셋에 맞게 개발자가 조정 )

많은 feature map의 모든 위치에서 다른 스케일과 종횡비를 가진 모든 default box에 대한 예측을 결합함으로써,  다양한 input object size와 shapes을 포괄하는 다양한 set of predictions를 가지고 있다.

<Hard negative mining>

matching step 후 대부분의 default box는 negative입니다. ( Fig1에서 8x8 feature map에서 Dog box와 매치 되지 않은 박스들 ) - GT와의 iou 0.5 이상이면 positive, 아니면 negative 
특히 positive default box의 수가 많은 경우. 이것은 긍정적인 훈련 사례와 부정적인 훈련 사례 사이에 상당한 불균형을 초래한다.

- background에 해당하는 positive default box너무 많을 경우가 많기 떄문에 이 경우도 방지.
모든 negative examples를 사용하는 대신, 우리는 각 default box에 대해 highest confidence loss을 사용하여 그것들을 정렬하고, negatives과 positives사이의 비율이 최대 3:1이 되도록 맨 위에 있는 것을 선택한다.

-> 더 빠른 최적화와 더 안정적인 훈련으로 이어진다는 것을 발견했다.

 

<Data augmentation>

model을 다양한 input object sizes에 대해 robust하게 만들기 위해서 각 training image는 이 셋 중 하나의 옵션으로 randomly 샘플링 된다.

 

완전 노가다의 방법입니다.... 고정크기는 300x300(크롭된 작은 이미지를 다시 확장) 이 당시 augmentation 방법이 많이 없었기 때문에.....

 

<Experimental Results>

one stage 방법의 약점이 작은 object를 잘 detect 하지 못하는 것입니다. 개선을 위해 Feature Pyramid를 쓴거지만 그래도 SSD또한 약한 모습을 보입니다.

RetinaNet이 그나마 잘 개선을 했다고 할 수 있죠.

SSD는 augmentation을 통해 개선을 많이 노력했습니다.

 

 

728x90