SSD 检测原理

SSD,全称Single Shot MultiBox Detector,是Wei Liu在ECCV 2016上提出的一种目标检测算法,速度比Faster RCNN更快,mAP优于YOLO v1。


SSD方法基于前馈卷积网络,其产生固定大小的边界框集合和框中对象类别的分数,接着是非最大化抑制步骤以产生最终检测。

 

SSD设计理念:

1. 多尺度特征图检测

在基础卷积网络提取CNN特征基础上,添加了若干层卷积,逐步缩小特征图尺度,在多个尺度上进行预测(相比YOLO v1是在一个尺度上进行预测的,SSD输入大小300×300, YOLO输入大小448×448)。

SSD 检测原理_第1张图片

 

2. 用于检测的卷积预测器

在末端的若干个特征图上,使用若干个独立的3×3卷积核卷积,生成检测预测。如果特征图大小是m×n,则使用3*3卷积,在m×n个位置上分别产生位置偏移和类别概率。

 

3. 默认框和高宽比

在2中的m×n个位置上,预测k个不同宽高比的预测框,每个框内预测位置偏移(4个)和类别概率(c个),所以m×n的特征图上一共有m×n×k×(4+c)个输出。

在不同尺度的特征图上应用不同尺度的默认框k,使得SSD可以更有效的离散化可能的输出边框形状空间。

 

 

Prior Box


Prior Box其实跟Faster R-CNN中的anchor非常像,就是特征图上的每个点投影到原始图片上的若干个大小不等的矩形框(预选框)。 anchor的产生机制是在最后一个特征图上,以每个点为中心,映射回原图像,分别取3个面积尺度和3个宽高比共计9个候选框。 

prior Box的产生机制是在末尾的若干个不同尺度的特征图上,以每个点为中心,映射回原图像,取若干个(不同尺度特征图个数不同,4个或6个)长宽比不同的矩形框(候选框)。


候选框中有正方形和长方形之分, 小正方形prior box的边长是min_size,大正方形的边长是min_size*max_size开方;

同时设置一个比率aspect_ratio(如2),长方形的宽高分别是min_size除以aspect_ratio的开方,min_size乘以aspect_ratio的开方。
SSD 检测原理_第2张图片

 

 

min_size和max_size的大小和特征图的位置相关,越靠后的特征图,min_size越大,示例大小如下表:


SSD 检测原理_第3张图片

可见SSD在设计上,有意使用低层feature map检测小目标,使用高层feature map检测大目标。这也是SSD的一个突出贡献。

 

SSD特点总结:

1. 从YOLO v1中继承了将检测问题转化为回归问题的思路,检测步骤一次完成,不再分建议框+预测两步。

2. 受Faster R-CNN中anchor机制的启发,提出了默认框(Prior BOx)机制。

3. 加入基于特征金字塔的检测方式,在不同尺度探测目标。

4. 优点:综合了Faster R-CNN的检测精度和YOLO v1的检测速度。 在不同尺度的特征图上检测目标以及(正样本)数据增广上的优化。

5. 缺点:Prior Box中的min_size,max_size和aspect_ratio(3个与建议框有关的参数)的大小需要手工设定,并且每一层特征图上的大小都不一样,调试麻烦。另外对小目标的检测召回率弱于Faster R-CNN(作者认为是受到使用conv4_3低级的特征图,存在特征提取不充分的影响)。

你可能感兴趣的:(深度学习,Darknet,YOLO)