일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- canny edge detection
- edge detection
- YoLO
- Python
- MinHeap
- Reinforcement Learning
- overfitting
- opencv
- image processing
- BFS
- two-stage detector
- 머신러닝
- sklearn
- 딥러닝
- CNN
- DP
- object detection
- 강화학습
- MySQL
- C++
- eecs 498
- Mask Processing
- 백준
- 그래프 이론
- dynamic programming
- r-cnn
- One-Stage Detector
- AlexNet
- machine learning
- dfs
- Today
- Total
JINWOOJUNG
SSD: Single Shot MultiBox Detector 본문
Research Paper
Abstract
본 논문에서는 A Single Deep Neural Network인 Single Shot MultiBox Detector(SSD)를 제안한다. SSD는 서로다른 해상도를 가지는 Feature Maps에 대하여 서로다른 크기와 비율을 가진 Default Boxes로 객체를 예측 한다.
SSD는 One-Stage Detector로써 빠른 속도를 가짐과 동시에 높은 mAP를 달성하였다. 특히 다양한 해상도를 가지는 Feature Maps에 대하여 예측함으로써 작은 크기의 객체에 대한 정확도를 향상시킨다.
Introduction
Two-stage Detector는 추가적인 Region Proposal 생성 단계가 요구되기 때문에 정확하지만, 실시간 검출을 하기에는 많은 연산량으로 느리다.
본 논문에서 제안하는 SSD는 One-stage Detector로, Region Proposal 생성 단계를 제거하여 빠른 속도를 가지며, 추가적인 개선사항을 통해 높은 정확도를 유지한다.
- 객체의 Category, BBox Offset을 예측하는데 작은 크기의 Convolutional Filter 사용
- 다양한 종횡비 탐지를 위한 개별 예측기(Filter) 사용
- Scale, Aspect Ratio에 따른 서로 다른 Filter 사용
- 서로 다른 크기의 Feature Map에 대하여 서로 다른 Filter로 검출 수행
- 서로 다른 크기의 Feature Map은 Rescpective Field에 따라 다양한 크기의 객체 정보 포함
이를 통해 상대적으로 낮은 해상도(YOLO의 경우 448x448, SSD는 300x300)에 대해서도 더 높은 정확도와 빠른 탐지 속도를 가진다.
Model
SSD는 ILSVRC CLS-LOC Dataset으로 Pre-trained 된 VGG-10을 Base Network로 한다.
자세히 살펴보면, FC Layer6,7을 제거하고 Convolution Layers로 대체한다. 이후 Pool5의 크기를 3x3, Stride 1로 변경하여 중복되는 영역을 포함시켜 세밀한 특징 추출을 진행한다. 또한, "a trous" Algorithm을 통해 Hole을 채우면서 Receptive Field를 확장하면서 해상도를 유지하여 더 많은 정보를 포함하도록 한다. 마지막으로, Drouput Layer과 FC Layer8을 제거하여 SSD 구조에 맞게 변형한다.
SSD는 Base Network에 Auxiliary Structure를 추가한 구조를 가진다.
Multi-scale Feature Maps
Base Network의 끝부분에 크기가 점점 줄어드는 Conv Feature Layer를 추가한다. 이를 통해 다양한 크기에서의 객체 검출이 가능하다.
Yolo의 경우 고정된 하나의 Feature Map에서 예측이 수행되지만, SSD에서는 다양한 크기의 Feature Map에서 수행하기에, 각각의 Feature Map은 서로 다른 Receptive Field를 가지므로 다양한 크기의 객체를 예측할 수 있다.
Convolutional Predictors of Detection
서로 다른 크기의 Feature Map에 대해서 Convolutional Filter Set을 통해 고정된 Prediction Set을 얻을 수 있다.
$m \times n$ 크기, $p$의 Channel을 가진 Feature Layer에 대하여 $3 \times 4 \times p$ 크기의 Small Convolutional Filter를 통해 Category에 대한 점수와 Default Box의 Localization Offset을 생성한다(Stride = 1, Padding = 1).
이때 각 Filter는 Default Box에 대한 Offset, Score에 따라 서로 다른 Filter를 적용하게 된다. 따라서 $(c+4)k$개의 Filter가 요구되며, $c$는 Class 개수, $k$는 Default Box 개수를 의미한다. 최종적으로 $(c+4)kmn$ 크기의 Output이 Convolutional Prediction을 통해 계산된다.
이러한 과정이 단일 크기의 Feature Layer가 아닌 다양한 해상도에 적용되며, 다양한 크기와 종횡비를 가지는 Default Box에 대하여 수행되어 정확도를 향상시키고 BBox의 출력 공간을 효율적으로 이산화 할 수 있다.
SSD 논문에서는 "이산화한다"라는 표현이 자주 사용된다. 이는 출력 공간을 제한한다는 의미이며, 수많은 BBox 예측의 경우의 수를 효과적으로 제한함을 의미한다.
Choosing Scales and Aspect Ratios for Default Boxes
본 논문에서는 서로 다른 크기와 종횡비를 가지는 $k$ 개의 Default Box를 생성한다. 기존 연구에서의 Anchor Box와 유사하지만, SSD는 총 6개의 서로 다른 크기의 Feature Map에 대하여 각각의 Cell 마다 Default Box를 생성함에 차이가 있다.
Default Box의 크기는 $s_k$로 $m$개의 Feature Map 각각이 특정 Scale의 객체를 검출할 수 있도록 계산된다.
$$s_k = s_{min} + \frac{s_{max} - s_{min}}{m-1}(k-1), \; \; \; \; k \in [1, m]$$
본 논문에서는 $s_{min} = 0.2, s_{max} = 09$로 설정하였으며, Aspect Ratio $a_r$는 $a_r \in \left\{ 1,2,3,\frac{1}{2}, \frac{1}{3}\right\}$이다. Aspect Ratio(종횡비)에 따른 Default Box의 Width는 $s_k \sqrt{a_r}$로 계산되며, Height는 $\frac{s_k}{a_r}$로 계산된다. 이때, $a_r$이 1인 경우, $s'_k = \sqrt{s_ks_{k+1}}$을 추가적으로 사용한다. 최종적으로 각 Cell은 6개의 Default Box를 가지며, 각 Box의 중심은 $(\frac{i+0.5}{|f_k|}, \frac{j+0.5}{|f_k|})$로 정의되며, $i, j$는 각 Featuer Map에서 해당 Cell의 좌표, $f_k$는 $k$ 번째 Feature Map의 크기를 나타내며, 결국 각 Cell의 중심을 의미한다.
Training
Matching Stratgy
모델을 학습시키기 위해선, Default Box가 Ground Truth와 Matching 되는 기준을 결정해야 한다. 본 논문에서는 IoU가 0.5이상인 경우 Matching되었다고 판단하며, 1개의 Ground Truth에 대해 여러개의 Default Box와 Matching 되도록 하여 안정적인 학습과 표현력을 향상시켰다.
위 예시의 경우 (b)에서 2개의 Default Boxes가 원본 이미지의 고양이 Ground Truth와 Matching 됨을 확인할 수 있다.
이처럼 Matching 되는 경우는 Positive, 나머지를 Negative라 한다.
Hard Negative Mining
대부분의 Default Boxes는 Negative에 속하며, 이미지의 크기가 클수록 Postivie와 Negative의 불균형은 심해진다. 따라서, 모든 Negative를 학습시키는 것이 아닌, Negative를 Confidence를 기준으로 정렬시킨 뒤, Postivie와 Negative의 비율이 3:1이 되도록 상위 일부 Negative만 학습에 사용한다. 이를통해 최적화가 빨라지고, 더욱 안정적인 학습이 가능하다.
Overall Object Loss
$x^p_{ij} = \left\{ 1, 0 \right\}$를 $i$번째 Default Box가 $j$번째 $p$ Class를 가지는 $j$번째 Ground Truth와의 Matching 여부를 의미한다고 하자. 앞서 이야기 한 것처럼, 1개의 GT에 대한 여러개의 Default Box가 매칭될 수 있기 때문에, $\sum_i s^p_{ij} \geq 1$가 된다.
전체적인 Loss는 Localization Loss와 Confidence Loss의 Weighted Sum으로 정의된다. 이때, $N$은 Matching되는 Default Boxes의 수이며, $N=0$인 경우, Loss가 0이 된다. 또한, $\alpha$는 교차 검층을 통해 1이 된다.
Localization Loss은 Predict Box($l$)와 Ground Truth Box($g$)의 Smooth L1 Loss이다. Smooth L1 Loss는 둘 차이가 크면 L1, 작으면 L2처럼 동작하는 것이다. Localization Loss는 Faster R-CNN의 경우와 동일하게 $x,y,w,h$를 기준으로 예측값과 정답의 Offset Difference로 계산된다.
Confidence Loss는 Softmax Loss로 계산된다.
Experiments
VOC 2007 Dataset으로 학습한 경우 Fast R-CNN보다 높은 성능을 보이며, SSD512의 경우 Faster R-CNN보다 높은 성능을 보인다. 또한, VOC 2007+2012 Dataset의 경우 SSD300부터 Faster R-CNN을 능가한다. 최종적으로 COCO Dataset을 추가하여 학습하는 경우 본 논문에서의 최고 성능인 81.6mAP을 보인다. 이때, SSD300은 300x300 Input을 의미한다.
Error Mode를 분석 한 결과, Loc가 R-CNN보다 낮음을 확인할 수 있다. 이는 SSD가 Input Image의 Feature Map에서 Bounding Box Regression과 Object Category Classification을 직접 수행하기 때문이다.
그러나, SSD는 각 Feature Map의 Cell에서 Default Box 기반으로 학습하기 때문에, Class Independent하지 않고 또한 동일한 Filter를 사용한다. 그렇기에 R-CNN에 비해 Sim Error가 많음을 확인할 수 있다.
XS는 Extra-small, XW는 Extra-wide를 의미한다. SSD는 객체의 크기에 매우 민감한데, 특히 작은 객체에 대한 성능이 큰 객체보다 매우 낮음을 확인할 수 있다. 이는 초기 Layer에서의 Receptive Filed는 매우 크기 때문에 작은 객체에 대한 유용한 정보가 큰 객체에 의해 없어지기 때문이다. 즉 초기 Layer에서의 큰 축소과정은 작은 객체에 대한 Local Information을 사라지게 하기 때문이다.
More default box shapes is better
SSD는 기본적으로 각 위치에서 6개의 Default Box(6개의 종횡비)를 가진다. 만약, $(\frac{1}{3}, {3})$ 종횡비를 제거하면, 성능은 0.6% 감소하며, $(\frac{1}{2}, {2})$ 까지 감소하게 된다면, 2.1%의 성능 감소가 발생한다.
즉 다양한 크기의 Default Box를 사용하는 것이 모델의 성능을 향상시킴을 의미한다.
Inference Time
서로다른 Feature Map에서 생성되는 Box는 매우 많기 때문에 NMS가 필수적이다. 본 논문에서는 Confidence Threshold를 0.01로 설정한 뒤, 각 클래스에 대하여 IoU가 0.45를 기준으로 중복된 박스를 제거하고 상위 200개의 검출 결과를 유지한다.
Fast YOLO는 155 fps로 매우 빠른 속도를 보이지만, 22%의 낮은 mAP를 보인다. SSD300의 경우 59 fps의 빠른 속도와 동시에 74.3%의 높은 mAP를 보인다.
대부분의 추론 시간(80%)은 Base Network가 소모하고 있기 때문에, 더 빠른 Base Network를 사용하면 더 큰 속도 향상이 가능하다.
Summary
본 논문에서 제안하는 SSD는 다중 카테고리를 위한 빠르고 효율적인 객체 탐지기이다.
SSD는 다양한 크기의 Feature Map에 Multi-scale Convolutional Bounding Box Outputs를 연결하여 다양한 크기의 Box Shape를 효율적으로 모델링 할 수 있다(Default Box).
기존 연구보다 더 많은 박스 예측을 기반으로 많으면 많을수록 성능이 향상됨을 검증하였으며, 59 fps의 빠른 동작 속도와 70%가 넘는 높은 mAP로 빠르고 정확도가 우수하다.
'딥러닝 > 논문' 카테고리의 다른 글
Focal Loss for Dense Object Detection(RetinaNet) (0) | 2025.01.22 |
---|---|
You Only Look Once: Unified, Real-Time Object Detection(YOLO) (0) | 2025.01.19 |
Fast R-CNN...(2) (0) | 2025.01.12 |
Fast R-CNN...(1) (0) | 2025.01.12 |
Rich feature hierarchies for accurate object detection and semantic segmentation(R-CNN)...(2) (0) | 2025.01.11 |