SSD (Single Shot MultiBox Detector) 是一种非常重要的目标检测模型,与 R-CNN 系列(Fast R-CNN, Faster R-CNN)不同,SSD 属于单阶段 (One-Stage) 检测器。
核心理念:速度与效率
SSD 的设计目标是在保证较高精度的同时,实现极高的推理速度,达到实时检测的要求。它通过一个前向传播直接完成目标检测的所有步骤(分类和定位)。
⚙️ SSD 的两大核心创新
SSD 摒弃了 R-CNN 系列中耗时的区域建议(RPN 或选择性搜索)阶段,将所有工作集成到单个 CNN 网络中。它的速度优势主要归功于以下两点:
1. 多尺度特征图检测 (Multi-scale Feature Maps)
- 问题: 传统的单阶段检测器(如早期的 YOLO)只在一个特征图上进行预测。这对于检测大物体效果很好,但很难检测到小物体。
- SSD 方案: SSD 使用 CNN 主干网络(如 VGG-16 或 ResNet)不同深度的特征图来独立进行预测。
- 浅层特征图(高分辨率): 用于检测小物体。
- 深层特征图(低分辨率): 拥有更大的感受野,用于检测大物体。
- 优势: 这种多尺度的设计显著提高了 SSD 对不同尺寸物体的检测能力,尤其是小物体。
2. 密集预设锚框 (Default Boxes)
- 锚框 (Default Boxes): SSD 延续了锚框(Anchor Box)的思想,在每个多尺度特征图的每个位置上,预设了一系列具有不同尺寸(Scale)和纵横比(Aspect Ratio)的默认框。
- 直接预测: 对于每个默认框,SSD 网络直接预测两个结果:
- 分类分数: 默认框内目标属于各个类别的概率。
- 定位偏移量: 将默认框调整到真实目标框的坐标偏移量。
🆚 SSD 与 Faster R-CNN (两阶段 vs. 单阶段)
| 特性 | SSD (单阶段) | Faster R-CNN (两阶段) |
|---|---|---|
| 步骤 | 一步到位:直接在特征图上预测分类和回归。 | 两步:首先 RPN 生成 RoI,然后检测头进行精细分类和回归。 |
| 速度 | 极快,能轻松满足实时性要求(通常比 Faster R-CNN 快)。 | 快,但受限于两阶段的串行结构,通常略慢于 SSD。 |
| 精度 | 高,但由于没有精细的 RoI Pooling/Align 步骤,通常略低于 Faster R-CNN。 | 最高,因有 RoI Pooling/Align 和两阶段精修,精度更高。 |
| 小物体 | 良好,得益于多尺度特征图的使用。 | 一般,对小目标表现不如 SSD。 |
总结
SSD 通过结合多尺度特征图和密集的默认锚框,成功将目标检测任务压缩到一个单一的前馈网络中,实现了速度和精度之间的出色平衡。它是在工业界和移动设备上追求实时性的常用选择。