ssd发布于ECCV2016 ,是一个非常经典的one-stage网络。
网络结构
?上图为SSD的网络结构。输入图像,将其缩放到300*300,然后经过特征提取网络VGG16(贯穿到Conv5的第三层)。后续经过一系列的操作得到6个预测特征层。浅层提取的特征用来检测小目标,随着网络的加深语意信息不断增强,深层网络用来预测大的目标。这样就实现了在不同尺度上去匹配对应的目标,后来的YOLO也是这个思想。
Default Box的scale以及aspect设定
对于aspect,conv4_2,conv10_2,conv11_2使用四个default boxes,对于其它的采用6个default boxes。里面的(1,2,.5)分别代表1:1, 2:1, 1:2
?上图所示,标出来的采用4个特征层,其他的采用6个特征层。
对于scale,原文中提到,每一个尺度会加一个以为scale比例为1:1的default boxes,对于第一行,21就是,45就是。可以发现上一行的就是下一行的。所以我们对于一个预测层的default boxes就是21(1,2,.5)+一共四个default boxes。
这样每张图会产生8732个default boxes,会把整个图像给覆盖。
?Predictor的实现
对于我们的高和宽为m*n的维度为p的预测特征层,直接使用卷积核大小为3*3的p个卷积核进行预测。生成概率分数和default box的坐标偏移量。
对于每张图的生成的k个box我们会生成c个类别概率和4个边界框偏移参数所以我们会使用k(c+4)个卷积核。对于m*n的特征图而言就会生成(c+4)kmn输出值。
(c+4)k=c*k + 4*k(其中c*k个类别预测分数,4*k边界框偏移参数)(这里的c包括背景)
正负样本的选取
正样本的选取:1。IOU值最大的? ? ? ? 2。与任意一个GT IOU值大于0.5的
负样本的选取:对剩下的负样本去计算confidence loss(confidence loss越大网络把它看成正样本的概率就越大)选取排在前面的负样本 正负样本的数量之比为1:3
损失的计算
?其中N为匹配到正样本个数,α为1
?
?
?
|