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

1. SSD目标检测概述

1.1 SSD的套路

SSD全称Single Shot MultiBox Detector,是大神Liu Wei在2015年发表的惊世之作(至少笔者这么认为,也是为什么先讨论SSD的原因)。 SSD提供300*300和512*512两个尺度的检测。与前辈Faster R-CNN一样,都是采用了Region Proposal的路线,不同点在于对预选框(Prior Box)选取策略和多尺度上。

       SSD目标检测算法先是在固定的六个中间层(Feature Map)上选取预选框(Prior Box或Anchors),然后在训练过程中,通过Prior Box与Ground True的IOU来确定正例和负例,最后经过Smooth L1 Loss的定位损失和交叉熵的置信损失的组合来激励反向优化。其中边框回归(Bounding Regression)用于调整边框以获得精确地目标定位。

1.2 SSD的优点和缺点

多尺度,目标检测尺寸跨度大;

采用不同宽高比例构建Prior Box,对于形态轮廓多变的目标具有良好的精确度;

占比更小的目标具有更好的检测效果(相比Faster-rcnn);

单次检测多目标,比以前的算法YOLO更准更快,并没有使用RPN和Pooling操作;

2 SSD目标检测基本原理

2.1 SSD的设计理念

SSD的设计理念也是很明朗,初始阶段是一个经典的VGG16网络,FC6和FC7用卷积来替代。然后添加多个卷积-池化-ReLU组。通过选取其中6个卷积层作为类别和定位计算层。这留个卷积层分别是Conv4_3、Conv7、Conv8_2、Conv9_2、Conv10_2、Conv11_2,这六个卷积层的分辨率分别是38*38,19*19, 10*10, 5*5, 3*3, 1*1。通过在这六个卷积层上创建prior box,记录每个prior box相应匹配的grouth truth的坐标信息,计算prior box与ground truth的IOU作为得分,选取大于阈值(通常选0.5)的prior box作为正例,选择3倍于正例数量的反例。计算正例与反例相结合的交叉熵信息作为分类置信损失,通过正例记录坐标与预测坐标的L1平滑计算定位损失,分类置信损失与定位损失的和(分别乘以不同属性的权值)作为总的损失。

2.2 SSD的网络结构

引用一幅经典的结构图。

python实现SSD目标检测_python实现SSD目标检测

由图中可以看出,SSD在网络的起始阶段采用VGG16进行特征的提取,同时将VGG16的FC6和FC7用卷积层替代。除此之外,还去掉所有的Dropout层和FC8层,添加了Atrous算法(hole算法),将Pool5从2x2-S2变换到3x3-S1。

抽取Conv4_3、Conv7、Conv8_2、Conv9_2、Conv10_2、Conv11_2层的feature map,然后分别在这些feature map层上面的每一个点构造4-6个不同尺度大小的Prior Box,然后分别进行检测和分类。最后通过NMS来抑制重叠,去除伪目标框。

2.3 Prior box

Prior Box类似于Fast Rcnn的anchors,是事先选取的锚点(推荐点)。在上述六个卷集层上,对应于feature map的每一个cell,设计对应于原图(300*300)不同长款的区域,作为用于计算Loss的区域。同样引用一张图来说明:

python实现SSD目标检测_目标检测_02

(该图引自于CSDN 大写的ZDQ《最详细的目标检测SSD算法讲解》一文)

先不关心b图和c图中的框的颜色,b和c图中,每个框的基准来自于对应于feature map中的每一个cell,针对不同的长和宽,来计算对应于原图的区域。

再来说蓝色框和红色框,蓝色框对应于a图中的CAT,红色框对应于a图中的DOG,因为IOU都大于阈值(一般为0.5)所以标记为正例。

2.4 Feature Map和多尺度

如图所示,SSD的多尺度体现在利用六个不同分辨率的卷集层作为Feature Map,来计算损失。越靠前的卷集层,能够检测更小的区域,对应于更小的目标,反之,越靠后的Feature Map越能检测较大的目标。

Conv4_3的每个Cell对应于原图的8*8的一个区域,Conv11_2则对应于原图300*300的全区域。

python实现SSD目标检测_正例_03

续:我们将在SSD目标检测(Single Shot MultiBox Detector)(二)中探讨SSD的两个关键点:三个生成网络和LOSS计算。

3. SSD目标检测的几个关键点

3.1 三个生成网络

3.2 定位损失和置信损失