SSD检测算法理解

简介

在作者的原论文中提到,SSD算法要比当时优秀的Faster RCNN算法和YOLO算法识别效果更好,识别速度也更快。

在原论文中,作者提到他们团队做的贡献主要有以下几个方面:

  1. 作者除了提出了优秀算法SSD之外,还指出了SSD算法的核心是在特征图上使用小卷积滤波器,预测固定的一组默认边界框的类别得分和位置偏移量。
  2. 为了提高检测精度,他们在不同尺寸的特征图上产生出不同尺度的预测,并且通过不同长宽比来明确地区分预测。
  3. SSD算法的设计实现了简单的端到端的训练,即便输入的是低分辨率的图像,也能够保持识别速度和精度的平衡。
  4. 在PASCAL VOC,MS COCO和ILSVRC上实验并评估分析不同输入大小下模型的耗时和精度,并与一系列最先进的算法进行比较。

Faster RCNN算法可以说是Two-stage算法的优秀之作,准确率较高但是缺点在于模型大而慢;YOLO算法是One-stage算法的开山之作,识别速度快但是效果不太理想。SSD算法可以说是融合了两家的优点,使用了YOLO的模型思想,同时也引入了Faster-RCNN算法的anchor box原理,所以在性能上可以与两个优秀算法一较高下,甚至比上面的算法还要优秀。

以下是SSD算法的一些检测原理以及检测结果:

1 SSD模型

在这里插入图片描述在这里插入图片描述

2 SSD算法的核心设计思想

SSD和YOLO一样都是采用一个CNN网络来进行检测,YOLO使用但尺度的特征图进行预测,但是SSD却采用了多尺度的特征图,得到的是多组类别得分和建议框的回归数据,其基本架构图如下(在原论文中作者使用的是六个尺度):
在这里插入图片描述

3 多尺度特征图检测思想

所谓使用多尺度特征图来预测,实际上就是在不同大小的特征图上预测,CNN网络随着网络深度的增加,一般是前面的卷积层得到的特征图尺度会比较大,随着后面不断使用的stride=2卷积和池化下采样层,会导致后面的卷积网络层得到的特征图尺度比较小。而多尺度预测就是使用从前到后不同大小的特征图来进行预测,这样有一个很大的优点就是大的特征图可以检测小目标,小的特征图可以用来检测大目标。而每一层的检测原理与单尺度特征图的检测思想是一样的。

4 单尺度特征图检测

YOLO最后采用的是全连接层,SSD直接采用卷积对不同的特征图进行提取检测结果,对于形状为mxnxp的特征图,只需要采用3x3xp这样小的卷积核来进行卷积,得到关于类别和anchor的位置检测值。

4.1 先验框的设置

为了更准确的预测物体bounding box,SSD借鉴了faster rcnn中的default box思想。先假设,每一个cell中已经存在多个default box,default box的长宽固定(default box长宽的比例和大小文章中也有专门的设定),default box中心位于每一个cell正中。以下图为例,每一个cell中有四个固定大小的default box。
在这里插入图片描述在预测的时候每个cell都会有4个预测,而每一个预测对应的是一个default box
在这里插入图片描述每一个预测框里面都会有多个数值,而这些数值主要分为两个部分:
第一部分是各个类别的置信度或者评分,值得注意的是SSD将背景也当做了一个特殊的类别,如果检测目标共有C个类别,SSD其实需要预测 C+1个置信度值,其中第一个置信度指的是不含目标或者属于背景的评分。在预测过程中,置信度最高的那个类别就是边界框所属的类别。特别地,当第一个置信度值最高时,表示边界框中并不包含目标。
第二部分就是边界框的location,包含4个值,分别表示边界框的中心坐标以及宽高。但是真实预测值其实只是边界框相对于先验框的转换值。
在这里插入图片描述

4.2 先验框的比例和宽高比

每个特征图的先验框的尺寸可用下式计算:
在这里插入图片描述

其中Smin是0.2,Smax是0.9,意味着最底层是0.2,最高层是0.9,期间所有的层按规律递增,我们为默认的bbox应用了不同的长宽比。通过计算可以得到每个先验框的长度和宽度。
在这里插入图片描述
在这里插入图片描述

对于长宽比为1的,我们也加了一个默认的bbox,尺度为

在这里插入图片描述

特征图的每个位置有6个默认的box,我们设置每个bbox的中心为
在这里插入图片描述其中|Fk|是第k个特征图的尺寸

4.3 Loss计算

训练样本确定了,然后就是损失函数了。损失函数定义为位置误差(locatization loss, loc)与置信度误差(confidence loss, conf)的加权和,对于正例,即default box有GT框的,loss分为类别损失和位置损失。对于反例,即default box没有GT框的,loss只有类别损失(类别是背景)。
Loss是confidence loss和location loss加权之和:
在这里插入图片描述location loss计算如下:
在这里插入图片描述其中,y是预测值,yhat是预测值的label。对于cx,cy,w,h的yhat采用下式计算:
在这里插入图片描述g是ground truth值,d是default box的先验值。可以看出,中心点坐标就是ground truth值与default box先验值得相对差,w和h是ground truth值与default box先验值比值的对数。

confidence loss计算如下:
在这里插入图片描述都是cross entropy loss。

5 性能评估

SSD在VOC2007,VOC2012及COCO数据集上的性能,如表1所示。相比之下,SSD512的性能会更好一些。
在这里插入图片描述
参考:
https://www.cnblogs.com/cecilia-2019/p/11342791.html
https://zhuanlan.zhihu.com/p/59101820
https://zhuanlan.zhihu.com/p/65484308

版权声明:本文为CSDN博主「TODAY'S」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ajkdghfa/article/details/121304379

TODAY'S

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

TensorRTX 推演

前言 在github上下载到yolov5的第5版及其对应的tensorRTX版本,在目标硬件平台进行部署推演。 GitHub上tensorRTX步骤 (1)下载好tensorrtx中yolov5文

【原理篇】一文读懂Mask RCNN

Mask RCNN 何凯明大神的经典论文之一,是一个实例分割算法,正如文中所说,Mask RCNN是一个简单、灵活、通用的框架,该框架主要作用是实例分割,目标检测&#xff0