目录
SSD算法在目标检测领域的位置:
SSD算法口头概述:
- 输入:300*300*3的图像。
- 骨干网络:VGG 16 再加10个卷积层
- 6个特征图输出:从骨干网中6个不同深度位置抽取feature map,每个位置的feature map会经过两个输出路线,一个路线feature map经过1个卷积层,直接输出4或6个anchor框的坐标回归信息。另一个路线feature map经过1个卷积层,直接输出4或6个anchor框的21个目标类别(20类+背景类)的置信度。
- 最终输出:将6个尺度的output结果统一送入NMS中,得到唯一预测框。
优缺点
- 优点:相对同年代的YOLO1,使用多尺度特征进行目标检测,极大提高精度。
- 缺点:SSD的缺点是对小尺寸的目标识别仍比较差,还达不到Faster R-CNN的水准。这主要是因为小尺寸的目标多用较低层级的anchor来训练(因为小尺寸目标在较低层级IOU较大),较低层级的特征非线性程度不够,无法训练到足够的精确度。
网络结构图
正负样本选择:
- anchor预测框与GT框IOU>0.5,视为候选正样本,其他均为候选负样本(数量极为庞大)。
- SSD中候选正样本和候选负样本转正的条件,以及如何确保1:3正负样本比例:
- 举例:假设在这 8732 个 default box 里,经过 FindMatches 后得到候选正样本 P 个,候选负样本那就有 8732−P个。将 prior box(预测框) 的 prediction loss (类别损失值)按照从大到小顺序排列后选择最高的 M个 prior box。如果这 P 个候选正样本里有 a 个不在这 M 个 prior box 里(说明这a个预测框损失小,与GT框很接近,不需要再让网络去学习了),将这 a个 box 从候选正样本集中踢出去。如果这 8732−P个候选负样本集中有 b个在这 M 个 prior box(说明这b个预测框损失大,与GT框差距大,属于困难的负样本),则将这b个候选负样本作为正式负样本。即删除易识别的正样本,同时留下典型的负样本,组成1:3的prior boxes样本集合。
损失函数:
其他细节:
- https://zhuanlan.zhihu.com/p/39399799
- SSD中,为什么只有conv4_3层做归一化?
- 损失函数计算中,variance参数有什么作用?