SSD(Single Shot MultiBox Detector)超详细笔记

一、SSD 是什么?

SSD 全称:

  • SSD: Single Shot MultiBox Detector

是经典的:

text 复制代码
One-Stage(单阶段)目标检测算法

核心特点:

text 复制代码
一次前向传播
直接完成:
    分类
    定位

即:

text 复制代码
Single Shot

不需要:

  • Proposal
  • RoI Pooling

因此速度很快。


二、目标检测发展背景

SSD 在检测历史中的位置非常重要。


1. Two-Stage Detector

代表:

  • R-CNN
  • Fast R-CNN
  • Faster R-CNN

流程:

text 复制代码
先生成候选框
→ 再分类

优点:

  • 精度高

缺点:


2. One-Stage Detector

代表:

  • YOLO
  • SSD

流程:

text 复制代码
直接预测所有框

优点:

缺点:

  • 小目标较弱

三、SSD 的核心思想

SSD 本质:

text 复制代码
多尺度 Feature Map
+
Anchor机制
+
Dense Prediction

四、SSD 的整体结构

整体流程:

text 复制代码
输入图片
↓
Backbone提特征
↓
多个Feature Map
↓
每层生成Anchor
↓
卷积预测:
    分类
    回归
↓
NMS
↓
最终结果

五、SSD 的 Backbone


经典 Backbone

原论文使用:

  • VGG16

但:

text 复制代码
去掉FC层

原因:

FC 会:

text 复制代码
丢失空间信息

检测任务需要:

text 复制代码
位置感知

因此 SSD:

text 复制代码
全卷积化

六、Feature Map 多尺度检测

这是 SSD 最大创新之一。


为什么需要多尺度?

目标大小不同:

  • 小目标
  • 大目标

例如:

text 复制代码
远处人脸
近处汽车

尺度差异巨大。


SSD 做法

在不同层上检测。


SSD300 典型 Feature Map

Feature Size
conv4_3 38×38
conv7 19×19
conv8_2 10×10
conv9_2 5×5
conv10_2 3×3
conv11_2 1×1

浅层 vs 深层


浅层

特点:

text 复制代码
分辨率高
细节丰富

适合:

text 复制代码
小目标

深层

特点:

text 复制代码
语义强

适合:

text 复制代码
大目标

七、SSD 没有 FPN

SSD:

text 复制代码
没有真正FPN

只是:

text 复制代码
不同层分别检测

没有:

text 复制代码
跨层融合

FPN 和 SSD 的区别


SSD

text 复制代码
多层单独检测

FPN

text 复制代码
高层语义
+
低层分辨率
融合

因此:

FPN 小目标能力更强。


八、SSD 的 Anchor 机制

这是 SSD 核心。


1. 什么是 Anchor?

Anchor:

text 复制代码
预设框模板

不是直接预测 bbox。

而是:

text 复制代码
在Anchor基础上修正

2. Feature Map 每个点生成多个 Anchor

例如:

text 复制代码
38×38 Feature Map

每个点:

生成:

  • 小框
  • 大框
  • 横向框
  • 纵向框

例如:

text 复制代码
4~6个Anchor

3. Anchor 的中心

Feature Map:

text 复制代码
每个位置

对应:

text 复制代码
原图一个感受野中心

Anchor 中心:

放在这里。


4. Anchor 的尺度

每层定义:

text 复制代码
scale

浅层:

text 复制代码
小Anchor

深层:

text 复制代码
大Anchor

5. Aspect Ratio

SSD 使用:

ratio
1:1
2:1
1:2
3:1
1:3

适应不同目标形状。


九、SSD 的 Dense Prediction

SSD 本质:

text 复制代码
密集预测

即:

text 复制代码
Feature Map每个位置都预测

十、SSD 与 YOLOv1 的区别


YOLOv1


显式 Grid

text 复制代码
7×7

每个 Grid:

直接预测 bbox。


SSD


Feature Map 网格

text 复制代码
隐式Grid

每个位置:

text 复制代码
多个Anchor

预测:

text 复制代码
Anchor修正量

十一、SSD 的预测过程


每个 Anchor 预测:


1. 分类

预测:

text 复制代码
类别概率

例如:

  • dog
  • cat
  • person
  • background

2. 回归

预测:

text 复制代码
dx
dy
dw
dh

即:

  • 中心偏移
  • 宽高缩放

十二、回归本质

SSD:

text 复制代码
不直接预测绝对坐标

而是:

text 复制代码
预测Anchor偏移

编码公式

Anchor:

text 复制代码
(xa, ya, wa, ha)

GT:

text 复制代码
(x, y, w, h)

训练目标:


解码公式

推理时:

恢复真实框。


十三、SSD 的 Head

SSD Head:

本质:

text 复制代码
卷积预测器

通常:

text 复制代码
3×3 Conv

直接输出:

  • 分类
  • 回归

举例

假设:

text 复制代码
38×38

每点:

text 复制代码
4个Anchor

类别:

text 复制代码
21类

分类输出通道

4x21=84

输出:

text 复制代码
38×38×84

回归输出通道

4x4=16

输出:

text 复制代码
38×38×16

十四、SSD 为什么预测框数量巨大?

SSD300:

总 Anchor 数:

text 复制代码
8732

远大于:

  • YOLOv1

的:

text 复制代码
98个框

为什么?

因为:

text 复制代码
Dense Detection

需要:

text 复制代码
高空间覆盖率

十五、正负样本匹配

训练时:

必须知道:

text 复制代码
哪个Anchor负责哪个GT

使用 IoU


正样本

text 复制代码
IoU > 0.5

负样本

text 复制代码
IoU < 0.5

强制匹配

每个 GT:

text 复制代码
至少匹配一个Anchor

即使:

text 复制代码
IoU不够

也强制分配最佳 Anchor。


十六、SSD Loss

总损失:


1. 分类 Loss

通常:

text 复制代码
Cross Entropy

2. 回归 Loss

通常:

text 复制代码
Smooth L1 Loss

比 L2 更稳定。


十七、Hard Negative Mining

SSD 极其重要机制。


为什么需要?

8732 个 Anchor:

绝大多数:

text 复制代码
都是背景

例如:

text 复制代码
8700负样本
30正样本

SSD 做法

只保留:

text 复制代码
最难负样本

保持:

text 复制代码
负 : 正 = 3 : 1

十八、推理流程


1. Forward

输出:

  • 分类
  • 回归

2. Decode

恢复 bbox。


3. Score Filter

删除低分框。


4. NMS

删除重复框。


NMS流程


Step1 排序

按 score。


Step2 取最高分


Step3 删除高IoU框

例如:

text 复制代码
IoU > 0.45

Step4 重复

直到结束。


十九、SSD 的优点


1. 速度快

Single Shot。


2. 结构简单

纯卷积。


3. 多尺度检测

比 YOLOv1 强。


4. Dense Prediction

召回率更高。


二十、SSD 的缺点


1. 小目标仍较弱

因为:

text 复制代码
没有FPN

浅层语义不足。


2. Anchor太多

正负样本严重失衡。


3. Anchor设计复杂

需要:

  • scale
  • ratio

手工设计。


二十一、SSD 的历史意义

SSD 对后续影响巨大。


影响了:

  • RetinaNet
  • YOLOv3
  • EfficientDet

SSD 奠定了:


1. Anchor-based Detection


2. Dense Prediction


3. Multi-scale Detection


4. One-Stage Detector


二十二、现代角度看 SSD

现在:

SSD 已不算 SOTA。

现代更多:

  • YOLOv8
  • RT-DETR
  • RetinaNet

但:

SSD 是:

text 复制代码
理解目标检测原理
最经典的入门算法

因为:

text 复制代码
逻辑完整
结构清晰

非常适合理解:

  • Anchor
  • Dense Prediction
  • 多尺度检测
  • 正负样本匹配
  • 回归机制
  • NMS

这些现代检测核心思想。

相关推荐
ouliten1 小时前
[Triton笔记6]层标准化
笔记
玄米乌龙茶1233 小时前
思维导图笔记:Prompt工程
笔记·prompt
zhangrelay4 小时前
ROS 2 Lyrical Luth启程-Ubuntu26.04-
linux·笔记·学习·ubuntu
菩提树下的凡夫4 小时前
基于Halcon深度图的曲面圆柱凹坑缺陷处理方法
人工智能·计算机视觉·3d
Undergoer_TW4 小时前
SLAM实战避坑笔记:基础矩阵退化场景分析与解决方案
笔记·线性代数·矩阵
锦鲤52144 小时前
机器学习学习笔记
笔记·学习·机器学习
三品吉他手会点灯5 小时前
STM32F103 学习笔记-22-DMA(第1节)-DMA功能框图讲解和DMA初始化结构体讲解
笔记·stm32·单片机·嵌入式硬件·学习
咸甜适中5 小时前
rust语言学习笔记Trait(十一)Deref、DerefMut(解引用)
笔记·学习·rust
sali-tec5 小时前
C# 基于OpenCv的视觉工作流-章78-KRT测量
图像处理·人工智能·数码相机·opencv·算法·计算机视觉
hj2862515 小时前
Linux存储空间管理完整笔记
linux·运维·笔记