SSD(single shot multibox detector)
SSD,全称Single Shot MultiBox Detector,是Wei Liu在ECCV 2016上提出的一种目标检测算法,截至目前是主要的检测框架之一,相比Faster RCNN有明显的速度优势,相比YOLO又有明显的mAP优势(不过已经被CVPR 2017的YOLO9000超越)
在VOC2007上,SSD300比Faster R-CNN的mAP高了6.6倍

在VOC2007上,SSD300比YOLP的FPS高了10%倍

1.SSD网络结构


SSD网络最前边使用了VGG16的前5个层,使用Conv4_3做边框回归和分类;然后把VGG16的2个全连接层FC6、FC7改成了卷积层Conv6、Conv7,使用Conv7做边框回归和分类;之后自己添加了Conv8、Conv9、Conv10、Conv11,并选取其中的Conv8_2、Conv9_2、Conv10_2、Conv11_2做边框回归和分类。
通过分析SSD网络的结构,我们知道了SSD网络是在哪个特征图上做边框回归和分类,接着看下怎么在这些特征图上圈一个框出来。
2.Default Boxs
假设网络经过卷积,生成了8*8和4*4的feature map
在8*8和4*4的feature map上分割生成一些网格,这些网格称为feature map cell,如下图所示

使用一个3*3卷积核在图像上滑动,每一个卷积核滑动的位置,生成一系列default box
由于网络前边的feature map尺寸较大(8*8),使用3*3的卷积核可以圈出小物体;网络后边的feature map尺寸较小(4*4),使用3*3的卷积核可以圈出大物体,这样就解决了在YOLO中容易漏掉小物体的问题(如果YOLO划分的网格中有2个小物体的中心都在同一个网格,那么YOLO只能检测出一个物体)
default box的大小用scale和aspect ratios表示,使用如下公式计算:
scale
$s_k = s_{min} + {s_{max}- s_{min} \over m -1}(k - 1) ,k \in [1,m]$
其中$s_{min} = 0.2,s_{max = 0.9}$
aspect ratios

$w_k^a表示的是盒子的宽,h_k^a表示盒子的长$
当aspect ratios为1时,scale为s`
3.特征向量生成
有了default box后就需要生成特征向量进行框回归和分类。
对于边框回归,只需要4维向量即可,分别代表边框缩放尺度(坐标轴两个方向)和平移向量(坐标轴两个方向)。对于分类,SSD网络采取为每个类别进行打分的策略,也就是说对于每个Default Box,SSD网络会计算出相应的每个类别的分数。假设数据集类别数为c,加上背景,那么总的类别数就是c+1类。SSD网络采用了c+1维向量来分别代表该Default Box对于每个类别所得到的分数。这里,假设是VOC数据集,那么每个Default Box将生成一个20 + 1 + 4 = 25维的特征向量。同样,以Conv9输出特征图5x5为例。

在5*5的特征图上使用1*1的卷积核滑动,即每个格子生成6个default box,一共5*5*6 = 150个default box
每个盒子要生成25个特征向量,最后会产生5*5*6*25 = 3750个输出
SSD源码中并不会使用所有的default box,而是在每张feature map中使用部分default box,源码中叫prior box
conv4_3(4),fc7(6),conv6_2(6),conv7_2(6),conv8_2(4),conv9_2(4)括号中的数字是每张feature map使用的prior box数
所以SSD300的prior box总数是38*38*4+19*19*6+10*10*6+5*5*6+3*3*4+1*1*4=8732
4.损失函数
这8732个prior box不会全部计算损失函数,而是通过计算Jaccard overlap计算和Groudtruth box重叠的比例,大于0.5的计算损失,损失的计算公式如下,具体的可以参考reference论文中的公式

5.Reference
- 论文:http://arxiv.org/abs/1512.02325
- https://zhuanlan.zhihu.com/p/24954433
- https://zhuanlan.zhihu.com/p/31427288
- https://www.cnblogs.com/xuanyuyt/p/7447111.html
SSD(single shot multibox detector)的更多相关文章
- SSD(single shot multibox detector)算法及Caffe代码详解[转]
转自:AI之路 这篇博客主要介绍SSD算法,该算法是最近一年比较优秀的object detection算法,主要特点在于采用了特征融合. 论文:SSD single shot multibox det ...
- 五、SSD原理(Single Shot MultiBox Detector)
主流的算法主要分为两个类型: (1)tow-stage R-CNN系列算法,其主要思路是先通过启发式方法(selective search)或者CNN网络(RPN)产生一些列稀疏的候选框,然后对这些候 ...
- 翻译SSD论文(Single Shot MultiBox Detector)
转自http://lib.csdn.net/article/deeplearning/53059 作者:Ai_Smith 本文翻译而来,如有侵权,请联系博主删除.未经博主允许,请勿转载.每晚泡脚,闲来 ...
- 【计算机视觉】目标检测之ECCV2016 - SSD Single Shot MultiBox Detector
本文转载自: http://www.cnblogs.com/lillylin/p/6207292.html SSD论文阅读(Wei Liu--[ECCV2016]SSD Single Shot Mul ...
- 深度学习论文翻译解析(十四):SSD: Single Shot MultiBox Detector
论文标题:SSD: Single Shot MultiBox Detector 论文作者:Wei Liu, Dragomir Anguelov, Dumitru Erhan, Christian Sz ...
- SSD(Single Shot MultiBox Detector)的安装配置和运行
下文图文介绍转自watersink的博文SSD(Single Shot MultiBox Detector)不得不说的那些事. 该方法出自2016年的一篇ECCV的oral paper,SSD: Si ...
- SSD: Single Shot MultiBox Detector
By Wei Liu, Dragomir Anguelov, Dumitru Erhan, Christian Szegedy, Scott Reed, Cheng-Yang Fu, Alexande ...
- 论文笔记 SSD: Single Shot MultiBox Detector
转载自:https://zhuanlan.zhihu.com/p/33544892 前言 目标检测近年来已经取得了很重要的进展,主流的算法主要分为两个类型(参考RefineDet):(1)two-st ...
- [论文理解]SSD:Single Shot MultiBox Detector
SSD:Single Shot MultiBox Detector Intro SSD是一套one-stage算法实现目标检测的框架,速度很快,在当时速度超过了yolo,精度也可以达到two-stag ...
随机推荐
- Android 高仿微信6.0主界面 带你玩转切换图标变色
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/41087219,本文出自:[张鸿洋的博客] 1.概述 学习Android少不了模仿 ...
- 【BZOJ 2673】[Wf2011]Chips Challenge
题目大意: 传送门 $n*n$的棋盘,有一些位置可以放棋子,有一些已经放了棋子,有一些什么都没有,也不能放,要求放置以后满足:第i行和第i列的棋子数相同,同时每行的棋子数占总数比例小于$\frac{A ...
- 【bzoj 3309 】 DZY Loves Math
Description 对于正整数n,定义f(n)为n所含质因子的最大幂指数.例如f(1960)=f(2^3 * 5^1 * 7^2)=3, f(10007)=1, f(1)=0.给定正整数a,b,求 ...
- Bot Framework 搭建聊天机器人
这周我来跟大家分享的是在Microsoft Build 2016上发布的微软聊天机器人的框架. 现如今,各种人工智能充斥在我们的生活里.最典型的人工智能产品就是聊天机器人,它既可以陪我们聊天,也可以替 ...
- mysql中利用group by过滤删除重复行
DELETEFROM peopleWHERE peopleId IN (SELECT peopleId FROM people GROUP BY peopleId HAVING count(peopl ...
- css3波纹特效、H5实现动态波浪
css3实现动态波纹特效,由于css3里面有过渡和动画效果,现在利用css3实现动态波浪效果就很简单了,直接使用transform来实现就ok, 使得translateX 产生偏移就可以不断实现循环动 ...
- SAP GUI个性化设置
大概从GUI730开始,GUI品牌化一直不被默认支持,在GUI设置选项里处于灰色状态,如下图: 不过用户还是可以修改注册表的方式来进行修改,让它可以设置! 首先运行Regedit,在目录:HKEY_L ...
- The following untracked working tree files would be overwritten by merge
git pull的时候遇到这样的问题: The following untracked working tree files would be overwritten by merge balabal ...
- 阿里开源分布式事务解决方案 Fescar
微服务倡导将复杂的单体应用拆分为若干个功能简单.松耦合的服务,这样可以降低开发难度.增强扩展性.便于敏捷开发.当前被越来越多的开发者推崇,系统微服务化后,一个看似简单的功能,内部可能需要调用多个服务并 ...
- Java相关面试题总结
本文分为十九个模块,分别是: Java 基础.容器.多线程.反射.对象拷贝.Java Web .异常.网络.设计模式.Spring/Spring MVC.Spring Boot/Spring Clou ...