SSD的特点:
- 无region proposal过程,在各个feature map上产生固定的default boxes;
- 网络结构端到端,可进行端到端的训练;
网络结构:
- base network: 截断的VGG16;
- 在其后添加6个extra layers(conv layers):conv6, conv7, conv8_2, conv9_2, conv10_2, conv11_2;
检测过程:
- 样本图像输入(input image) ;
- 通过base network,生成特征图F1;
- 由F1依次通过各extra layers生成6个特征图Fv6, Fv7, Fv8_2, Fv9_2, Fv10_2, Fv11_2;
- 加上conv4_3生成的特征图Fv4_3,Fv7, Fv8_2, Fv9_2, Fv10_2, Fv11_2共6个特征图,用于生成检测框;
- 各特征图由相应3*3卷积核(conv11_2特征图分辨率为1*1,应当使用1*1卷积核),基于固定预选框生成对应检测框,卷积核维度为[3, 3, (4/6)*(classes + 4)] (4/6:预选框个数,classes:总类别数,4:{x, y, w, h});
- 根据参与生成检测框的各特征图分辨率,任意类别得到8732个检测框,经过NMS模块处理得到最终的检测结果;
训练过程:
- 损失函数:
损失函数由分类损失函数(confidence loss)和回归损失函数(location loss)加权构成;
分类损失函数为Softmax loss,
代表ith预选框与类别为p的jth标定框的匹配情况{0, 1},针对所有样本计算;
回归损失函数为
损失函数,仅对正样本检测框计算;
- 策略 - 预选框匹配标定框:首先匹配与任一标定框IoU最高的预选框,其次匹配预选框中与标定框IoU高于0.5的,匹配到的框均为正样本;
- Hard negative mining:匹配后会得到少量的正样本预选框和大量的负样本预选框,进行分类任务训练时会严重偏向负样本,因此需要控制负样本数量,通过对样本的分类损失由高到低排序,按顺序选取损失值大的负样本使neg:pos = 3:1;
- 训练过程:base network由ImageNet预训练得到的模型初始化,对于输入的训练样本,通过卷积神经网络获得若干检测框,通过预选框匹配策略与Hard negative mining计算损失函数进行训练。
预选框尺寸及长宽比设置:
- 预选框设置仅存在于Fv4_3,Fv7, Fv8_2, Fv9_2, Fv10_2, Fv11_2共6张特征图;
- 特征图分辨率:由高到低;预选框所覆盖的范围:由小到大(对于固定的像素点预选框是固定的,但对于不同分辨率的特征图,预选框映射回原图的比例是在增大的);
- 比例计算:
= 0.2,
= 0.9,m = 5(除去Fv4_3,Fv4_3对应比例为0.1),长宽比设置:{1, 2, 1/2, 3, 1/3},对于某一特征图,设其比例为
,则预选框基准边长
= width *
(width为图片宽,如:300*300),对于长宽比为2的预选框,长为
,宽为
,对于长宽比为1的预选框,边长同样有两种:
,
;
个人理解,如有错误欢迎指正。