今天介绍目标检测中非常著名的一个框架 SSD,与之前的 R-CNN 系列的不同,而且速度比 YOLO 更快。

SSD 的核心思想是将不同尺度的 feature map 分成很多固定大小的 box,然后对每个 box 做预测,既要预测该 box 所包含的 object 属于哪一类,也要预测该 box 与真实的 box 之间的偏差。

为了获得更高的检测精度,SSD 利用了多尺度的技巧,既利用了不同尺度的 feature map,也利用了不同尺度的 box,还利用了不同的比率。

论文也给出了说明图,对 feature map 可以划分成不同尺度的 box,然后每个 box 可以取不同的比率,对应不同的形状,针对不同的形状,预测每个形状属于某一类物体的概率以及该形状偏离真实框多少。

SSD 模型包含两个部分,一部分是正常的前向传播的 CNN 网络,和很多常用的CNN 分类模型类似,论文中用的是类似 VGG 的网络结构,另外一部分是检测网络,

论文给出了 SSD 模型的框架示意图,前面都是正常的卷积层,区别就在后面,SSD 将前面不同卷积层的 feature map 都连接到最后一层,用来做检测,因为不同卷积层的 feature map 的 size 不一样,所以可以形成不同尺度的检测。

每一个连接到最后一层的卷积层都可以产生一系列固定的检测结果,比如,对于一个含有 p" role="presentation" style="position: relative;">pp 个通道的卷积层,feature map 的大小为 m×n" role="presentation" style="position: relative;">m×nm×n, 通过 3×3" role="presentation" style="position: relative;">3×33×3 的卷积,可以产生一个分类的概率值,或者四个关于 box 的偏离值,在 m×n" role="presentation" style="position: relative;">m×nm×n 的 feature map 上,每进行一次卷积运算,都能产生相对应的检测结果。

为了便于计算,SSD 模型先设置了一些默认的 box,比如上面图一中的那些 8×8" role="presentation" style="position: relative;">8×88×8 或者 4×4" role="presentation" style="position: relative;">4×44×4 的方块,训练的时候,计算预测的 box 与默认的box之间的偏移,所以,检测的时候,对于每一个检测点,可能先生成 k" role="presentation" style="position: relative;">kk 个不同形状的 box,然后每个 box 会输出 c" role="presentation" style="position: relative;">cc 个预测值,这 c" role="presentation" style="position: relative;">cc 个预测值表示该 box 含有某一类物体的概率,同时也会输出 4 个偏移量,这 4 个偏移量,表示这个 box 与 默认 box 之间的偏移。对于一个检测点,会需要 (c+4)k" role="presentation" style="position: relative;">(c+4)k(c+4)k 个滤波器来进行检测,而对于一张大小为 m×n" role="presentation" style="position: relative;">m×nm×n 的 feature map,最终会生成 (c+4)kmn" role="presentation" style="position: relative;">(c+4)kmn(c+4)kmn 个检测值。

训练的时候,SSD 需要构建 ground truth,需要确定哪些默认 box 是 positive,哪些 默认 box 是 negative,训练的时候,可能需要尝试不同的尺度,hard negative mining 等。

最终的 loss 函数包含两部分,一个是关于分类的 loss,一个是关于预测偏移的 loss,

参考文献:

ECCV 2016, SSD: Single Shot MultiBox Detector

机器视觉:SSD Single Shot MultiBox Detector的更多相关文章

  1. SSD(Single Shot MultiBox Detector)的安装配置和运行

    下文图文介绍转自watersink的博文SSD(Single Shot MultiBox Detector)不得不说的那些事. 该方法出自2016年的一篇ECCV的oral paper,SSD: Si ...

  2. SSD: Single Shot MultiBox Detector

    By Wei Liu, Dragomir Anguelov, Dumitru Erhan, Christian Szegedy, Scott Reed, Cheng-Yang Fu, Alexande ...

  3. 目标检测--SSD: Single Shot MultiBox Detector(2015)

    SSD: Single Shot MultiBox Detector 作者: Wei Liu, Dragomir Anguelov, Dumitru Erhan, Christian Szegedy, ...

  4. 论文笔记 SSD: Single Shot MultiBox Detector

    转载自:https://zhuanlan.zhihu.com/p/33544892 前言 目标检测近年来已经取得了很重要的进展,主流的算法主要分为两个类型(参考RefineDet):(1)two-st ...

  5. SSD: Single Shot MultiBox Detector 编译方法总结

    SSD是一个基于单网络的目标检测框架,它是基于caffe实现的,所以下面的教程是基于已经编译好的caffe进行编译的. caffe的编译可以参考官网 caffe Installation Instal ...

  6. [论文理解]SSD:Single Shot MultiBox Detector

    SSD:Single Shot MultiBox Detector Intro SSD是一套one-stage算法实现目标检测的框架,速度很快,在当时速度超过了yolo,精度也可以达到two-stag ...

  7. 【计算机视觉】目标检测之ECCV2016 - SSD Single Shot MultiBox Detector

    本文转载自: http://www.cnblogs.com/lillylin/p/6207292.html SSD论文阅读(Wei Liu--[ECCV2016]SSD Single Shot Mul ...

  8. 深度学习论文翻译解析(十四):SSD: Single Shot MultiBox Detector

    论文标题:SSD: Single Shot MultiBox Detector 论文作者:Wei Liu, Dragomir Anguelov, Dumitru Erhan, Christian Sz ...

  9. SSD: Single Shot MultiBox Detector论文阅读摘要

    论文链接: https://arxiv.org/pdf/1512.02325.pdf 代码下载: https://github.com/weiliu89/caffe/tree/ssd Abstract ...

随机推荐

  1. 自制操作系统Antz(1)——Boot Sector

    0.引子 最近在看操作系统底层方面的东西,最开始的为什么是07c00h这个问题就让我对操作系统有了很大的兴趣.所以准备在看书之余顺便写一个操作系统(Anz).至于为什么这个系统会被叫做Antz,可以参 ...

  2. 在WPF中调用打开文件对话框

    // Create OpenFileDialog Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog(); ...

  3. 三 drf 认证,权限,限流,过滤,排序,分页,异常处理,接口文档,集xadmin的使用

    因为接下来的功能中需要使用到登陆功能,所以我们使用django内置admin站点并创建一个管理员. python manage.py createsuperuser 创建管理员以后,访问admin站点 ...

  4. CentOS7.4安装jdk1.8.0_201、Tomcat-8.5.38环境

    有时候安装一些软件或者服务都需要jdk环境,今天就在centos1.4上安装最新的jdk环境. 检测历时安装 1.查看Linux自带的JDK是否已安装 # java -version 2.查看JDK信 ...

  5. 如何在nginx容器中使用ping、nslookup、ip、curl 等工具?

    Nginx镜像太精简了,启动一个容器进行测试时,常用的网络工具都没有,可以使用下面的命令进行安装.也可以直接起一个busybox容器进行测试. apt update #ping apt install ...

  6. 雷林鹏分享:jQuery EasyUI 数据网格 - 列运算

    jQuery EasyUI 数据网格 - 列运算 在本教程中,您将学习如何在可编辑的数据网格(datagrid)中包含一个运算的列.一个运算列通常包含一些从一个或多个其他列运算的值. 首先,创建一个可 ...

  7. Spring boot连接MongoDB集群

    主要问题是:MongoDB集群分为复制集(replicaSet)与分片集(shardingSet),那么如何去连接这两种集群: 参考官方文档,我使用了最通用的方法:通过构造connection str ...

  8. .net获取程序根目录

    获取程序的根目录: var path = HttpRuntime.AppDomainAppPath;

  9. nginx upstream的五种分配方式

    Nginx负载均衡选项upstream用法举例 1.轮询(weight=1) 默认选项,当weight不指定时,各服务器weight相同,每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器d ...

  10. 在Visual Studio 2017中安装bower

    在项目目录下添加一个文件.bowerrc { "directory": "wwwroot/lib" } JS包默认安装到webroot的lib文件夹,可以通过. ...