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

这些现代检测核心思想。

相关推荐
2501_9269783310 小时前
AGI 的四种瓶颈:资源型还是发现型--以及DSH的位置
人工智能·经验分享·笔记·ai写作
动物园猫11 小时前
猪危险行为目标检测数据集:3类别、5,000+张图像 | 目标检测
人工智能·目标检测·计算机视觉
liuqs33211 小时前
nat123安卓和nat123全端口选型指南,映射工具怎么挑
网络·笔记
xian_wwq11 小时前
【学习笔记】光伏“四可”装置纵密模块--配置方法和原理
笔记·学习
嘶哈哈哈12 小时前
使用 Labelme 标注遥感目标检测数据集:从类别表、矩形框到 group_id 完整流程
人工智能·目标检测·目标跟踪
日拱一卒的小田15 小时前
ZYNQ学习笔记3-ZYNQ的IIC控制器1
笔记·单片机·学习
不会代码的小猴16 小时前
C++新增关键字
开发语言·c++·笔记
LuminousCPP16 小时前
栈和队列专题(一):LeetCode 20. 有效的括号
数据结构·经验分享·笔记·leetcode·手写栈
小赵AI手记18 小时前
技术拆解(十七)具身智能:机器人动作生成为何走向Diffusion Policy?
人工智能·笔记·python·机器人
深蓝海拓19 小时前
基于socket的 TCP上位机通信内容解析程序
网络·笔记·python·学习·tcp/ip·plc