文档章节

SSD(single shot multibox detector)

o
 osc_s8kmhvea
发布于 2019/03/18 15:53
字数 999
阅读 22
收藏 0

行业解决方案、产品招募中!想赚钱就来传!>>>

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

在VOC2007上,SSD300比Faster R-CNN的FPS高了6.6倍

在VOC2007上,SSD300比YOLP的mAP高了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

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
AirPush-Detector

这是一个检测android程序中是否含有AirPush广告框架或者其他广告框架的简单软件。

开源好!
2012/12/12
1.7K
0
嵌入式NoSQL引擎--UnQLite

UnQLite 是一个嵌入式的软件库,实现了自容器、无服务端、零配置和支持事务的 NoSQL 数据库引擎。UnQLite 是一个文档存储数据库,类似于 MongoDB, Redis, CouchDB 等。同时也是一个标准的 Ke...

匿名
2013/05/23
1W
6
HBase之HMaster工作原理

HMaster 监控所有的RegionServer,一般运行在namenode 架构图 从图中可以看出,主要有External Interfaces、Executor Services、Zookeeper System Trackers、File System Interfaces、Chore...

selfless
2016/04/24
2.3K
1
OSSIM架构与组成综述

OSSIM架构与组成综述 OSSIM布道师 李晨光 一、背景 如果运维工程师手里没有高效的管理工具支持,就很难快速处理故障。市面上有很多运维监控工具,例如商业版的 Solarwinds、ManageEngine以及...

OSSIM
2016/01/28
6.5K
1
MySQL DBA入门到高级笔记:MySQL架构

http://www.wyzc.com/forum/60180.html?tg=3006123630 MySQL逻辑架构 连接管理与安全性: 1、MySQL会为每一个客户端连接分配一个线程,这个连接的查询只会在这个单独的线程执行。服务器会负责...

大王叫我来巡山Zd
2016/03/31
188
0

没有更多内容

加载失败,请刷新页面

加载更多

SpringMVC 静态资源CSS,JS访问不了 解决方法

SpringMVC 静态资源CSS,JS访问不了 解决方法 参考文章: (1)SpringMVC 静态资源CSS,JS访问不了 解决方法 (2)https://www.cnblogs.com/peiyangjun/p/8194687.html 备忘一下。...

osc_tylqml9v
23分钟前
34
0
如何快速处理线上故障

点击上方☝ Java编程技术乐园,轻松关注! 及时获取有趣有料的技术文章 做一个积极的人 编码、改bug、提升自己 我有一个乐园,面向编程,春暖花开! 来源:https://dwz.cn/5AabFxT8 线上故障...

阿飞云
2019/07/12
12
0
老大批评我不要为了“分库分表”而“分库分表”

来自:rrd.me/gEJnq 当数据库的数据量过大,大到一定的程度,我们就可以进行分库分表。那么基于什么原则,什么方法进行拆分,这就是本篇所要讲的。 数据库瓶颈 不管是 IO 瓶颈还是 CPU 瓶颈,...

倪升武
05/05
16
0
网络基础汇总

网络基础 进阶 · 那些你必须搞懂的网络基础 为什么这么设计系列 为什么这么设计(Why’s THE Design)是一系列关于计算机领域中程序设计决策的文章,作者在这个系列的每一篇文章中都会提出一...

osc_uvparld2
25分钟前
0
0
巨额解禁后股东扎堆套现离场,三只松鼠还能“乘风破浪”吗?

巨额解禁后股东扎堆套现离场,三只松鼠还能“乘风破浪”吗? 2019年7月12日三只松鼠(SZ300783)在深交所创业板上市,被媒体称为“国民零食第一股”。 一年后的2020年7月13日三只松鼠1.86亿股...

osc_caajiue7
27分钟前
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部