单发多框检测模型 (Single shot multibox detection, SSD)
单发多框检测模型主要由一个基础网络块和若干个多尺度特征块串联而成。
我们可以设计基础网络,使它输出的高和宽较大。这样一来,基于该特征图生成的锚框数量较多,可以用来检测尺寸较小的目标。
接下来每个多尺度特征块将上一层提供的特征图的高和宽缩小,并使特征图中每个单元在输入图像上的感受野变得更广阔。越靠近顶部的多尺度特征块输出的特征图越小, 基于特征图生成的锚框也越少,加之特征图中每个单元的感受野越大,因此更适合检测尺寸较大的目标。
不使用全连接层作为输出,因为很容易导致模型参数过多。而是使用卷积层的通道来输出类别预测的方法。
边界框预测层的设计与类别预测层的设计类似,唯一不同的是,这里需要为每个锚框预测4个偏移量,而不是q+1个类别。
高和宽减半块使输出特征图中每个单元的感受野变得更广阔。
基础网络块用来从原始图像中抽取特征。
单发多框检测模型一共包含5个模块,每个模块输出的特征图既用来生成锚框,又用来预测这些锚框的类别和偏移量。第一模块为基础网模块,第二至第四模块为高和宽减半块,第五模块使用全局最大池化层将高和宽降到1。
目标检测有两个损失:一是有关锚框类别的损失,可以使用交叉熵损失函数。二是有关正类锚框偏移量的损失,可使用L1范数损失,即预测值与真实值之间差的绝对值。
训练模型
在训练模型时,我们需要在模型的前向计算过程中生成多尺度的锚框,并为每个锚框预测类别和偏移量。之后,根据标签信息为生成的每个锚框标注类别和偏移量。
单发多框检测在训练中根据类别和偏移量的预测和标注值计算损失函数。