目标检测-SSD(Single Shot MultiBox Detector)

SSD : Single Shot MultiBox Detector

论文地址:https://arxiv.org/abs/1512.02325

网络结构

目标检测-SSD(Single Shot MultiBox Detector)
与faster rcnn相比,该算法没有生成 proposal 的过程,这就极大提高了检测速度。针对不同大小的目标检测,传统的做法是先将图像转换成不同大小(图像金字塔),然后分别检测,最后将结果综合起来(NMS)。

而SSD算法则利用不同卷积层的 feature map 进行综合也能达到同样的效果。算法的主网络结构是VGG16,将最后两个全连接层改成卷积层,并随后增加了4个卷积层来构造网络结构。

采用VGG16做基础模型,首先VGG16是在ILSVRC CLS-LOC数据集预训练。然后借鉴了DeepLab-LargeFOV,分别将VGG16的全连接层fc6和fc7转换成3×33×3卷积层conv6和1×11×1卷积层conv7,同时将池化层pool5由原来的2×2−s22×2−s2变成3×3−s13×3−s1,为了配合这种变化,采用了一种Atrous Algorithm,其实就是conv6采用扩展卷积或带孔卷积(Dilation Conv),其在不增加参数与模型复杂度的条件下指数级扩大卷积的视野,其使用扩张率(dilation rate)参数,来表示扩张的大小

对其中5种不同的卷积层的输出(feature map)分别用两个不同的 3×3的卷积核进行卷积,一个输出分类用的confidence,每个default box 生成c个类别confidence;一个输出回归用的 localization,每个 default box生成4个坐标值(x, y, w, h)。

最后每个feature layer的卷积核数量为 (c+4)* k个,k是这个层每个点default box数量。预测值为m* n* (c+4)* k 个。上述5个feature map中每一层的default box的数量是给定的(8732个)。最后将前面三个计算结果分别合并然后传给loss层。
参考 https://blog.csdn.net/xiaohu2022/article/details/79833786

损失函数

损失函数也分为分类损失和回归损失,分类损失是softmax回归损失,分类损失用smooth L1。
α=1。 Let xpij = {1, 0} be an
indicator for matching the i-th default box to the j-th ground truth box of category p.
目标检测-SSD(Single Shot MultiBox Detector)
目标检测-SSD(Single Shot MultiBox Detector)
目标检测-SSD(Single Shot MultiBox Detector)

default box

每个feature map生成的prior box数量是不一样的。prior box是指实际中选择的default box(每一个feature map cell 不是k个default box都取)。也就是说default box是一种概念,prior box则是实际的选取。
目标检测-SSD(Single Shot MultiBox Detector)
上图可以看出有的每个点生成6个,有的是4个。总计为:(38384 + 19196 + 10106 + 556 + 334 + 114)= 8732个prior box。
这些box的w和h由不同的scale(尺寸),aspect ratio生成。
where smin is 0.2 and smax is 0.9, meaning the lowest layer has a scale of 0.2 and the highest layer has a scale of 0.9, and all layers in between are regularly spaced
目标检测-SSD(Single Shot MultiBox Detector)
αr ∈{1, 2, 3,1/2,1/3},结合α和s
目标检测-SSD(Single Shot MultiBox Detector)

ssd与faster rcnn和yolo的比较

proposal选择:

SSD:在卷积后的feature map上生成m* n* k个 default box

Faster RCNN:RPN网络对卷积后的feature map选择anchor,每个点9个anchor个

YOLO:将图片划分成SxS个区域。 如果一个对象的中心落在某个单元格上,那么这个单元格负责预测这个物体。每个单元格需要预测B个边界框(bbox)值(bbox值包括坐标和宽高),同时为每个bbox值预测一个置信度(confidence scores)。例如,在 PASCAL VOC 中,图像输入为 448x448,取 S=7,B=2,一共有20 个类别(C=20),则输出就是 7x7x30 的一个向量。

YOLOv3:选用的b-box priors 的k=9,对于tiny-yolo的话,k=6。priors都是在数据集上聚类得来的,有确定的数值,如下:

10,13,  16,30,  33,23,  30,61,  62,45,  59,119,  116,90,  156,198, 373,326

Loss

Faster RCNN:分类是softmax损失, 回归是smoothL1。
https://blog.csdn.net/wfei101/article/details/79809332
目标检测-SSD(Single Shot MultiBox Detector)
YOLO:全是线性损失函数
目标检测-SSD(Single Shot MultiBox Detector)
YOLOv3:好像是均方误差+二元交叉熵
SSD:上面有,softmax+smoothL1

上一篇:单例模式


下一篇:单例模式