Prior Box生成
SSD中引入了prior box, 其实和anchor类似,就是一些目标的预选框;后续通过classification loss 和 bounding box regression loss确定真实的目标位置,SSD按照如下规则生成prior box:
- prior box生成由scale和aspect ratio决定,其中每个特征图的尺度计算公式如下:
在论文SSD300网络中,其中的给出的和与公式并不完全匹配,因为论文给第一层conv4_3设置了默认的scale, 为0.1。其余5层满足上述公式计算,其中第二层至第五层scale分别为:0.2, 0.37, 0.54, 0.71, 0.88, 1.05。 - 以feature map上每个点为中心,生成矩形prior box,其中中心点部分偏移(offset=0.5) 。
- SSD提供两个默认的正方形,边长分别为和 , SSD论文中默认的和分别取0.2, 0.9。
- SSD会生成两个长方形,采用的长宽比 aspect ratio
Multi loss function
SSD损失函数包含两部分,一个是分类损失,一个是定位损失, 整个损失函数表示如下:
其中是先验框的正样本数量,是类别置信度预测值,是先验框对应的边界框预测值,是ground truth的位置参数,代表网络的预测值。
对于位置损失,采用 Loss, 位置信息都是后的值;
对于分类损失,首先需要使用 将正负样本按照1:3的比例把负样本抽样出来,抽样的方法是:针对所有batch的confidence,按照置信度误差进行降序排列,取出前top_k个负样本。