아래 글에서 이 블로그에서 리뷰한 논문들의 흐름과 분야별 분류를 한 눈에 볼 수 있다.
기존 신경망에서는 후보 영역을 뽑고 분류하는 두 단계를 가졌다면,
이번 논문에서는 이 둘을 하나로 통합시킨 SSD라는 구조에 대해 설명한다.
1. 모델 구조
SSD는 단방향 CNN이다.
faster R-CNN은 RPN으로 영역제안을 한 후 분류 또는 탐지를 진행하지만, SSD는 하나의 네트워크로 모든 동작을 수행한다.
모델은 이미지를 받아 고정된 개수의 여러개의 박스와 각 박스별 클래스 점수를 출력한다.
그 이후 점수가 낮거나 겹치는 박스도 제거한다.
CNN의 앞부분은 VGG-16같은 모델을 사용한다.
뒷부분의 분류용 layer는 제거한다.
Multi-scale feature maps
백본(VGG-16)의 끝에 크기가 점진적으로 줄어드는 보조 컨볼루션 레이어들을 추가한다.
방금 얘기한 백본 뒤에 convolution layer들을 붙인다.
이 덕분에 여러 크기의 물체를 탐지할 수 있다.
Convolutional predictors
특징 맵에서 객체의 위치와 종류를 뽑아낼 때, 무거운 FC 레이어를 쓰지 않고 3x3xp크기의 작은 컨볼루션 필터를 사용한다.
필터가 특징 맵의 각 지점을 돌 때마다 고정된 개수인 k개의 default box에 대해 두 가지를 예측한다.
예측하는 두 가지는
카테고리의 개수가 c개라고 할 때 이 박스에 대해 각 클래스별 점수와,
이 디폴트 박스를 실제 물체에 맞게 바꾸기 위해 필요한 4개의 변수이다.
따라서 특징 맵의 한 부분에서는 $(c + 4) \times k$개의 출력이 나오게 된다.
따라서 이미지 한 장이 네트워크를 통과했을 때, 하나의 특징 맵($m \times n$)에서 생성되는 전체 데이터의 양은 다음과 같다.
$$\text{Total Outputs} = (c + 4) \times k \times m \times n$$
$c$: 클래스 개수
$k$: 해당 층의 셀당 디폴트 박스 개수
$m, n$: 특징 맵의 가로, 세로 크기

SSD의 구조는 크게 Base Network, Extra Feature Layers, 그리고 Prediction Layers의 세 부분으로 나뉜다.
1. Base Network
VGG-16의 변형이다.
가장 먼저 이미지를 받아 특징을 추출하는 부분이다.
논문에서는 표준적인 VGG-16을 기본으로 하되, 기존 VGG-16의 fc6, fc7 레이어를 각각 Conv6, Conv7으로 교체했다.
이는 위치 정보를 보존하면서 파라미터 수를 줄이기 위함이다.
2. Extra Feature Layers
VGG-16 뒤에 붙는 보조 레이어들이다.
그림에서 Conv8_2, Conv9_2, Conv10_2, Conv11_2로 표시된 부분이다.
단계별 크기 감소: 각 레이어를 통과할 때마다 stride 2(-s2로 표시)를 적용하여 특징 맵의 가로세로 크기를 절반씩 줄였다.
($19 \times 19 \rightarrow 10 \times 10 \rightarrow 5 \times 5 \rightarrow 3 \times 3 \rightarrow 1 \times 1$)
피라미드 구조: 이렇게 생성된 다양한 해상도의 특징 맵들은 각각 다양한 크기의 물체를 탐지한다.
저해상도 맵(뒤쪽)일수록 한 픽셀이 보는 영역이 넓으므로 큰 물체를, 고해상도 맵(앞쪽)일수록 좁은 영역을 정밀하게 봐서 작은 물체를 탐지한다.
3. Prediction Layer
특징 맵이 생성되면 다음 층으로 데이터를 넘김과 동시에, 옆길로 새서 $3 \times 3$ Classifier Conv를 적용한다.
각 층(Conv4_3, Conv7, Conv8_2 등)은 자기만의 고유한 컨볼루션 필터를 사용하여 디폴트 박스의 클래스 점수(Confidence)와 좌표 수정값(Localization)을 뱉는다.
최종적으로 모든 레이어에서 나온 수만 개의 예측값들을 한데 모아 NMS(Non-Maximum Suppression)를 거쳐 최종 결과물을 남긴다.
2. 훈련 방식
훈련할 때 이전 방법들과 가장 큰 차이는 지역제안이 없다는 것이다.
지역제안이 없기 때문에 각 픽셀에서 나오는 여러 default box중 어떤 박스를 학습시킬 것인지 정해야 한다.
feature map의 각 픽셀마다 k개의 default box가 생성된다고 하면 총 default box는 가로 x 세로 x k개가 있게 된다.
이 모든 default box에 대해 정답 박스와 IoU를 계산하여 가장 큰 IoU값을 가진 정답 박스와 매칭한다.
이때 IoU는 특정 임계값을 넘어야한다.
또 각 정답 박스는 하나 이상의 default box와 매칭되어야 한다.
따라서 임계값을 넘는 default box가 없어 매칭이 되지 않았어도 하나는 강제로 매칭을 하도록 예외 규칙이 있다.
2.1. 손실함수
손실함수는 위치 손실과 분류 손실의 합으로 아래와 같다.
$L(x,c,l,g) = \frac{1}{N}(L_{conf}(x,c) + \alpha L_{loc}(x,l,g))$
$N$은 매칭된 박스 개수이고 $\alpha$는 기본적으로 1인 가중치이다.
만약 $N$이 0이라면 loss는 0으로 처리한다.
위치 손실 $L_{loc}$는 아래처럼 계산한다.
간단히 얘기하면 절대 좌표가 아닌 예측박스와 정답박스 차이를 학습한다.

분류 손실은 아래처럼 계산한다.
여러 클래스에 대한 예측과 실제 값 사이 교차 엔트로피 loss이다.

- $x_{ij}^p$: $i$번째 디폴트 박스가 클래스 $p$인 $j$번째 정답 객체와 매칭되면 1, 아니면 0이다.
- $Pos$: 객체와 매칭된 양성(Positive) 샘플의 집합
- $Neg$: 객체와 매칭되지 않은 음성(Negative, 즉 배경) 샘플의 집합
- $c_i^0$: 배경(Background) 클래스에 대한 예측값
첫번째 항은 물체의 클래스를 잘 맞추도록, 두번째 항은 배경을 잘 찾도록 학습시킨다.
학습할 때 물체에 비해 배경이 매우 많기 때문에, 손실함수 값이 큰(배경인데 물체라고 착각) 놈만 골라서 학습을 한다.
양성 : 음성 비율을 1 : 3정도로 맞춰 학습시킨다.
요약
별도의 영역 제안(Region Proposal) 단계를 완전히 제거하고, 다양한 스케일의 특징 맵에서 컨볼루션 필터를 통해 위치와 클래스를 동시에 예측함으로써 실시간 속도와 높은 정확도를 동시에 달성한 최초의 고성능 1-Stage 객체 탐지 모델을 제시한 논문
핵심 포인트
1. Multi-scale Feature Maps for Detection
- 네트워크 후반부에 해상도가 점진적으로 줄어드는 보조 레이어를 추가하여, 여러 크기의 특징 맵에서 객체를 독립적으로 탐지한다.
2. Convolutional Predictors (Single Shot)
- 무거운 Fully Connected 레이어나 RoI Pooling 과정 없이, 각 특징 맵 위에 $3 \times 3$ 컨볼루션 필터를 직접 적용하여 클래스 점수(Score)와 좌표 오프셋(Offset)을 즉시 계산하는 'Single Shot' 구조를 완성했다.
3. Default Boxes and Aspect Ratios
- Faster R-CNN의 앵커 박스와 유사하게, 각 특징 맵의 셀마다 미리 정의된 서로 다른 비율과 크기의 박스(Default Boxes)를 배치한다. 이를 통해 별도의 영역 제안 단계 없이도 다양한 형태의 객체를 정교하게 포착할 수 있다.
4. Hard Negative Mining
- 배경(Negative) 박스가 객체(Positive)보다 압도적으로 많은 클래스 불균형 문제를 해결하기 위해, 모든 배경을 학습하지 않고 손실이 큰(어려운) 배경 샘플만 골라 양성 샘플과 최대 1:3 비율로 맞춰 학습 효율을 극대화했다.
5. End-to-End Training with Data Augmentation
- 분류(Confidence)와 위치 보정(Localization) 손실을 가중합한 통합 손실 함수를 사용하여 단일 네트워크에서 전체 과정을 최적화한다. 특히 강력한 데이터 증강(Data Augmentation) 전략을 통해 1-Stage 모델의 고질적 약점인 작은 객체 탐지 성능을 획기적으로 끌어올렸다.
'AI > 컴퓨터비전(CV)' 카테고리의 다른 글
| [CV 논문] NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis (0) | 2026.02.11 |
|---|---|
| [CV 논문] You Only Look Once:Unified, Real-Time Object Detection (0) | 2026.02.10 |
| 직접 찍은 이미지 물체탐지 해보기(detectron2 라이브러리, faster R-CNN) (0) | 2026.01.19 |
| [CV 논문] Faster R-CNN: Towards Real-Time Object Detectionwith Region Proposal Networks (1) | 2026.01.12 |
| [CV 논문] Fast R-CNN (0) | 2026.01.10 |