论文下载地址:https://arxiv.org/abs/1512.02325

论文代码:https://github.com/weiliu89/caffe/tree/ssd

SSD全称:Single Shot MultiBox Detector  是2016年ICCV的一篇论文。是目前为止主要的目标检测算法。

算法的主要优点:

1. 速度比Faster-Rcnn快,精度比YOLO高。(在兼顾速度的同时,精度也很高。在不同的测试集下面结果都很不错)。

2.为提高准确率在不同的特征图下面(不同的尺度下面)进行结果的预测特征金字塔预测方式。

3.采用了END-TO-END的训练方式,即使分辨率比较小的图片,分类结果也很准确。

SSD网络结构:

SSD 是基于一个前向传播 CNN 网络,产生一系列 固定大小(fixed-size) 的 bounding boxes,以及每一个 box 中包含物体实例的可能性,即 score。之后,进行一个 非极大值抑制(Non-maximum suppression) 得到最终的 predictions。SSD网络结构从图中可以看出来分为两部分 基础网络 + 金字塔网络。基础网络是VGG-16的前4层网络。金字塔网络是特征图逐渐变小的简单卷积网络由5部分构成。

1.Mult-scale feature map for detection

就是特征金字塔检测方式。从不同尺度的特征图下面来预测目标分类与位置。

2.Convolutional predictors for detection

在金字塔结构中每一部分都有3*3的卷积来进行预测,在某个位置上得到一个预测值,这个预测值可能是一个分类的得分,也可能是现对于默认框的的位置偏差。从图3可以看出来conv6-2,conv7-2,conv8-2,conv9-2,fc7,conv4-2。

3.Default boxes and aspect ratio

在特征图的每个位置预测K个box,每个box预测c个分类得分,和4个现对于默认框的位置偏移量。那么在m*n的特征图中就可以得到(c+4)*n*m个预测值。论文中的prior box 类似于Faster-Rcnn中的anchor。如下图4所示。

图2,SSD网络结构:

图3,金字塔结构:

SSD网络训练:

SSD 训练图像中的 groundtruth 需要赋予到那些固定输出的 boxes 上。SSD 输出的是事先定义好的,一系列固定大小的 bounding boxes。

1.Matching strategy:主要介绍的是如何将GT与默认框组成label。

在开始的时候,用 MultiBox 中的 best jaccard overlap 来匹配每一个 ground truth box 与 default box,这样就能保证每一个 groundtruth box 与唯一的一个 default box 对应起来。但是又不同于 MultiBox ,本文之后又将 default box 与任何的 groundtruth box 配对,只要两者之间的jaccard overlap 大于一个阈值,这里本文的阈值为 0.5。

2.Training objective:

总的目标损失函数(objective loss function)就由 localization loss(loc) 与 confidence loss(conf) 的加权求和:

其中:

  • NN 是与 ground truth box 相匹配的 default boxes 个数

  • localization loss(loc) 是 Fast R-CNN 中 Smooth L1 Loss,用在 predict box(ll) 与 ground truth box(gg) 参数(即中心坐标位置,width、height)中,回归 bounding boxes 的中心位置,以及 width、height

  • confidence loss(conf) 是 Softmax Loss,输入为每一类的置信度 cc

  • 权重项 αα,设置为 1

3.Choosing scales and aspect ratios for default boxes:

大部分 CNN 网络在越深的层,feature map 的尺寸(size)会越来越小。这样做不仅仅是为了减少计算与内存的需求,还有个好处就是,最后提取的 feature map 就会有某种程度上的平移与尺度不变性。

4.Hard negative mining:

在生成一系列的 predictions 之后,会产生很多个符合 ground truth box 的 predictions boxes,但同时,不符合 ground truth boxes 也很多,而且这个 negative boxes,远多于 positive boxes。这会造成 negative boxes、positive boxes 之间的不均衡。训练时难以收敛。

因此,本文采取,先将每一个物体位置上对应 predictions(default boxes)是 negative 的 boxes 进行排序,按照 default boxes 的 confidence 的大小。 选择最高的几个,保证最后 negatives、positives 的比例在 1:3。

本文通过实验发现,这样的比例可以更快的优化,训练也更稳定。

3.Data augmentation:

  • 使用原始的图像
  • 采样一个 patch,与物体之间最小的 jaccard overlap 为:,,, 与
  • 随机的采样一个 patch

SSD存在的缺点:

1.需要手动设置参数prior box,无法通过训练得到,依赖经验。

2.存在着对小目标检测效果不好的现象。

经典网络结构梳理:SSD目标检测算法。相关推荐

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

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

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

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

  3. 层与特征融合_【计算机系统应用】(第122期)感受野特征增强的 SSD 目标检测算法...

    点击上方"蓝字",关注我们吧! 目标检测是计算机视觉领域的一项重要任务, 是 生活中如实例分割[1] , 面部分析[2] , 汽车自动驾驶[3].视 频分析[4] 等各种视觉应用的 ...

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

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

  5. SSD目标检测算法原理(上)

    目录 一.目标检测概述 1.1 项目演示介绍 1.2 图片识别背景 1.3 目标检测定义 二.目标检测算法原理 2.1 任务描述 2.2 目标检测算法必备基础 2.3目标检测算法模型输出 目标检测 - ...

  6. 一文弄懂SSD目标检测算法

    SSD是YOLO之后又一个引人注目的目标检测结构,它沿用了YOLO中直接回归 bbox和分类概率的方法,同时又参考了Faster R-CNN,大量使用anchor来提升识别准确度.通过把这两种结构相结 ...

  7. 《基于海思35xx nnie引擎进行经典目标检测算法模型推理》视频课程介绍

    前言 沉寂两个月,终于将新的视频课程<<基于海思35xx nnie引擎进行经典目标检测算法模型推理>>(其链接为https://edu.csdn.net/course/deta ...

  8. 目标检测算法YOLO-V1算法详解

    ❝ 前面我们一起学了SSD算法的相关知识,如下: SSD目标检测算法必须知道的几个关键点 目标检测算法SSD结构详解 ❞ 今天我们学习另一系列目标检测算法YOLO(You Only Look Once ...

  9. ThunderNet:国防科大、旷视提出首个在ARM上实时运行的通用目标检测算法

    点击我爱计算机视觉标星,更快获取CVML新技术 今天跟大家分享一篇前天新出的论文<ThunderNet: Towards Real-time Generic Object Detection&g ...

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

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

最新文章

  1. evaluate函数使用无效_[Python实战]使用栈实现简易计算器
  2. 纪中B组模拟赛总结(2020.2.3)
  3. servlet中文乱码_10分钟快速掌握Servlet相关基础知识
  4. 算法移植优化(二)android gpuimage使用
  5. “参与 Debian 项目 20 年后,被降级的我选择退出”
  6. 应用安全 - 工具使用 - Nmap
  7. (原创)c#学习笔记03--变量和表达式03--变量04--变量的声明和赋值
  8. jquery的历史版本
  9. 开放源代码是如何吞噬软件的
  10. 手把手教你制作一个操作系统
  11. 简单实用的查询ip地址、mac地址,修改ip地址的方法,ping命令检测网络是否通畅
  12. autoCAD2010裁剪工具使用
  13. 11月全球浏览器份额:IE蝉联霸主 份额继续下降
  14. 深度学习基础:1x1的卷积为什么代替全连接
  15. 360浏览器html位置,360浏览器的默认安装路径在哪里
  16. 用虚拟信用卡注册Google Play开发者账号
  17. 深度学习应用在图像分割上的网络模型概述
  18. 。iod_IOD '09,第二天:Maria Winans谈信息主导的即时通讯转型
  19. MVT和MVC的区别
  20. 看你骨骼惊奇,这里有一套 Canvas 粒子动画方案了解一下?

热门文章

  1. 计算机网络原理视频学习教程
  2. android 基站分布,android 基站定位
  3. [经典力学]牛顿自然哲学的数学原理论文解读
  4. 设计心理学1-日常的设计【读书笔记】
  5. ubuntu18.04安装VMware Tools教程(附图)
  6. 打印纸张尺寸换算_「凭证纸尺寸」【用友凭证打印】自定义纸张尺寸对照表 - seo实验室...
  7. 一个简单的新闻发布系统
  8. Ribbon界面开发(C++)
  9. 又出新玩法?微软公式编辑器系列漏洞新利用方式
  10. Python实现支持人机对战的五子棋软件(超详细)