1. SSD目标检测算法概述
Single Shot MultiBox Detector(SSD)是2016年由Wei Liu等人提出的一种高效的目标检测算法。与传统的两阶段检测器(如Faster R-CNN)不同,SSD属于单阶段检测器,能够在一次前向传播中同时完成目标定位和分类任务。这种设计使其在保持较高检测精度的同时,具有更快的推理速度,特别适合实时应用场景。
SSD的核心创新点在于多尺度特征图预测机制。算法会在不同层级的特征图上设置不同尺度的默认框(default boxes),这些默认框覆盖了各种可能的物体大小和形状。通过这种方式,SSD能够有效检测图像中不同尺度的目标,而无需像传统方法那样对图像进行多次缩放或区域提议。
提示:SSD中的"Single Shot"指的是单次检测,区别于需要先生成候选区域再进行分类的两阶段方法;"MultiBox"则指代算法同时预测多个边界框的特性。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. SSD网络架构详解
2.1 基础网络结构
SSD采用VGG16作为基础网络(backbone),但对其进行了两处关键修改:
- 将最后的全连接层替换为卷积层,使网络能够处理任意尺寸的输入图像
- 移除了部分池化层并增加了扩张卷积(dilated convolution),以保持较大的感受野同时避免特征图尺寸过小
在基础网络之后,SSD添加了额外的卷积层来提取多尺度特征。这些附加层会逐渐减小特征图的空间尺寸,同时增加通道数,形成金字塔式的特征层级结构。具体来说,典型的SSD300(输入尺寸300×300)架构包含以下特征图层级:
| 特征图层级 | 尺寸 | 默认框尺度 | 每位置默认框数 |
|---|---|---|---|
| conv4_3 | 38×38 | 0.1, 0.2 | 4 |
| conv7 | 19×19 | 0.2, 0.37 | 6 |
| conv8_2 | 10×10 | 0.37, 0.54 | 6 |
| conv9_2 | 5×5 | 0.54, 0.71 | 6 |
| conv10_2 | 3×3 | 0.71, 0.88 | 4 |
| conv11_2 | 1×1 | 0.88, 1.05 | 4 |
2.2 默认框生成机制
默认框(default boxes)是SSD实现多尺度检测的关键。在每个特征图位置上,网络会生成多个具有不同长宽比的锚框。具体实现时,对于尺寸为m×n、通道数为p的特征图,每个位置会生成k个默认框,每个框对应(c+4)个输出值(c个类别分数和4个位置偏移量)。
默认框的尺度和长宽比通过以下公式计算:
- 尺度计算:s_k = s_min + (s_max - s_min)(k-1)/(m-1),其中k∈[1,m]
- 长宽比:a_r ∈ {1
