天天看点

【目标检测】SSD算法学习

SSD的特点:

- 无region proposal过程,在各个feature map上产生固定的default boxes;

- 网络结构端到端,可进行端到端的训练;

网络结构:

【目标检测】SSD算法学习

- 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模块处理得到最终的检测结果;

训练过程:

- 损失函数:

【目标检测】SSD算法学习

    损失函数由分类损失函数(confidence loss)和回归损失函数(location loss)加权构成;

【目标检测】SSD算法学习

    分类损失函数为Softmax loss,

【目标检测】SSD算法学习

代表ith预选框与类别为p的jth标定框的匹配情况{0, 1},针对所有样本计算;

【目标检测】SSD算法学习

     回归损失函数为

【目标检测】SSD算法学习

损失函数,仅对正样本检测框计算;

- 策略 - 预选框匹配标定框:首先匹配与任一标定框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张特征图;

- 特征图分辨率:由高到低;预选框所覆盖的范围:由小到大(对于固定的像素点预选框是固定的,但对于不同分辨率的特征图,预选框映射回原图的比例是在增大的);

- 比例计算:

【目标检测】SSD算法学习
【目标检测】SSD算法学习

 = 0.2,

【目标检测】SSD算法学习

 = 0.9,m = 5(除去Fv4_3,Fv4_3对应比例为0.1),长宽比设置:{1, 2, 1/2, 3, 1/3},对于某一特征图,设其比例为

【目标检测】SSD算法学习

,则预选框基准边长

【目标检测】SSD算法学习

 = width *

【目标检测】SSD算法学习

(width为图片宽,如:300*300),对于长宽比为2的预选框,长为

【目标检测】SSD算法学习

,宽为

【目标检测】SSD算法学习

,对于长宽比为1的预选框,边长同样有两种:

【目标检测】SSD算法学习

【目标检测】SSD算法学习

个人理解,如有错误欢迎指正。

继续阅读