动手学深度学习——SSD

1. 前言

在前面的学习中,我们已经依次了解了:

  • 什么是物体检测

  • 边界框如何表示目标位置

  • 锚框的基本思想

  • 多尺度锚框为什么重要

  • 经典检测算法 R-CNN、SSD、YOLO 的总体区别

其中,SSD 是目标检测里非常经典的单阶段检测算法。

它的重要意义在于:

把多尺度特征图、锚框、类别预测和边界框回归整合到了一个统一的检测框架中。

如果说前面的内容是在搭积木,那么这一节就是把这些积木真正拼成一个完整的检测模型。


2. 什么是 SSD

SSD 的全称是:

Single Shot MultiBox Detector

从名字中可以拆出两个关键信息:

2.1 Single Shot

"Single Shot" 表示:

检测过程只需要一次前向传播,就能同时完成目标分类和位置预测。

也就是说,它不像 R-CNN 那样先生成候选区域,再逐个处理,而是一步到位完成检测。


2.2 MultiBox

"MultiBox" 表示:

在多个位置、多个尺度上生成一系列锚框,并对这些锚框进行预测。

所以 SSD 的本质可以概括为:

在不同尺度的特征图上,对大量锚框同时进行类别预测和边界框回归。


3. SSD 的核心思想

SSD 的核心思想并不复杂,可以分成三句话理解:

第一句:使用卷积神经网络提取图像特征

输入图像后,先通过主干网络提取特征。


第二句:在多个尺度的特征图上生成锚框

不同层的特征图大小不同:

  • 分辨率大的层负责小目标

  • 分辨率小的层负责大目标


第三句:对每个锚框同时预测类别和偏移量

也就是:

  • 这个锚框里是什么类别

  • 这个锚框应该如何调整,才能更接近真实框

这样,SSD 就把检测任务统一成了一个端到端的卷积预测问题。


4. 为什么 SSD 是单阶段检测器

SSD 被称为单阶段检测器(One-Stage Detector),原因在于:

它不显式地区分"候选区域生成"和"候选区域分类"这两个阶段,而是直接对预设锚框做预测。

这和 R-CNN 系列很不一样。

R-CNN 的思路

  • 先找候选区域

  • 再对候选区域提取特征并分类

SSD 的思路

  • 直接在特征图每个位置生成锚框

  • 同时做分类和位置回归

所以 SSD 结构更统一,速度通常也更快。


5. SSD 的整体结构

李沐这里讲 SSD,核心就是让你理解它的模块化结构。

通常可以把 SSD 拆成以下几个部分:

5.1 主干网络

主干网络负责从输入图像中提取特征。

例如教学实现里,往往不会直接上特别复杂的大网络,而是用一个相对简化的卷积网络结构来演示 SSD 的思想。


5.2 多尺度特征块

SSD 不只使用最后一层特征图,而是会继续往后接多个卷积块,形成一组尺寸越来越小的特征图。

例如可以得到:

  • 较大的特征图

  • 中等大小特征图

  • 更小的特征图

  • 最后接近全局的特征图

这些特征图共同负责不同尺度目标的检测。


5.3 锚框生成模块

在每个尺度的特征图上,都要根据预设的 sizesratios 生成锚框。

这一步本质上就是前面学过的 multibox_prior


5.4 类别预测模块

对于每个锚框,预测它属于哪个类别,或者属于背景。


5.5 边界框预测模块

对于每个锚框,预测它相对于锚框本身的偏移量,也就是:

  • 中心点如何移动

  • 宽高如何缩放

这样就能把锚框修正成更贴近真实目标的预测框。


6. SSD 为什么要用多尺度特征图

这一点是 SSD 的灵魂。

现实图像中的目标大小差别很大,如果只在某一层特征图上做检测,会有明显问题:

  • 对小目标不够敏感

  • 对大目标定位不够自然

因此 SSD 采取的策略是:

在不同尺度的特征图上,分别负责不同尺度目标。

也就是:

  • 较大特征图检测小目标

  • 较小特征图检测大目标

这正是前一节"多尺度锚框"的直接应用。


7. SSD 的预测过程

SSD 的预测过程可以理解为:

第一步:输入图像

图像进入神经网络。

第二步:得到多个尺度的特征图

随着网络加深,特征图尺寸逐渐减小。

第三步:在每个特征图位置生成锚框

每个位置生成若干不同形状的锚框。

第四步:对每个锚框做两类预测

一类是类别预测 ,一类是边界框偏移预测

第五步:合并所有尺度上的预测结果

把所有特征图上的锚框预测汇总起来。

第六步:后处理

通常会用非极大值抑制等方法,去掉重复预测框,得到最终结果。


8. 类别预测和边界框预测分别在做什么

这部分一定要讲清楚,因为这是 SSD 的输出核心。

8.1 类别预测

对于每个锚框,模型都要回答:

这个锚框中包含什么目标?

可能输出:

  • 背景

  • 汽车

  • 行人

所以类别预测本质上是一个分类问题。


8.2 边界框预测

锚框本身只是预设候选框,不会和真实目标完全重合。

因此模型还要预测:

这个锚框应该如何平移、缩放,才能更贴近真实框?

所以边界框预测本质上是一个回归问题。


8.3 两者共同完成检测

最终一个检测框之所以成立,是因为它同时具备:

  • 类别信息

  • 位置修正信息

这两部分缺一不可。


9. 李沐代码里 SSD 的结构思路

在《动手学深度学习》的实现中,SSD 往往不是直接写成一个大而复杂的工业版模型,而是拆成几个更容易理解的模块。

典型思路包括:

9.1 为每个尺度构造特征块

每个块负责输出一个新的特征图。


9.2 为每个块定义类别预测层

例如用卷积层直接输出类别分数。


9.3 为每个块定义边界框预测层

同样用卷积层输出每个锚框的偏移量。


9.4 对多个尺度结果进行拼接

把所有层上的:

  • anchors

  • class_preds

  • bbox_preds

拼接在一起,形成最终输出。


10. 为什么 SSD 适合用卷积层直接预测

SSD 的设计非常符合卷积神经网络的特点。

因为卷积层本来就是在空间位置上共享参数地做局部计算。

而目标检测里,我们恰好也需要在不同位置上预测目标。

所以 SSD 采用卷积层直接输出:

  • 每个位置多个锚框的类别分数

  • 每个位置多个锚框的边界框偏移

这让整个模型结构很自然,也很高效。


11. SSD 和 YOLO、R-CNN 的区别

这一节里,最好顺带再帮读者把它们区分清楚。

11.1 和 R-CNN 相比

SSD 不需要先生成候选区域再逐个处理,

它直接在特征图上对锚框做密集预测。

所以 SSD:

  • 更快

  • 更统一

  • 更适合实时应用

但在某些精细场景下,早期两阶段方法精度可能更高。


11.2 和 YOLO 相比

SSD 和 YOLO 都属于单阶段检测器,

都强调速度和端到端预测。

但 SSD 更强调:

  • 多尺度特征图

  • 锚框机制

  • 不同层负责不同尺度目标

因此在教学中,SSD 特别适合作为"锚框检测思想"的代表模型来讲。


12. SSD 的优点

SSD 经典,是因为它有几个很明显的优点。

12.1 速度快

作为单阶段检测器,SSD 比早期 R-CNN 系列快很多。

12.2 结构统一

分类和回归都在统一的卷积框架下完成。

12.3 多尺度检测能力强

通过不同尺度特征图检测不同大小目标。

12.4 教学价值高

它把锚框、多尺度、卷积预测自然地整合起来,非常适合入门目标检测。


13. SSD 的局限

当然,SSD 也不是完美的。

13.1 小目标检测仍然有难度

尽管用了多尺度特征图,但对非常小的目标,早期 SSD 仍然可能表现一般。

13.2 锚框设计依赖经验

锚框的尺度、宽高比设置会直接影响检测效果。

13.3 正负样本不平衡问题明显

检测中负样本锚框通常远多于正样本锚框,这会影响训练。

不过这些问题也正是后续很多改进方法努力解决的方向。


14. SSD 可以怎样理解成"前面内容的总装配"

如果从学习路径回头看,你会发现 SSD 正好把前面几节都串起来了。

前面学的边界框

告诉我们目标位置如何表示。

前面学的锚框

告诉我们如何为检测提供候选框。

前面学的多尺度锚框

告诉我们不同大小目标该交给不同尺度特征图处理。

这一节的 SSD

把这些元素整合进一个完整检测网络中。

所以 SSD 这一节,本质上就是一次"系统总装"。


15. 本节总结

这一节我们学习了 SSD,核心内容可以概括为以下几点。

15.1 SSD 是经典单阶段检测器

它通过一次前向传播同时完成类别预测和边界框预测。

15.2 SSD 的核心是多尺度特征图 + 锚框

在不同尺度特征图上生成锚框,分别检测不同尺度目标。

15.3 每个锚框都有两类输出

  • 类别预测

  • 边界框偏移预测

15.4 SSD 是前面检测知识的综合应用

边界框、锚框、多尺度检测在 SSD 中真正形成了完整体系。


16. 学习感悟

SSD 这一节非常适合建立"检测系统观"。

因为到了这里,我们已经不再是零散地学某个概念,而是在看一个完整模型如何组织这些概念:

  • 用卷积网络提取特征

  • 用多尺度特征图分工处理目标

  • 用锚框提供候选框基础

  • 用分类和回归共同完成检测输出

所以 SSD 的意义不仅在于"它是一个算法",更在于它把目标检测这件事讲得非常有结构。

相关推荐
tinochen2 小时前
我用 OpenClaw 搭了一套全自动 AI 行业简报系统,每天零干预推送到飞书
人工智能
何陋轩2 小时前
OpenAI Codex深度解析:终端里的AI代码特工,一个指令重构整个项目
人工智能·面试
jarvisuni2 小时前
三大编程智能体的RULES和SKILLS规范!
人工智能·ai编程
Kel2 小时前
PydanticAI 源码深潜:类型安全依赖注入与图执行引擎的双核架构解析
人工智能·python·架构
后端开发基础免费分享2 小时前
Claude Code 最全使用指南:CLAUDE.md、rules、skills、memory 一次讲清
人工智能·ai·claude·claudecode
亿坊电商2 小时前
亿坊外贸商城系统-支持B2C,B2B多模式,让企业做外贸电商更简单!
人工智能·数据挖掘·外贸商城
小王毕业啦2 小时前
2006-2023年 省级-建成区绿化覆盖率数据(xlsx)
大数据·人工智能·数据挖掘·数据分析·社科数据·实证分析·经管数据
十有八七2 小时前
OpenHarness 架构说明文档
人工智能·架构
Bruce1232 小时前
openclaw学习日常(一)openclaw在WSL中搭建
人工智能·node.js