目标检测算法ssd(singleshotmultiboxdetector)(代码片段)

ZSYL ZSYL     2022-12-21     380

关键词:

学习目标

  • 目标
    • 知道SSD的结构
    • 说明Detector & classifier的作用
    • 说明SSD的优点

1. SSD

1.1 简介

SSD算法源于2016年发表的算法论文,论文网址:https://arxiv.org/abs/1512.02325

SSD的特点在于:

  • SSD结合了YOLO中的回归思想和Faster-RCNN中的Anchor机制,使用全图各个位置的多尺度区域进行回归,既保持了YOLO速度快的特性,也保证了窗口预测的跟Faster-RCNN一样比较精准。

  • SSD的核心是在不同尺度的特征特征图上采用卷积核来预测一系列Default Bounding Boxes的类别、坐标偏移。

1.2 结构

以VGG-16为基础,使用VGG的前五个卷积,后面增加从CONV6开始的5个卷积结构,输入图片要求300*300。

1.3 流程

SSD中引入了Defalut Box,实际上与Faster R-CNNanchor box机制类似,就是预设一些目标预选框,不同的是在不同尺度feature map所有特征点上使用PriorBox层

1.4 Detector & classifier

Detector & classifier的三个部分:

  • 1.PriorBox层:生成default boxes,默认候选框

  • 2.Conv3 x 3:生成localization, 4个位置偏移

  • 3.Conv3 x 3:confidence,21个类别置信度(要区分出背景)

1.4.1 PriorBox层-default boxes

default boxex类似于RPN当中的滑动窗口生成的候选框,SSD中也是对特征图中的每一个像素生成若干个框。

  • 特点分析:
    • priorbox:相当于faster rcnn里的anchors,预设一些box,网络根据box,通过分类和回归给出被检测到物体的类别和位置。每个window都会被分类,并回归到一个更准的位置和尺寸上
    • 各个feature map层经过priorBox层生成prior box

根据输入的不同aspect ratio 和 scale 以及 num_prior来返回特定的default box,

  • default box 的数目是feature map的height x width x num_prior。

1、SSD网络prior_box:打印出来的形状为:
Tensor("concat_2:0", shape=(?, 7308, 8), dtype=float32)


2、variance: bounding regression中的权重。网络输出[dxmin,dymin,dxmax,dymax],即对应利用如下方法进行针对prior box的位置回归:
decode_bbox->set_xmin(
     prior_bbox.xmin() + prior_variance[0] * bbox.xmin() * prior_width);
 decode_bbox->set_ymin(
     prior_bbox.ymin() + prior_variance[1] * bbox.ymin() * prior_height);
 decode_bbox->set_xmax(
     prior_bbox.xmax() + prior_variance[2] * bbox.xmax() * prior_width);
 decode_bbox->set_ymax(
     prior_bbox.ymax() + prior_variance[3] * bbox.ymax() * prior_height); 
 
# 其中某一层的结构输出
 layer 
  name: "conv6_2_mbox_priorbox"
  type: "PriorBox"
  bottom: "conv6_2"
  bottom: "data"
  top: "conv6_2_mbox_priorbox"
  prior_box_param 
    min_size: 111.0
    max_size: 162.0
    aspect_ratio: 2.0
    aspect_ratio: 3.0
    flip: true
    clip: false
    variance: 0.10000000149
    variance: 0.10000000149
    variance: 0.20000000298
    variance: 0.20000000298
    step: 32.0
    offset: 0.5

1.4.2 localization与confidence

这两者的意义如下,主要作用用来过滤,训练

模型中打印出最后的三个部分结果:

Tensor("Reshape_42:0", shape=(?, 7308, 4), dtype=float32) Tensor("truediv:0", shape=(?, 7308, 21), dtype=float32) Tensor("concat_2:0", shape=(?, 7308, 8), dtype=float32)

问题:SSD中的多个Detector & classifier有什么作用?

SSD的核心是在不同尺度的特征图上来进行Detector & classifier容易使得SSD观察到更小的物体

2. 训练与测试流程

2.1 train流程

  • 输入->输出->结果与ground truth标记样本回归损失计算->反向传播, 更新权值

1. 样本标记:

先将prior boxground truth box做匹配进行标记正负样本,每次并不训练8732张计算好的default boxes, 先进行置信度筛选,并且训练指定的正样本和负样本, 如下规则

  • 正样本

    • 1.与GT重合最高的boxes, 其输出对应label设为对应物体.
    • 2.物体GT与anchor iou满足大于0.5
  • 负样本:其它的样本标记为负样本

在训练时, default boxes按照正负样本控制positive:negative=1:3

2. 损失

网络输出预测的predict box与ground truth回归变换之间的损失计算, 置信度是采用 Softmax Loss(Faster R-CNN是log loss),位置回归则是采用 Smooth L1 loss (与Faster R-CNN一样)

2.2 test流程

  • 输入->输出->nms->输出

3. 比较

从图中看出SSD算法有较高的准确率和性能,兼顾了速度和精度

4. 总结

  • SSD的结构
  • Detector & classifier的组成部分以及作用
  • SSD的训练样本标记
  • GT与default boxes的格式转换过程

详细解读目标检测经典算法-ssd(代码片段)

学习目标:知道SSD的多尺度特征图的网络知道SSD中先验框的生成方式知道SSD的损失函数的设计目标检测算法主要分为两类:Two-stage方法:如R-CNN系列算法,主要思路就是通过SelectiveSearch或者CNN网络产生一系列的稀... 查看详情

深度学习之目标检测常用算法原理+实践精讲yolo/fasterrcnn/ssd/文本检测/多任务网络

深度学习之目标检测常用算法原理+实践精讲YOLO/FasterRCNN/SSD/文本检测/多任务网络资源获取链接:点击这里第1章课程介绍本章节主要介绍课程的主要内容、核心知识点、课程涉及到的应用案例、深度学习算法设计通用流程、适应... 查看详情

目标检测ssd等onestage算法中关于小目标识别问题的解决方法

...算法包括yolossd等这一系列onestage的方法都不能解决检测时目标较小的问题,经过思考认为问题出在小目标的特征图和大目标不同上。有篇论文解决了这个问题,就是RSSD算法R是彩虹的意思表示将多个特征图相融合来作为分类标准... 查看详情

深度学习之目标检测常用算法原理+实践精讲

...家从整体上了解本门课程的整体脉络。1-1课程导学第2章目标检测算法基础介绍本章节主要介绍目标检测算法的基本概念、传统的目标检测算法、目前深度学习目标检测主流方法(one-stage、two-stage、多任务网络)、相关算法的基... 查看详情

目标检测算法ssd在window环境下gpu配置训练自己的数据集

由于最近想试一下牛掰的目标检测算法SSD。于是乎,自己做了几千张数据(实际只有几百张,利用数据扩充算法比如镜像,噪声,切割,旋转等扩充到了几千张,其实还是很不够)。于是在网上找了相关的介绍,自己处理数据转... 查看详情

目标检测—one-stage检测

   one-stage检测算法,其不需要regionproposal阶段,直接产生物体的类别概率和位置坐标值,经过单次检测即可直接得到最终的检测结果,因此有着更快的检测速度,比较典型的算法如YOLO,SSD,Retina-Net。4、SSD(2016)  SSD结... 查看详情

onestage目标检测

在计算机视觉中,目标检测是一个难题。在大型项目中,首先需要先进行目标检测,得到对应类别和坐标后,才进行之后的各种分析。如人脸识别,通常是首先人脸检测,得到人脸的目标框,再对此目标框进行人脸识别。如果该... 查看详情

目标检测算法总结(代码片段)

转自:https://www.cnblogs.com/guoyaohua/p/8994246.html目标检测是很多计算机视觉任务的基础,不论我们需要实现图像与文字的交互还是需要识别精细类别,它都提供了可靠的信息。本文对目标检测进行了整体回顾,第一部分从RCNN开始介... 查看详情

目标检测网络ssd详解(代码片段)

SSD目标检测网络  使用SSD检测网络一段时间了,研究过代码,也踩过坑,算是有能力来总结下SSD目标检测网络了。1.SSD300_Vgg16  最基础的SSD网络是以Vgg16作为backbone,输入图片尺寸为300x300,这里以其为示例,详细剖析下SSD检测... 查看详情

目标检测算法综述

1.传统的目标检测框架,主要包括三个步骤:(1)利用不同尺寸的滑动窗口框住图中的某一部分作为候选区域;(2)提取候选区域相关的视觉特征。比如人脸检测常用的Harr特征;行人检测和普通目标检测常用的HOG特征等;(3)... 查看详情

转:目标检测算法总结(代码片段)

目标检测是很多计算机视觉任务的基础,不论我们需要实现图像与文字的交互还是需要识别精细类别,它都提供了可靠的信息。本文对目标检测进行了整体回顾,第一部分从RCNN开始介绍基于候选区域的目标检测器,包括FastR-CNN... 查看详情

目标检测算法是啥?

目标检测算法是先通过训练集学习一个分类器,然后在测试图像中以不同scale的窗口滑动扫描整个图像;每次扫描做一下分类,判断一下当前的这个窗口是否为要检测的目标。检测算法的核心是分类,分类的核心一个是用什么特... 查看详情

目标检测方法——ssd

...能好,singlestage方法概括文章的方法介绍SSD主要用来解决目标检测的问题(定位+分类),即输入一张待测图像,输出多个box的位置信息和类别信息测 查看详情

目标检测

传统算法:  1.基于boosting:LBP/HOG/...  2.基于SVM:HOG/SIFT+SVM,DPM基于深度学习的方法:  1.基于region:fasterrcnn  2.基于回归:YOLO/SSD  3.Maskrcnn 查看详情

目标检测yolo系列——yolov1

...er,Faster,StrongerYOLOv3:YOLOv3:AnIncrementalImprovement近几年来,目标检测算法取得了很大的突破。比较流行的算法可以分为两类,一类是基于RegionProposal的R-CNN系算法(R-CNN,FastR-CNN,FasterR-CNN),它们是two-stage的,需要先使用启发式方法... 查看详情

4.基于深度学习的目标检测算法的综述(转)

4.基于深度学习的目标检测算法的综述(转)原文链接:https://www.cnblogs.com/zyly/p/9250195.html目录一相关研究1、选择性搜索(SelectiveSearch)2、OverFeat二、基于区域提名的方法1、R-CNN 2、SPP-Net3、FastR-CNN4、FasterR-CNN5、R-FCN 三端对端的... 查看详情

目标检测算法(r-cnn,fastr-cnn,fasterr-cnn,yolo,ssd,yolov2,yolov3)

...应用到了各个领域,应用场景大体分为三类:物体识别,目标检测,自然语言处理。 目标检测可以理解为是物体识别和物体定位的综合,不仅仅要识别出物体属于哪个分类,更重要的是得到物体在图片中的具体位置。2014年R-... 查看详情

目标检测:yolo和ssd简介

参考技术A作为计算机视觉三大任务(图像分类、目标检测、图像分割)之一,目标检测任务在于从图像中定位并分类感兴趣的物体。传统视觉方案涉及霍夫变换、滑窗、特征提取、边界检测、模板匹配、哈尔特征、DPM、BoW、传... 查看详情