关键词:
SSD:Single Shot MultiBox Detector
学习目标
- 目标
- 知道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-CNN的anchor 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 box与ground 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、传... 查看详情