前言:

SSD是经典的一阶目标检测网络框架,特点是速度快,网络简洁。

主要思想:

(1)数据增强,包括光学变换和几何变换

(2)网络骨架,SSD在VGG基础上延伸了4个卷积模块(生成不同尺度的特征图)

(3)PriorBox与多层特征图:在不同尺度设置预选框,分别检测不同大小物体

(4)正、 负样本的选取与损失计算:按比例选取正负样本

流程图:

以下两个版本更好理解

一、数据增强 

数据增强流程如上图所示,通过光学变换和几何变换进行数据增强,分别调整光学特性和几何特性,该部分较好理解不做介绍。

二、网络骨架

(1)基础VGG结构

SSD不使用原始的VGG网络,因为全连接层参数太多故换为卷积。输入图像经过预处理后大小固定为300×300, 首先经过VGG16网络的前13个卷积层, 然后利用两个卷积Conv 6与Conv 7取代了原来的全连接网络。该部分最终输出的网络是1024通道的数据。

(2)深度卷积层

在SSD的VGG网络后面,紧接的是深度卷积层conv8-11每步都分两步卷积,第一步是1x1卷积,通道数分别为上一步输出数据的通道数,卷积核数目分别为256,128,128,128,第二步是3x3卷积,通道数为对应环节1x1卷积的卷积核数目,3x3卷积核数目分别为512,256,256,256个。

三、PriorBox与多层特征图

不同于faster-rcnn,SSD先验框的选择从特征图入手,特征图上的每个点对应原图上4个或6个不同大小的PriorBox。而且在不同尺度的特征图上都会生成PriorBox。

         由图5.8可看出,每个特征图得到的priorbox的数目不定,所有加起来有8732个。经过分类与位置卷积,最终得出上图回归卷积、分类卷积,至此SSD框架已接近结束,回归卷积输出的是各个prior box的偏移量预测,分类卷积输出的是各个prior box的类别预测,分类卷积具体维度与分类种类有关。

在这之后经过维度转换SSD300网络输出的是维度为[1,8732,4]和[1,8732,num_class]的特征图。

四、正、 负样本的选取与损失计算

该部分分为4步:

(1)按照规则对priorbox赋予正负样本标签,确定对应真实物体标签

(2)计算框的定位损失,只需正样本

(3)进行难样本挖掘,筛选出数量是正样本3倍的负样本

(4)计算筛选出的正负样本的类别损失

以下是各部分具体内容:

(1)按照规则对priorbox赋予正负样本标签,确定对应真实物体标签

求到8732个priorbox及类别预测、位置预测之后,首先要筛选出正负样本,以便于后期进行损失计算。

遵循原则:

1.IOU阈值设置为0.5,以此判断正负样本

2.priorbox位置标签选择,选与其最大IOU的真实框作为位置标签

3.不太好理解,与这一个真实框有最大IoU的PriorBox, 即使该IOU不是该priorbox与所有真实框的最大iou,也将该priorbox对应到该真实框,为了保证真实框的recall

4.预测边框位置,一样预测的是相对于预选框的偏移量,同fasterrcnn

(2)计算框的定位损失,只需正样本

计算方法同fasterrcnn,使用smoothL10函数作为定位损失函数, 并且只对正样本计算

(3)进行难样本挖掘,筛选出数量是正样本3倍的负样本

根据比例限制实现样本均衡,针对负样本,计算出所有的负样本的损失(分类损失)之后,选取损失大的部分进行计算,舍弃其他的负样本,负样本数目是正样本数目的3倍。

这里笔者当时不清楚的是负样本具体计算的什么损失,原理是什么,百度查后得出结论,此处使用的是softmax loss,也就是从分类卷积中得到的那些是各个框属于什么类别的概率,再使用一个公式来计算这个框预测的这个概率的损失是多少,比如这个概率应该是1,即为真实标签,但预测的概率是0.6,虽然是对的但有一定误差,概率是0.6时比概率是0.3时误差小。具体解释见下图。

(4)计算筛选出的正负样本的类别损失

在得到筛选后的正、 负样本后, 即可进行类别的损失计算。 SSD在此使用了交叉熵损失函数, 并且正、 负样本全部参与计算。

SSD目标检测流程深入理解相关推荐

  1. [RCNN]-[YOLO]-[SSD]目标检测算法

    原文链接:http ://chuansong.me/n/353443351445 转载自深度学习大讲堂公众号    开始本文内容之前,我们先来看一下上边左侧的这张图,从图中你看到了什么物体?他们在什么 ...

  2. 基于Grad-CAM与KL损失的SSD目标检测算法

    基于Grad-CAM与KL损失的SSD目标检测算法 人工智能技术与咨询 来源:<电子学报>,作者侯庆山等 摘 要: 鉴于Single Shot Multibox Detector (SSD ...

  3. SSD目标检测的个人总结(1)—— 锚框的生成

    SSD目标检测的个人总结(1)-- 锚框的生成 前言 锚框 锚框的生成 锚框的绘制 前言 沐神的代码看了很久.B站上的视频也刷了很多遍,感叹下自己的基础确实不怎么扎实,锚框部分的底层代码几乎是一行行撸 ...

  4. 【目标检测】SSD目标检测

    导语 PaddlePaddle提供了丰富的运算单元,帮助大家以模块化的方式构建起千变万化的深度学习模型来解决不同的应用问题.这里,我们针对常见的机器学习任务,提供了不同的神经网络模型供大家学习和使用. ...

  5. 华为开源自研AI框架昇思MindSpore应用案例:SSD目标检测

    目录 一.环境准备 1.进入ModelArts官网 2.使用CodeLab体验Notebook实例 二.环境准备 三.数据准备与处理 数据采样 数据集创建 四.模型构建 五.损失函数 六.Metric ...

  6. Pytorch搭建SSD目标检测平台

    学习前言 什么是SSD目标检测算法 源码下载 SSD实现思路 一.预测部分 1.主干网络介绍 2.从特征获取预测结果 3.预测结果的解码 4.在原图上进行绘制 二.训练部分 1.真实框的处理 2.利用 ...

  7. 目标检测基本概念理解之IoU(交并比)以及Python代码实现

    目标检测基本概念理解之IoU(交并比) 交并比理解 Python代码实现 计算IoU,矩形框的坐标形式为xyxy 计算IoU,矩形框的坐标形式为xywh 交并比理解 在检测任务中,使用交并比(Inte ...

  8. 睿智的目标检测23——Pytorch搭建SSD目标检测平台

    睿智的目标检测23--Pytorch搭建SSD目标检测平台 学习前言 什么是SSD目标检测算法 源码下载 SSD实现思路 一.预测部分 1.主干网络介绍 2.从特征获取预测结果 3.预测结果的解码 4 ...

  9. 基于神经网络的目标检测论文之目标检测方法:改进的SSD目标检测算法

    4.2 改进的SSD 上一章我们了解到,物体识别检测算法是在传统CNN算法基础上加上目标区域建议策略和边框回归算法得到的.前辈们的工作主要体现在目标区域建议的改进策略上,从最开始的穷举建议框,到划分图 ...

  10. python ssd目标检测_目标检测算法之SSD的数据增强策略

    前言 这篇文章是对前面<目标检测算法之SSD代码解析>,推文地址如下:点这里的补充.主要介绍SSD的数据增强策略,把这篇文章和代码解析的文章放在一起学最好不过啦.本节解析的仍然是上篇SSD ...

最新文章

  1. ES6学习(五) -- 箭头函数
  2. 前后端分离之Vue(三)爬过得那些坑
  3. python——装饰器
  4. 前端(五)——CSS之美化页面
  5. jQuery 阻止冒泡和默认事件
  6. [arm驱动]linux内核中断编程
  7. Ubuntu18.04录音无声音解决
  8. 获取cookies的简单代码(总结待续)
  9. JD-GUI(反编译工具)
  10. AlphaGo是如何实现的
  11. 上位机plc编程入门_零基础自学plc编程怎么入门?
  12. 计算机网络技术该考什么证,计算机网络工程师证书
  13. oracle 设置 锁模式,oracle表锁的几种模式v$locked_object-locked_mode
  14. echart曲线图的使用
  15. 我的理想200字计算机工程师,我的理想工程师作文(我的理想是做一名工程师)...
  16. 后盾网php视频教程迅雷下载,后盾网-向军2015新版HDPHP视频教程
  17. 跨境电商如何利用Quora帮你引上万流量
  18. 旁注,跨库,CDN绕过之——旁注
  19. vistor和tsmserver不在同一台机器上的连接问题
  20. [置顶]定向爬虫 - Python模拟新浪微博登录

热门文章

  1. 【转】DVI转HDMI没声音怎么办
  2. Windows认证协议
  3. html5之Fullscreen全屏API
  4. 剧情插件Cutscene Creator uSequencer 1.3.7.1使用说明二
  5. 快速傅里叶变换(蝶形算法c++源代码)
  6. java ffmpeg amr mp3_java利用ffmpeg将amr、caf转mp3格式
  7. 计算机文化与社会发展
  8. 百度离线地图——瓦片地图下载
  9. 将sql server 2000的备份文件导入到sql server 2012中
  10. TCPMP 请发送crash.txt文件给开发者 问题