ssd检测算法总结

      本文主要是对前面所做的小项目使用的人脸检测算法做一个总结。

正文: https://blog.csdn.net/jy001227801/article/details/80388192

            https://blog.csdn.net/wfei101/article/details/78176322

论文翻译:翻译的粗糙供自己备忘:

SSD: Single Shot MultiBox Detector论文

SSD主要特点采用了特征融合

 

摘要:本文提出了一种单深度神经网络。SSD神经网络算法,将包围框的输出空间离散为一组默认框,并根据每个特征图位置的不同长宽比和范围进行调整,在预测期间内,该网络对默认框里出现的每一个类别进行打分,然后进行调整框的位置来更好地匹配物体形状。此外该网络还讲对不同特征图的预测和不同分辨率结合起来更好的处理各种大小的物体。SSD算法相对于其他需要产生对象候选框的方法更简单,因为它完全消除了产生候选框,和像素和特征重采样阶段,同时将所有计算封装在一个网络中。这使得ssd易于训练,并且可以直接集成到需要检测组件的系统中。在pascal voc、coco和ilsvrc数据集的实验结果证实,SSD和那些使用目标候选框步骤的方法相比更有精确性,速度也更快。同时为训练和推理提供一个统一的框架。对一个300×300 的输入图像ssd在VOC2017数据集上和 Nvidia TitanX的GPU上训练达到了74.3% mAP的准确率。对一个512乘512 大小的图,SSD达到了 76.9% mAP的准确率,效果优于现最新的Fatser R-CNN模型。

与其他one-stage的方法相比,SSD对于更小的图像输入有更好的精度。

关键词:实时物体检测   深度神经网络

1  介绍

目前最先进的物体探测体系一般是以下方法的变体:假设不同大小的包围框,对每一个框的像素和特征图进行重采样,引用高质量的分类器。这个方法在目前的检测标准中非常流行。虽然这些方法很准确,但对于嵌入式系统来说,它们在计算上过于密集,即使是高端硬件,对实时应用来说也太慢了。通常这些方法检测的速度是用SPF来衡量的,即使最快的高精度检测器Faster-rcnn也只是7帧每秒的速度,有很多人尝试通过改进上文提到检测的几个步骤来构建更快地检测器,但是目前检测速度的改进一般是以检测精度的大幅度下降为代价的。

本文提出了第一个基于深层网络的目标探测器,没有对假设的包围框进行像素和特征的重采样,但同时有较好的精确度。速度上的提升主要来源于候选包围框的取消和随后的像素和特征重采样阶段的取消。我们的改进包括使用一个小的卷积滤波器来预测包围框位置中的对象类别和偏移量,使用单独的滤波器为不同的长宽比做预测,并将这些滤波器应用于网络的后期阶段,以便在多个尺度上进行检测。而且比最近的残差神经网络效果更好。

我们所做的贡献主要有以方面:

  1. 我们引入了ssd,一种用于多个类别的单射探测器,它比以前用于单射探测器(yolo)等最先进的速度更快,与faster-Rcnn等识别网络相比有相似的准确度,但速度上更快。
  2. ssd的核心是使用应用于特征图的小卷滤波器来预测一组默认包围框的类别分数和框偏移量。
  3. 为了达到较高的检测精度,我们从不同比例的特征图中产生不同比例的预测,并明确地按长宽比分离预测。
  4. 这些设计特点导致了简单的端到端训练和高精度,即使在低分辨率的输入图像,进一步提高速度与准确性的权衡。
  5. 实验包括对pascal voc、coco和ilsvrc不同输入大小的模型进行计时和精度分析,并与一系列最新的先进方法进行比较

 

2   SSD介绍

ssd方法是基于一个前馈的卷积网络,该网络产生一个固定大小的包围框集合,并对这些框中存在的对象类别进行评分,然后利用非极大值抑制方法产生最后的检测结果。前期的网络层基于一些用来进行高质量图片分类的标准结构,我们称之为基础网络。然后我们在其中加入了一些辅助结构来产生检测结果:

  1. 多尺度特征图检测

     在被截断的基础网络之间加入了卷积特征层,这些层逐渐缩小,并允许
多个尺度检测上的预测。预测检测器的卷积模型对于每个特征层是不同的。

  1. 检测器的卷积预测

   每个增加的特征层通过一系列卷积核会产生一系列固定的的预测框图2中的ssd网络结构顶部显示了这些数据,对一个P通道,m乘n大小的特征层。预测潜在检测参数的基本元素是一个3×3×P的小内核,它要么产生一个类别的分数,要么产生相对于默认框坐标的形状偏移。在图片的M乘n 个像素上每个位置应用滤波核,它会产生一个输出值,包围框偏移输出值是相对于默认值来测量的。包围框偏移输出值相对于每个特征映射位置的默认框位置进行测量。

 

  1. 默认框的长宽比

对网络顶部的每一个特征图,我们将特征图的每一个每个像素与一系列的默认的包围框联系起来。默认框以卷积方式绘制特征映射图,以便每个框的位置
相对于其对应的单元格是固定的。(先验框)

 

2.2训练

匹配策略:在训练期间,我们需要确定哪些默认框对应于ground truth检测,并相应地对网络进行训练。对于每个ground truth框,我们选择的默认框中因位置、长宽比和比例不同而不同。我们先将每个ground truth框与先验框匹配,然后使用最佳jaccard(IOU)重叠(如在多框[7]中)。与MultiBox不同的是,我们将默认框与有的ground truth匹配,jaccard重叠高于阈值(0.5)的就成为正样本。这简化了学习问题,允许网络预测多个重叠的默认框的高得分,而不是要求它只选择最大重叠的一个。(即每个先验框与框内多个对象的ground truth的IOU大于0.5)

正负样本的获得

正样本:我们已经在图上画出了prior box,同时也有了ground truth,那么下一步就是将prior box匹配到ground truth上,这是在 src/caffe/utlis/bbox_util.cpp的 FindMatches以及子函数MatchBBox函数里完成的。值得注意的是先是从groudtruth box出发给每个groudtruth box找到了最匹配的prior box放入候选正样本集,然后再从prior box出发为prior box集中寻找与groundtruth box满足IOU>0.5的一个IOU最大的prior box(如果有的话)放入候选正样本集,这样显然就增大了候选正样本集的数量。

负样本:在生成一系列的 prior boxes 之后,会产生很多个符合 ground truth box 的 positive boxes(候选正样本集),但同时,不符合 ground truth boxes 也很多,而且这个 negative boxes(候选负样本集),远多于 positive boxes。这会造成 negative boxes、positive boxes 之间的不均衡,训练时难以收敛。

 

尽管一个ground truth可以与多个先验框匹配,但是ground truth相对先验框还是太少了,所以负样本相对正样本会很多。为了保证正负样本尽量平衡,SSD采用了hard negative mining,就是对负样本进行抽样,抽样时按照置信度误差(预测背景的置信度越小,误差越大)进行降序排列,选取误差的较大的top-k作为训练的负样本,以保证正负样本比例接近1:3。

训练目标

训练样本确定了,然后就是损失函数了。损失函数定义为位置误差(locatization loss, loc)与置信度误差(confidence loss, conf)的加权和:

 

猜你喜欢

转载自blog.csdn.net/woshisunwen/article/details/81783208