SSD

Note

SSD stands for single shot multibox detector,是一个简单、快速且被广泛使用的目标检测模型。

模型

如下图所示,SSD主要由一个基础网络块和若干多尺度特征块串联而成。

基础网络用于从输入图像中提取特征,一般使用深度卷积神经网络,比如说 ResNet。

基础网络输出的高与宽较大,这样基于该特征图生成的锚框数量较多,可用于检测尺寸小的物体,接下来每一个多尺度特征块都会使高宽变小,适用于检测尺寸更大的物体。

image

类别预测层

设目标类别的数量为 \(q\),这样锚框就有 \(q + 1\) 个类别,其中0类是背景。

设特征图的高和宽分别为 \(h\)\(w\),若以每个点为中心生成 \(a\) 个锚框,共 \(hwa\) 个锚框,若使用全连接层作为输出,很容易参数过多。

因此我们使用保持高和宽不变的卷积层,使用卷积层的通道数来输出预测的类别,共 \(a(q + 1)\) 个通道。

边界框预测层

与类别预测层类似,不同的是,这里需要为每个锚框预测4个偏移量,而不是 \(q + 1\) 个类别。

损失函数

目标检测有两种类型的损失,第一种是锚框类别的损失,我们可以使用交叉熵损失函数。

第二种是锚框偏移量的损失,预测偏移量是一个回归问题,我们不使用平方损失而是使用 \(L_{1}\)

最终将两类损失相加,得到最终的损失函数。

评价指标

我们可以沿用准确率评价分类结果。

由于偏移量使用了 \(L_{1}\) 范数损失,我们使用平均绝对误差来评价边界框的预测结果。