SSD: Single Shot MultiBox Detector 요약
앞선 글에서 SSD 논문을 전체적으로 읽고, 전체 내용을 번역하며 정리해봤었다.
이번 글에서는 SSD 논문과 모델이 제시한 새로운 기여들을 중심으로, 깔끔하게 논문을 요약 정리해보겠다.
서론
SSD 이전의 딥러닝 기반 Object Detection 모델은 R-CNN에서 파생된 2-stage 모델과, OverFeat, YOLO 등의 1-stage 모델이 있었다.
2-stage 모델은 별도의 영역 제안(Region Proposal) 과정을 통해 객체가 있는 것으로 판별되는 ROI(Region of Interest)들을 만들고, 이를 통해 Detection을 수행하는 두 단계의 방식으로 구성되어 일반적으로 높은 정확도와 느린 속도를 보였다.
1-stage 모델은 영역 제안 과정과 Detection을 구분하여 수행하지 않고 한 모델에서 수행하여 빠른 속도를 내었지만, 2-stage 모델에 비해 비교적 낮은 정확도를 내었다.
SSD는 영역 제안 과정을 따로 진행하지 않는 1-stage 모델이면서도, 당시 SOTA 2-stage 모델이었던 Faster R-CNN을 뛰어넘는 정확도와 1-stage 모델인 YOLO를 뛰어넘는 속도를 내었다.
(Pascal VOC 2007에서 SSD 59FPS 74.3% mAP vs Faster R-CNN 7FPS 73.2% mAP vs YOLO 45FPS 63.4% mAP)
Main Ideas of SSD
SSD는 기존 2-stage 모델은 정확도를 위해 속도를 희생하고, 1-stage 모델은 속도를 위해 정확도를 희생하는 trade-off를 근본적으로 개선하고자 하였다.
모델 구조
SSD는 Base Network라 불리는 사전 학습된 합성곱 신경망에 추가적인 합성곱 계층들(Extra Feature Layers, Auxiliary Network)를 이어붙여 구성된다.
논문에서는 Base Network로 VGG16 모델을 사용하였는데, 이때 VGG16 말단의 완전 연결 계층 두개를 합성곱 계층으로 변환하여 모델 전체를 합성곱 계층으로 구성하였다. (위 그림에서 Conv6, Conv7이라고 표시된 계층이 변환된 계층이다.)
Multi-scale feature maps and Convolutional Predictors
SSD는 다양한 크기의 객체를 인식하기 위해, 모델의 각 구간에서 6개의 서로 다른 스케일을 갖는 feature map들을 뽑아내어 인식을 수행한다.
위 Fig 2를 보면 Conv4_3, Conv7, Conv9_2, Conv10_2, Conv11_2에서 각각 feature map을 뽑아 detection을 수행하는 것이 나타난다. 이때, 각 feature map은 Localiization과 Classification을 수행하는 PredictionConvolution 계층으로 전달되는데, 각 Predictor는 feature map의 각 위치에 대한 bounding box offset(cx, cy, w, h)과 classification score를 출력하는 convolution 계층으로 되어있다.
즉, Prediction Convolution의 출력은 4채널의 bounding box offset과 class 개수 만큼의 채널을 갖는 confidence score로 볼 수 있다.
(예측을 fc layer가 아닌 convolution layer로 수행하는 아이디어는 OverFeat에서 사용된 바 있다.)
Default Boxes
feature map의 각 위치의 receptive field들은 자연스럽게 일정한 크기와 비율의 사각형이 된다. 그러나 실제 객체들은 다양한 비율과 크기를 갖기 때문에, 이를 그대로 사용하는 것은 성능에 좋지 못하다.
SSD에서는 다양한 크기와 비율(aspect ratio)을 갖는 Default Box들을 정의하여, 이를 각 feature map에 적용함으로써 다양한 크기와 비율의 객체들을 인식하게 하였다. 이는 Faster R-CNN에서 사용된 Anchor Box와 유사한 개념이다.
저자는 각 영역마다 가로와 세로의 비율이 $a_r \in [1, 2, 3, \frac{1}{2}, \frac{1}{3}]$인 5개의 default box에 더하여, 비율이 $1$인 box의 경우 스케일이 더 작은 $s'_k=\sqrt{s_ks_{k+1}}$ box를 하나 더 추가하여 총 6개의 default box들을 적용하였다.
$k$번째 feature map에 적용될 default box의 가로 길이 $w^a_k=s_k\sqrt{a_r}$와 세로 길이 $h^a_k=s_k/\sqrt{a_r}$를 정의하는 스케일 $s_k$은 다음과 같이 정의된다.
$$ s_k = s_\min + \frac{s_\max + s_\min}{m-1}(k-1), \; k \in [1,m]$$
이때, $m$은 사용할 feature map이 개수로 논문에서는 6이며, $s_\min=0.2$, $s_\max=0.9$이다.
Prediction by Convolutional Predictor
신경망에서 추출한 $m$개의 feature map에 대해 $3\times 3$, stride=1, padding=1의 합성곱 연산을 수행한다. 이때, 출력 채널의 수가 사용하는 default box의 갯수 $k$와 클래스 개수 $c$에 대해, $k(4+c)$가 되도록 한다.
합성곱 연산이 feature map의 가로 세로 크기는 유지한 채로, $k$개의 default box에 대한 4개의 bounding box offset, $c$개의 클래스별 confidence score를 출력하는 것이다.
Matching GT box for Training
이제 학습을 위해, 실제 상자(GT box)와 예측 상자를 매칭해주는 작업을 수행한다.
한 객체에 대해 여러 개의 default box가 예측 bounding box를 만들었을 것인데, 이 box들 중, GT와의 IOU(논문에서는 jaccard overlap이라 표현)가 0.5 이상인 상자들을 모두 매칭해 준다.
이 과정을 거치면 많은 box들이 GT box와 매칭이 되는데, 이 중 negative sample이 많아 발생하는 class invariance를 해결하기 위해 Hard Negative Mining을 수행한다. (HNM에 대한 설명은 OHEM 리뷰글에서 확인할 수 있다.)
Training
SSD의 학습은 다음과 같은 순서로 이뤄진다.
- Base Model + Auxiliary Network에 이미지를 통과시킨다.
- 1.에서, 중간 중간 feature map들을 뽑아내어 준다.
- 2.에서 뽑은 feature map들을 convolutional predictor에 넣어 각 위치에 대한 bounding box offset과 classification score를 얻는다.
- 3.에서 얻은 결과(feature map 형태)들을 병합한다.
- 예측한 default box들과 GT box들을 매칭한다. Localization Loss값을 계산하고 HNM을 수행해 샘플을 걸러낸다.
- 걸러낸 샘플들을 대상으로 Confidence Loss를 계산한다.
- 계산된 Loss로 역전파를 수행하여 모델을 학습시킨다.
Prediction
실제 예측 시, SSD는 위에 더하여 Non-max suppression을 적용하여 중복된 bounding box를 제거함으로써 정확도를 올린다.
추가적인 내용
Data Augmentaion
위에서는 언급하지 않았으나, 논문에서는 SSD의 성능을 올린 원인 중 하나로 데이터 증식을 꼽았다.
특히 SSD과 같은 1-stage detector는 R-CNN을 비롯한 2-stage 모델들과 달리 객체의 translation(이동 및 변형)에 취약하다. 그만큼 데이터 증식을 통해 다양한 형태의 객체를 학습시키는 것이 mAP를 8.8%나 향상시킬 정도로 중요했다고 한다.
Small object, Similar object accuracy
실험 결과 SSD는 다른 모델들에 비해 작은 물체들과 비슷한 클래스의 물체들(예를들어, 동물 들)을 인식하는데 어려움이 있었다. 연구진은 이것이 작은 Object들을 인식하기 위해 low-level 정보들을 담고 있는 앞쪽 feature map의 default box를 사용하는 것과 연관이 있다고 보았다.
SSD는 1-stage detector이면서도 기존에 나온 논문들의 기술을 총동원해 2-stage detector인 Faster R-CNN의 정확도와 YOLO의 속도 모두를 앞지른 의미있는 모델이다.
특히 개인적으로 이 논문을 읽으면서, 다른 리뷰나 해설 글을 보지 않고 논문 전체적인 내용을 꼼꼼히 이해하기 위해 노력하여 뜻깊다.
논문이 내가 지금까지 읽어온 다른 논문에 비해 양이 긴 편인데, 연구진의 이전 모델들을 앞서겠다는 열의와 이를 여러 차례의 실험으로 검증하고자 한 꼼꼼함이 느껴졌다.
참고자료
- SSD 논문 - arxiv
- SSD 논문(SSD: Single Shot MultiBox Detector) 리뷰 - herbwood
'Deep Learning > 공부 노트' 카테고리의 다른 글
FPPI, LAMR, MR: Object Detection을 위한 지표들 (0) | 2023.01.26 |
---|---|
R-FCN: Object Detection via Region-based Fully Convolutional Networks 요약 (0) | 2023.01.20 |
YOLO: You Only Look Once 부수기 [백 병장의 CV 부수기 6편] (0) | 2022.12.11 |
OHEM 부수기 [백 병장의 CV 부수기 5편] (1) | 2022.12.10 |
Faster R-CNN 부수기 [백 병장의 CV 부수기 4편] (0) | 2022.12.04 |
댓글
이 글 공유하기
다른 글
-
FPPI, LAMR, MR: Object Detection을 위한 지표들
FPPI, LAMR, MR: Object Detection을 위한 지표들
2023.01.26 -
R-FCN: Object Detection via Region-based Fully Convolutional Networks 요약
R-FCN: Object Detection via Region-based Fully Convolutional Networks 요약
2023.01.20 -
YOLO: You Only Look Once 부수기 [백 병장의 CV 부수기 6편]
YOLO: You Only Look Once 부수기 [백 병장의 CV 부수기 6편]
2022.12.11 -
OHEM 부수기 [백 병장의 CV 부수기 5편]
OHEM 부수기 [백 병장의 CV 부수기 5편]
2022.12.10